首页 欧姆龙数据类型及结构化文本编程

欧姆龙数据类型及结构化文本编程

举报
开通vip

欧姆龙数据类型及结构化文本编程附录A数据类型基本数据类型数据类型内容大小数值范围BOOL位数据10(FALSE),1(TRUE)INT整数16-32,768~+32,767DINT双整数32-2,147,483,648~+2,147,483,647LINT长(8个字节)整数64-9,223,372,036,854,775,808~+9,223,372,036,854,775,807UINT无符号整数16&0~65,535UDINT无符号双整数32&0~4,294,967,295ULINT无符号长(8个字节)整64&0~18,446,744,07...

欧姆龙数据类型及结构化文本编程
附录A数据类型基本数据类型数据类型内容大小数值范围BOOL位数据10(FALSE),1(TRUE)INT整数16-32,768~+32,767DINT双整数32-2,147,483,648~+2,147,483,647LINT长(8个字节)整数64-9,223,372,036,854,775,808~+9,223,372,036,854,775,807UINT无符号整数16&0~65,535UDINT无符号双整数32&0~4,294,967,295ULINT无符号长(8个字节)整64&0~18,446,744,073,709,551,615数38-38REAL实数32-3.402823×10~-1.175494×10,0,-3838+1.175494×10~+3.402823×10308-308LREAL长实数64-1.79769313486232×10~-2.22507385850720×10,0,-3083082.22507385850720×10~1.79769313486232×10WORD16位数据16#0000~FFFF或&0~65,535DWORD32位数据32#00000000~FFFFFFFFor&0~4,294,967,295LWORD64位数据64#0000000000000000~FFFFFFFFFFFFFFFF或&0~18,446,744,073,709,551,615TIMER定时器(见注1)标记:1位定时器数:0~4095完成标记:0或1定时器PV:0~9999(见注释)PV:16位(BCD);0~65535(二进制)COUNTER计数器(见注2)标记:1位定时器数:0~4095完成标记:0或1定时器PV:0~9999(见注释)PV:16位(BCD);0~65535(二进制)FUNCTION功能块实例------BLOCK注TIMER和COUNTER数据类型不能用于结构化文本功能块中。导数数据类型数组1维数组;最多32000元素155数据类型附录A156附录B结构化文本(ST语言)结构化文本结构化文本(也称作ST语言)是一个与PASCAL相类似的高级编程语言。PASCAL使用诸如选择语句和迭代语句的语言结构。使用语句来配置用结构化文本写的程序。用变量和方程式来配置语句。?方程式是包含运算符和操作数(变量或常数)的程序。运算符包括算术运算符、比较运算符和逻辑运算符。?语句既可是赋值语句也可是控制语句。赋值语句将方程式中的计算结果保存于变量中。控制语句包括选择语句和迭代语句。结构化文本范例限制语句分隔符?语句(赋值语句和控制语句)必须以分号(;)结束。按回车不能完成语句。?不得将分号(;)用作带保留字、数值或方程式的语句分隔符。除了在语句终端之外,分隔符插入语句中会导致句法发生错误。注释?注释封闭在扩号和星号内。例如(*注释*)。除了扩号和星号之外的任何字符均可用于注释中。不支持注释嵌套。记号范例(*注释*)(*这是注释*)注:不可以注释嵌套。例如,(*(*不支持这种嵌套*)*)157结构化文本(ST语言)附录B空格、回车和制 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 符?任何数量的空格、回车和制表符或其组合均可用于语句中任何地方。因此,在保留字和方程式之间使用空格、回车和制表符以便读取。?在以下标识(用于编辑的最小意义单位)之间不能使用空格、回车和制表符。在这种情况下,它们作为标识分隔符。标识:保留字、变量名、特殊字符、常数(数值)保留字(大写或小写:AND,CASE,DO,ELSE,FOR,IT,NOT,OF,OR,REPEAT,THEN,TO,UNTIL,WHILE,XOR,TRUE,FALSE,ELSIF,BY,EXIT,RETURN变量名:不是保留字的任何文本均识别为变量名。特殊字符:<=,>=,<>,:=,..,&,(*,*)常数(数值):仅用于十进制数的数值16#跟十六进制数的数值2#跟二进制数的数值8#跟八进制数的数值如果在上述标识(用于编辑的最小意义单位)之间使用空格、回车和制表符,任一侧处的标识部分作为分隔标识来处理。因此,确保空格、回车和制表符不用于单个标识中。?在保留字和变量名之间始终使用空格、回车和制表符或其他标识分隔符。在下例中,框(□)表示要求有空格、回车和制表符或其他标识分隔符的地方。IF□A>0THEN□X=10;ELSE□X:=0;END_IF;大写和小写?保留字和变量名不分大小写(两者均可使用)。变量名禁止字符?以下方扩号内的字符不能用于变量名。[!],[[#],[$],[%],[&],[注,[(],,[)],[-],[=],[^],[~],[\],[|],[@],[注,[[],[{],[;],[+],[:],[*],[]],[}],[,],[<],[.],[>],[/],[?]?数字0到9不能用作变量名的第一个字符。?在变量名中,下划线不能紧跟着另一根下划线?空格不能用于变量名中。如果这些字符中任何一个在使用,则会出现错误信息。输入常数(数值)?如下例所示,数值可以通过十进制、十六进制、八进制或二进制来表示。表示方法范例(用于十进制值12)十进制:仅数值12十六进制:16#后面跟数值16#C八进制:8#后面跟数值8#14二进制:2#后面跟数值2#1100运算符优先度?考虑到结构化文本语法中的运算符优先度或扩号内需要优先度的运算,158结构化文本(ST语言)附录B例:AND比OR优先。因此,在XORYANDZ范例中,YANDZ具有优先度。CX-Programmer的ST输入屏显示文本显示颜色当输入或粘贴于ST输入屏中时,CX-Programmer自动以以下颜色显示文本。?文本关键字(反白显示):蓝色?注释:绿色?错误:红色?其他:黑色更改字体选择Tools-Options,点击Appearance条。然后,点击STFont按钮来修改字体大小或显示颜色。字体名称、字体大小(默认为8点)以及颜色也可以修改。语句语句功能范例语句结束结束语句;赋值(*和*)之间的所有文本作为注释来处(*注释*)理分配替换表达式结果、变量或左面变量的右A:=B;面值IF,THEN,ELSIF,ELSE,END_IF当条件正确时,评估表达式。IF(条件_1)THEN(表达1);ELSIF(条件_2)THEN(表达2);ELSE(表达3);END_IF;CASE,ELSE,END_CASE在变量值基础上评估表达式。CASE(变量)OF1:(表达1);2:(表达2);3:(表达3);ELSE(表达4);END_CASE;FOR,TO,BY,DO,END_FOR根据初始值、最终值和增量来反复评估FOR(标识):=(初始值)TO(最终值)表达式。BY(递增)DO(表达);END_FOR;WHILE,DO,END_WHILE一旦条件正确,则反复评估表达式。WHILE(条件)DO(表达);END_WHILE;REPEAT,UNTIL,END_REPEAT反复评估表达式直到条件正确。REPEAT(表达);UNTIL(条件)END_REPEAT;EXIT停止重复处理。EXIT;159结构化文本(ST语言)附录B语句功能范例RETURN返回至调用功能块程序中RETURN;功能块实例调用调用另一功能块定义带FUNCTIONBLOCK数据类型的变量名(被调用功能块定义输入变量名:=调用功能块定义变量名或常数,。。。被调用功能块定义输出变量名=>调用功能块定义输出变量名...);运算符运算符号运算符支持的数据类型优先度1:最低11:最高括弧和括号(表达式),数组1(变址)功能评估标识符取决于功能块(参阅2-6指令支持和操作数限制)2指数**REAL,LREAL3补码NOTBOOL,WORD,DWORD,LWORD4乘法*INT,DINT,UINT,UDINT,ULINT,REAL,LREAL5除法/INT,DINT,LINT,UINT,UDINT,ULINT,REAL,5LREAL加法+INT,DINT,LINT,UINT,UDINT,ULINT,REAL,6LREAL减法-INT,DINT,LINT,UINT,UDINT,ULINT,REAL,6LREAL比较<,>,<=,>=BOOL,INT,DINT,LINT,UINT,UDINT,ULINT,7WORD,DWORD,LWORD,REAL,LREAL等式=BOOL,INT,DINT,LINT,UINT,UDINT,ULINT,8WORD,DWORD,LWORD,REAL,LREAL不等式<>BOOL,INT,DINT,LINT,UINT,UDINT,ULINT,8WORD,DWORD,LWORD,REAL,LREAL布尔AND&BOOL,WORD,DWORD,LWORD9布尔ANDANDBOOL,WORD,DWORD,LWORD9布尔专有ORXORBOOL,WORD,DWORD,LWORD10布尔ORORBOOL,WORD,DWORD,LWORD11注根据数据类型运算。因此,INT数据加法结果必须是使用INT数据类型的变量。当整数型变量运算时出现进位或借位,需特别小心。例如,使用整数型变量A=3和B=2时,如果执行运算(A/B)*2,则A/B结果为1(1.5–小数点后面的数值忽略不计),因此(A/B)*2=2。函数功能语法数函词绝对值、三角函数等算术函数指数(EXPT)数据类型转换函数源数据类型_TO_新数据类型(变量名)160结构化文本(ST语言)附录B数函词以下数函词可以用于结构化文本中。数函词自变量数据类型返回值数据类型内容范例ABS(自变量)INT,DINT,LINT,INT,DINT,LINT,绝对值(自变量)a:=ABS(b)UINT,UDINT,UINT,UDINT,(*存储于变量a中的变量bULINT,REAL,ULINT,REAL,绝对值*)LREALLREALSQRT(自变量)REAL,LREALREAL,LREAL平方根:√自变量a:=SQRT(b)(*存储于变量a中的变量b平方根*)LN(自变量)REAL,LREALREAL,LREAL自然对数:LOGe自变量a:=LN(b)(*存储于变量a中的变量b自然对数*)LOG(自变量)REAL,LREALREAL,LREAL常用对数:LOG10自变量a:=LOG(b)(*存储于变量a中的变量b常用对数*)EXP(自变量)REAL,LREALREAL,LREAL自然指数:e自变量a:=EXP(b)(*存储于变量a中的变量b自然指数*)SIN(自变量)REAL,LREALREAL,LREAL正弦:自变量a:=SIN(b)(*存储于变量a中的变量b正弦*)COS(自变量)REAL,LREALREAL,LREAL余弦:自变量a:=COS(b)(*存储于变量a中的变量b余弦*)TAN(自变量)REAL,LREALREAL,LREAL正切:自变量a:=TAN(b)(*存储于变量a中的变量b正切*)ASIN(自变量)REAL,LREALREAL,LREAL反正弦:自变量a:=ASIN(b)(*存储于变量a中的变量b反正弦*)ACOS(自变量)REAL,LREALREAL,LREAL反余弦:自变量a:=ACOS(b)(*存储于变量a中的变量b反余弦*)ATAN(自变量)REAL,LREALREAL,LREAL反正切:自变量a:=ATAN(b)(*存储于变量a中的变量b反正切*)注数函词返回的数据类型与指数中所用的数据类型一样。因此,功能返回抵替换的变量数据类型必须与指数数据类型一致。算术函数以下一般指数函数可以用于结构化文本中。指数函数自变量数据类型返回值数据类型内容范例EXPT(底数,指底数:REAL,LREALREAL,LREAL指数:底数指数(*作为基数的变量b和作为数)指数:INT,DINT,指数的变量c的指数存储于LINT,UINT,UDINT,变量a中*)ULINT注数函词返回的数据类型与指数中所用的数据类型一样。因此,功能返回抵替换的变量数据类型必须与指数数据类型一致。161结构化文本(ST语言)附录B数据类型转换函数以下数据类型转换函数可以用于结构化文本中。语法源数据类型_TO_新数据类型(变量名)例子:REAL_TO_INT(C)在本例中,变量C的数据类型可以从REAL修改为INT。数据类型组合下表给出了可以转换的数据类型组合。(是=可以转换;否=不能转)从至BOOLINTDINTLINTUINTUDINTULINTWORDDWORDLWORDREALLREALBOOL否否否否否否否否否否否否INT否否是是是是是是是是是是DINT否是否是是是是是是是是是LINT否是是否是是是是是是是是UINT否是是是否是是是是是是是UDINT否是是是是否是是是是是是ULINT否是是是是是否是是是是是WORD否是是是是是是否是是否否DWORD否是是是是是是是否是否否LWORD否是是是是是是是是否否否REAL否是是是是是是否否否否是LREAL否是是是是是是否否否是否语句详细说明赋值概述用语句(方程式、变量或常数)右侧来替代语句(变量)左侧。保留字:=冒号(:)和等号(=)组合。语句语法变量:=方程式、变量或常数;用法赋值语句用于变量输入值。在控制语句之前或之内这是基本语句。该语句可以用来设置初始值、保存计算结果和递增或递减变量。描述替换(保存)变量的方程式、变量或常数。举例说明例1:方程式X+1结果替代变量A。A:=X+1;例2:变量B数值替代变量A。A:=B;162结构化文本(ST语言)附录B例3:用常数10替代变量A。注意事项要赋值的方程式、变量或常数的数据类型必须与要替代的变量数据类型一致。否则,语法会出现错误。控制语句IF语句(单一条件)概述当符合指定条件时,该语句用来执行表达式。如果不符合条件,则执行其他表达式。保留字IF,THEN,(ELSE),END_IF注ELSE不能省略。语句语法IF<条件>THEN<表达式_1>;ELSE<表达式_2>;END_IF;流程图用法使用IF语句来进行其他运算。这将取决于是否满足单一条件(条件方程式)。描述条件=如果成立,执行表达式_1条件=如果不成立,执行表达式_2注意事项?IF必须与END_IF一起使用。?条件必须包括赋值结果的正确或错误方程式。例子:IF(A>10)条件还可指定为布尔变量而不是方程式。因此,变量值为1(ON)=结果成立;0(OFF)=结果不成立。?用于表达式_1和表达式_2的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。163结构化文本(ST语言)附录B例子:IF<条件_1>THENIF<条件_2>THEN<表达式_1>;ELSE<表达式_2>:END_IF;END_IF;流程图如下:如上图所示,在此之前,ELSE与THEN立即对应。?在表达式_1和表达式_2内,可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。?ELSE语句可以省略。当省略ELSE时,如果条件方程式结果不正确,则无运算执行。流程图举例说明例1:如果变量A>0是正确的,则数值10替代变量X。如果A>0是错误的,则数值0替代变量X。IFA>0THENX:=10;ELSEX:=0;END_IF;例2:如果变量A>0和变量B>1均正确,则数值10替代变量X而数值20替代变量Y。如果变量A>0和变量B>1均错误,则变量X和变量Y均被数值0替代。164结构化文本(ST语言)附录BIFA>0ANDB>1THENX:=10;Y:=20;ELSEX:=0;Y:=0;END_IF;例3:布尔(BOOL数据类型)变量A=1(ON),用数值10替代变量X。如果变量A=0(OFF),用数值0替代变量X。IFATHENX:=10;ELSEX:=0;END_IF;IF语句(多个条件)概述当符合指定条件时,该语句用来执行表达式。如果不符合第一个条件但另一个条件符合的话,则执行相应表达式。如果无一条件符合,则执行其他表达式。保留字IF,THEN,ELSIF,(ELSE)注ELSE不能省略。语句语法IF<条件_1>THEN<表达式_1>;ELSIF<条件_2>THEN<表达式_2>;ELSIF<条件_3>THEN<表达式_3>;...ELSIF<条件_n>THEN<表达式_n>;ELSE<表达式_m>;END_IF;流程图用法根据多个条件中哪个条件是符合的来使用IF语句执行不同运算(条件方程式)165结构化文本(ST语言)附录B描述条件1=如果成立,执行表达式1条件1=如果不成立,条件2=如果成立,执行表达式2条件2=如果不成立,条件3=如果成立,执行表达式3等条件n=如果成立,执行表达式n如无一条件符合,则执行条件m注意事项?IF必须与END_IF一起使用。?条件_□包含方程式正确或错误结果(例如,IF(A>10)。只有布尔(布尔数据类型)变量变还可指定为条件而不是方程式。至于布尔条件,则当变量值为1(ON)时结果正确而变量值为0(OFF)时结果错误。·可以用于表达式_□的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。·表达式_□中可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。·ELSE语句可以省略。当省略ELSE时,如果任何条件方程式结果不正确,则无运算执行。举例说明例1:如果变量A>0是正确的,则数值10替代变量X。如果A>0是错误的但变量B=1,则数值1替代变量X。如果A>0是错误的但变量B=2,则数值2替代变量X。如果符合这些条件中任何一个条件,则数值0替代变量X。IFA>0THENX:=10;ELSIFB=1THENX:=1;ELSIFB=2THENX:=2;ELSEX:=0;END_IF;CASE语句概述该语句执行选中的与整数方程值匹配的整数。如果选中的整数值不一样,则既不能执行表达式也不能执行规定的表达式。保留字CASE语句语法CASE<整数方程式>OF<整数方程式值_1>:<表达式_1>;<整数方程式值_2>:<表达式_2>;...<整数方程式值_n>:<表达式_n>;ELSE<表达式_m>;END_CASE;166结构化文本(ST语言)附录B流程图用法根据指定的整数值,使用CASE语句来执行不同运算。描述如果整数方程式与整数方程式值_n匹配,则执行表达式_n。如果整数方程式与任何整数方程式值_n不匹配,则执行表达式_m。注意事项?CASE必须与END_CASE一起使用。tinteger_equation结果必须是整数 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 (INT、DINT、LINT、UINT、UDINT或ULINT)。?可以用于表达式_□的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。?表达式_□中可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。?整数格式(INT、DINT、LINT、UINT、UDINT或ULINT)中的变量或返回整数值的方程式可以在整数方程式中进行规定。?当OR逻辑用于整数方程式值_n中的多个整数时,用逗号分隔符来隔开数值。在第一个整数和最后一个整数之间用两个句点(..)作为分隔符来规定整数顺序。举例说明例1:如果变量A是1,数值1替代变量X。如果变量A是2,数值2替代变量X。如果变量A是3,数值3替代变量X。如果无一匹配,则数值9替代变量Y。CASEAOF1:X:=1;2:X:=2;3:X:=3;ELSEY:=0;END_CASE;167结构化文本(ST语言)附录B例2:如果变量A是1,数值1替代变量X。如果变量A为2或5,则数值2替代变量X。如果变量A为6到10之间的数值,则数值3替代变量X。如果变量A为11、12或15到20之间的数值,则数值4替代变量X。如果无一匹配,则数值9替代变量Y。CASEAOF1:X:=1;2,5:X:=2;6..10:X:=3;11,12,15..20:X:=4;ELSEY:=0;END_CASE;FOR语句概述该语句用来反复执行指定的方程式直到变量(此处作为迭代变量)到达规定值。保留字FOR,TO,(BY),DO,END_FOR注BY可以省略。语句语法FOR<循环变量>:=<初始值>TO<最终值表达式>BY<递增值表达式>DO<表达式>;END_FOR;流程图用法当事先已确定迭代数时,使用FOR语句。当根据指定的迭代变量值在数组变量中转换元素数时,FOR特别有用。168结构化文本(ST语言)附录B描述当循环变量为初始值时,执行表达式。执行后,从递增方程式获得的数值添加至循环变量中。如果循环变量<最终值表达式(见注1),则执行表达式。执行后,从递增方程式获得的数值添加至循环变量中。如果循环变量<最终值方程式的值(见注1),执行表达式。重复该过程。如果循环变量≥最终值方程式(见注2),处理结束完成。注(1)如果递增方程式值是负值,则条件是循环变量>最终值方程式值。(2)如果递增方程式值是负值,则条件是循环变量≤最终值方程式值。注意事项?可以在递增方程式中规定负值。?FOR必须与END_FOR一起使用。?初始值、最终值方程式和最终值方程式必须是整数数据类型(INT、DINT、LINT、UINT、UDINT或ULINT)。?最终值处理结束后,迭代值递增至最终值+1。迭代处理结束。例子:在以下结构化文本中,“a”值是TRUE。FORi:=0TO100DOarray[i]:=0;END_FOR;IFi=101THENa:=TRUE;ELSEa:=FALSE;END_IF;?不得直接在更改迭代变量中使用FOR语句。这样做会导致意外运算。例子:FORi:=0TO100BY1DOarray[i]:=0;i:=i+5;END_FOR;?可以用于表达式_□的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。?表达式_□中可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。?BY递增方程式可以省略。省略时,BY取为1。?在初始值、最终值方程式和递增方程式中可以规定带整数数据类型(INT、DINT、LINT、UINT、UDINT或ULINT)或可返回整数值方程式的变量。例1:当迭代变量n=0~50(以5递增)和数组变量SP[n]被100替代时,执行迭代。FORn:=0TO50BY5DOSP[n]:=100;END_FOR;169结构化文本(ST语言)附录B例2:计算数组变量DATA[n]的元素DATA[1]到DATA[50]总值并替代变量SUM。FORn:=0TO50BY1DOSUM:=SUM+DATA[n];END_FOR;例3:检测数组变量DATA[n]的元素DATA[1]到DATA[50]的最大值和最小值。最大值替代变量MAX而最小值替代变量MIN。DATA[n]数值在0到1000之间。MAX:=0;MIN:=1000;FORn:=1TO50BY1DOIFDATA[n]>MAXTHENMAX:=DATA[n];ENDIF;IFDATA[n]<MINTHENMIN:=DATA[n];ENDIF;END_FOR;WHILE语句概述只要指定的条件正确,该语句就一直反复执行指定表达式。保留字WHILE,DO,END_WHILE语句语法WHILE<条件>DO<表达式>;END_WHILE;流程图用法当事先未确定迭代数时,使用WHILE语句(根据符合的条件)在符合条件的期间重复规定的处理。只有当条件方程式处于正确(预测试回路)时才能执行该语句。描述在执行表达式之前,评估条件。如果条件正确,执行表达式I。然后,再次评估条件。重复该过程。如果条件错误,则不执行表达式,条件评估结束。170结构化文本(ST语言)附录B注意事项?WHILE必须与END_WHILE一起使用。?在执行表达式之前,如果条件方程式是错误的,则不执行表达式情况下处理结束。?可以用于表达式的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。?表达式中可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。?条件还可规定为布尔变量(布尔数据类型)而不是方程式。举例说明例1:计算大于1000的数值(以7递增)并替代变量A。A:=0;WHILEA>=1000DOA:=A+7;END_WHILE;例2:当X<3000时,X值翻倍而且数值替代数组变量。DATA[1]:然后,X值再乘以2。数值替代数组变量。DATA[2]:重复该过程。n:=1’WHILEX<3000DOX:=X*2;DATA[n]:=X;n:=n+1;END_WHIE;REPEAT语句概述该语句用来反复执行表达式直到指定的条件正确。保留字REPEAT,UNTIL,END_REPEAT语句语法REPEAT<表达式>;UNTIL<条件>END_REPEAT流程图171结构化文本(ST语言)附录B用法如果事先未确定迭代数时,在规定处理后一旦条件符合即采用REPEAT语句来重复处理(取决于条件是否符合。)。该语句可用来确定是否要根据规定处理执行结果进行反复处理(处理后回路)。描述第一次,无条件执行表达式。然后,评估条件方程式。如果条件是错误的,再次执行表达式。如果条件是正确的,则不执行表达式情况下处理结束。注意事项?REPEAT必须与END_REPEAT一起使用。?即使在执行表达式之前条件方程式是正确的,表达式仍执行。?可以用于表达式的语句为赋值语句、IF、CASE、FOR、WHILE或REPEAT。?表达式中可以执行多个语句。在表达式中,多个语句之间使用分号(;)分隔符。?条件还可规定为布尔变量(布尔数据类型)而不是方程式。举例说明例1:递增从1到10的数值。总和替代变量TOTAL。A:=1;TOTAL:=0;REPEATTOTAL:=TOTAL+A;A:=A+1;UNTILA>10END_REPEAT;EXIT语句概述仅在迭代语句(FOR、WHILE、REPEAT)中使用该语句从而强制迭代语句结束。当规定的条件符合时,该语句也可用于IF语句从而强制迭代语句结束。保留字EXIT语句语法(例子:在IF语句中使用)FOR(WHILE,REPEAT)表达式...IF<条件>THENEXIT;END_IF;...END_FOR(WHILE,REPEAT);用法在结束条件符合之前,使用EXIT语句来强制迭代处理结束。描述(例子:在IF语句中使用)当条件方程式是正确的时,迭代语句(FOR、WHILE、REPEAT)强制结束。不执行EXIT后的任何语句。172结构化文本(ST语言)附录B注(1)条件还可规定为布尔变量(布尔数据类型)而不是方程式。(2)即使在执行表达式之前条件方程式是正确的,表达式仍执行。举例说明当变量n=1到50(以1递增)且n添加至数组变量DATA[n]中时,重复处理。但如果DATA[n]大于100,则处理结束。FORn:=1;TO50BY1DODATA[n]:=DATA[n]+n;IFDATA[n]>100THENEXIT;END_IF;END_FOR;RETURN语句概述在结构化文本中功能块完成之前必须强制其结束时,该语句用来执行调用程序中功能块处后的下一指令。保留字RETURN语句语法RETURN;用法当功能块已强制结束时,使用RETURN语句。功能块调用语句概述该语句用来调用另一功能块定义。保留字无语句语法在规定了实例名(见注释)后,在括号内规定自变量(调用功能块输入变量传至被调用功能块输入变量)和返回值(被调用功能块输出变量传至调用功能块输出变量)。注实例名可以是任何具有功能块数据类型的内部变量。以下两种方法中的任一一个均可用来输入功能调用语句。1.规格方法A:规定被调用和调用功能块变量名实例名(被调用功能块定义输入变量名=调用功能块定义变量名或常数,...,被调用功能块定义输出变量名或常数=>调用功能块定义输出变量名,...);注所有输入变量规格(被调用功能块定义输入变量名:=调用功能块定义变量名或常数)必须用逗号分开。只有所需的输出变量规格(被调用功能块定义输出变量名或常数=>调用功能块定义输出变量名)必须用逗号分开。2.规格方法B:只规定调用功能块变量名(或常数),省略被调用功能块变量名;实例名(被调用功能块定义输入变量名=调用功能块定义变量名或常数,...,被调用功能块定义输出变量名或常数=>调用功能块定义输出变量名,...);173结构化文本(ST语言)附录B注如上所示,当被调用功能块定义输入和输出变量名被省略时,调用功能块输入变量(或常数)值按注册于变量表中的变量先后次序自动传输至被调用功能块输入变量。同样,被调用功能块输出变量按注册于变量表中的变量先后次序自动返回至调用功能块输出变量。用法采用功能块调用语句从ST语言程序中调用功能块定义(ST或梯级程序)。描述1.以下实例注册于变量表中的内部变量中。内部变量元素内容范例名称任何实例名Calcu_execute数据类型FUNCTIONBLOCKFUNCTIONBLOCKFB定义选择被调用功能块定义计算2.如下例所示,在注册的实例名(本例中的Calcu_execute)后的扩号内,指定在变量之间传输的数值。语句结束用分号表示。Calcu_execute(A:=B,C=>D);输入变量B(在调用功能块中)数值传输至输入变量A(在被调用功能块中)。象输出变量C(在被调用功能块中)数值那样,该值返回至输出变量D(在调用功能块中)。举例说明在下例中,从功能块1(FB1)中调用功能块。?用ST语言写功能块1。?既可用梯级语言也可用ST语言写功能块2。?下表所示的是功能块1中的变量和接收/传输数据的功能块2中对应的变量。变量类型变量名传输至FB2/从FB2中上传输入变量FB1_IN1传输至FB2_IN1FB1_IN2传输至FB2_IN2FB1_IN3传输至FB2_IN3174结构化文本(ST语言)附录B变量类型变量名传输至FB2/从FB2中上传输入变量FB1_OUT1从FB2_OUT1中接收FB1_OUT2从FB2_OUT2中接收FB1_OUT3从FB2_OUT3中接收内部变量A传输至EN注:数据类型=布尔B传输至ENO注:数据类型=布尔内部变量(实例)实例_FB2被调用功能块定义:功能块2注:数据类型=FUNCTIONBLOCK?下表所示的是功能块2中的变量和接收/传输数据的功能块1中对应的变量。变量类型变量名传输至FB2/从FB2中上传输入变量FB2_IN1从FB1_IN1中接收FB2_IN2从FB1_IN2中接收FB2_IN3从FB1_IN3中接收输出变量FB2_OUT1传输至FB1_OUT1FB2_OUT2传输至FB1_OUT2FB2_OUT3传输至FB1_OUT3例1:规格方法A(指定FB1和FB2变量)Instance_FB2(EN:=A,FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT2=>FB1_OUT2,FB2_OUT3=>FB1_OUT3,ENO=>B)?自变量和返回值以不规则次序排列,这没有关系。?输入变量的自变量必须以列表开始或如果列出EN变量时列在EN变量后面。?规格方法B不能与规格方法一起用于相同的功能块调用语句中。其他语句变化:?无EN的语句Instance_FB2(FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT2=>FB1_OUT2,FB2_OUT3=>FB1_OUT3,ENO=>B)?无EN和ENO的语句Instance_FB2(FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT2=>FB1_OUT2,FB2_OUT3=>FB1_OUT3)?无ENO语句Instance_FB2(EN:=A,FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT2=>FB1_OUT2,FB2_OUT3=>FB1_OUT3)?无FB2_OUT2(不需要FB2_OUT2数据。)的语句Instance_FB2(EN:=A,FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT3=>FB1_OUT3,ENO=>B)?无FB2_OUT2(不需要FB2_OUT2数据。)的语句Instance_FB2(EN:=A,FB2_IN1:=FB1_IN1,FB2_IN2:=FB1_IN2,FB2_IN3:=FB1_IN3,FB2_OUT1=>FB1_OUT1,FB2_OUT3=>FB1_OUT3,ENO=>B)?不规则次序的语句Instance_FB2(EN:=A,FB2_IN1:=FB1_IN1,FB2_OUT1=>FB1_OUT1,FB2_IN2:=FB1_IN2,FB2_OUT2=>FB1_OUT2,FB2_IN3:=FB1_IN3,FB2_OUT3=>FB1_OUT3,ENO=>B)175结构化文本(ST语言)附录B例2:规格方法B(仅规定FB1变量)Instance_FB2(FB1_IN1,FB1_IN2,FB1_IN3,FB1_OUT1,FB1_OUT2,FB1_OUT3)Instance_FB2(FB1_IN1,FB1_IN2,FB1_IN3,FB1_OUT1)?必须定序列出笔变量和返回值。输入变量1,输入变量2,...,输出变量1,输出变量2,...?输入变量的自变量必须以列表开始或如果列出EN变量时列在EN变量后面。?如果实际正在使用的数据和输出变量不在输出变量列表中间,则输出变量可以省略。例如:Instance_FB2(FB1_IN1,FB1_IN2,FB1_IN3,FB1_OUT1,B1_OUT3)在本例中,列表末端处的FB1_OUT3返回FB2_OUT2值。?EN和ENO数据不能作为自变量或返回值输入。?规格方法A不能与规格方法B一起用于功能块调用语句。例3:平均功能块在下例中,功能块1调用计算平均值的功能块2。功能块1?变量表变量类型变量名数据类型传输至FB2/从FB2中上传输入变量ENBOOL---输入变量data1INT传输至输入1输入变量data2INT传输至输入2输入变量data3INT传输至输入3输入变量bCheckBOOL---输出变量ENOBOOL---输出变量AVGINT从平均值中接收内部变量Average_FBFUNCTIONBLOCK被调用功能块---定义:功能块2?ST-语言算法如果b检查正确,则调用功能块2来计算平均值。3个数值--数据1、数据2和数据3分别传输至功能块2的输入变量—输入1、输入2和输入3。计算结果(平均)返回至AVG。注下表所示的是采用规格方法A调用的Average_FB功能块(列出的功能块变量)。IFbCheck=TRUETHENAverage(input1:=data1,input2:=data2,input3:=data3,average=>AVG);ELSERETURN;END_IF;176结构化文本(ST语言)附录B功能块2?变量表变量类型变量名数据类型传输至FB2/从FB2中上传输入变量ENBOOL---输入变量input1INT从数据1接收输入变量input2INT从数据2接收输入变量input3INT从数据3接收输出变量ENOBOOL---输出变量averageINT传输至AVGtST-语言算法计算输入1、输入2和输入3的平均值并将结果保存于average中。average:=(input1+input2+input3)/3;结构化文本编程范例例1:BCD数据(#0000-#9999)转换至BIN数据(*检查输入参数“Input_BCD”(BCD数据)*)IF(Input_BCD>=0&Input_BCD<=16#9999)THENENO:=true;ELSEENO:=false;RETURN;END_IF;(*BCD数据4次除以16以获得BIN数据每个数字--从BCD数据中转换而来*)DIV_1:=Input_BCD/16;DIV_2:=DIV_1/16;DIV_3:=DIV_2/16;DIV_4:=DIV_3/16;(*计算BIN数据每个数字--从BCD数据中转换而来*)0BIN_1:=Input_BCD-16*DIV_1;(*anumberof16数*)1BIN_2:=DIV_1-16*DIV_2;(*anumberof16数*)2BIN_3:=DIV_2-16*DIV_3;(*anumberof163数*)BIN_4:=DIV_3-16*DIV_4;(*anumberof16数*)(*计算BIN数据“Output_BIN”(输出参数)*)Output_BIN:=BIN_1+BIN_2*10+BIN_3*10*10+BIN_4*10*10*10;例2:BIN数据(#0000-#FFFF)转换至BCD数据(*检查输入参数“Input_BIN”(BIN数据)*)IF(Input_BIN>=0&Input_BIN<=16#FFFF)THENENO:=true;ELSEENO:=false;RETURN;END_IF;(*BIN数据4次除以10以获得BCD数据每个数字--从BIN数据中转换而来*)DIV_1:=Input_BIN/10;DIV_2:=DIV_1/10;DIV_3:=DIV_2/10;DIV_4:=DIV_3/10;177结构化文本(ST语言)附录B(*计算BCD数据每个数字--从BIN数据中转换而来*)0BCD_1:=Input_BIN-10*DIV_1;(*anumberof10数*)1BCD_2:=DIV_1-10*DIV_2;(*anumberof10*)2数BCD_3:=DIV_2-10*DIV_3;(*anumberof10*)3数BCD_4:=DIV_3-10*DIV_4;(*anumberof10数*)(*计算BCD数据“Output_BCD”(输出参数)*)Output_BCD:=BCD_1+BCD_2*16+BCD_3*16*16+BCD_4*16*16*16;限制嵌套用于IF、CASE、FOR、WHILE或REPEAT语句的嵌套数没有限制。数据类型限制?整数只能分配于数据类型WORD、DWORD、INT、DINT、UINT、UDINT或ULINT的变量。例如,如果A是INT数据类型,则A:=1;如果数值不是整数数据类型,则出现语法错误。例如,如果A是INT数据类型,则A:=2.5;时会出现语法错误。?如果实数(浮点十进制数据)只可分配于数据类型REAL和UREAL的变量。例如,A是REAL数据类型,则A:=1.5;。如果数值不是实际数据类型,则会出现语法错误。例如,如果A是REAL数据类型,则A:=2;时会出现语法错误。使用A:=2.0;。?位(TRUE和FALSE)只可分配于BOOL数据类型的变量。例如,如果A为BOOL数据类型,则A:=FALSE;。如果不采用BOOL数据类型,则会出现语法错误。。例如,如果A为INT数据类型,则A:=FALSE;时会出现语法错误。?数据类型在结构化文本中一致。例如,如果A、B和C为INT数据类型,则A:=B+C;。但如果A和B是INT数据类型而C是REAL数据类型或LINT数据类型,则A:=B+C;时会出现语法错误。结构化文本错误错误信息错误信息错误原因范例数值不能赋值于%s'输入变量数值已替代了变量。%s'数据类型不支持%s'运算采用运算符不支持的数值或数A:=B+1;(*A和B为WORD类型变量*)符据类型变量。%s'变量已有只读存储器AT数值已替代了分配于只读存储地址而且赋值。器地址的变量(只读辅助区域地址或条件标记)数组变址超出范围数组变址大于数组大小。数组[100]:=10;(*Array是一个数组大小100的数组变量*)178结构化文本(ST语言)附录B错误信息错误原因范例不能从%s转换到%s。运算结果的数据类型数字方程替代了与数据类型不一致的变量Y:=ABS(X);(*X是INT式与替代目的地处的变量不匹类型变量;Y是UINT类型变量*)配。除0数字表达式中有除数除以0。未找到注释结束处注释中对应于打开的括号和星(*注释号“(*”的另一括号和星号“*)”未封闭。文字格式'%s'无效数字格式不合法。X:=123_;(*下划线后无数字*)X:=1__23;(*下划线后立即跟另一根下划线*)X:=2#301;Y:=8#90;(*使用了不能用于二进制或八进制值的数字*)注下划线插在数字之间以便读取。将2#、8#和16#置于数字起始处以分别表示数字是二进制、八进制和十六进制值。无效文字值数字值不合法X:=1e2;(*变址已用于不是REAL数据类型的数值*)注“e”表示指数是10。无效数组变址有非整数类型运算或非整数变Array[Index]:=10;(*Index是WORD类型变量*)量的数字方程式已指定于数组变址中。无效常数有非整数类型运算或非整数变CASEAOF(*A是REAL类型变量*)量的数字方程式已指定于1:X:=1;CASE语句的整数方程式。2:X:=2;END_CASE;无效表达式数字方程式不合法。例如,整WHILEDO(*WHILE语句不包含条件方程式*)数方程式或条件方程式不合法X:=X+1;或已指定于语法(IF、END_WHILE;WHILE、REPEA、FOR、CASE)。FOR回路说明中有无效参数数据类型不是IF、WHILE、FORI:=1TO100DO(*I为WORD类型变量*)REPEA、FOR、CASE的变量X:=X+1;FOR已用于语句中的变量。END_FOR;无效语句语句不合法。例如,语句X:=X+1;(*语法中无REPEAT*)(IF、WHILE、REPEA、UNTILX>10FOR、CASE)在语法中不包END_REPEAT;含IF、WHILE、REPEA、FOR、CASE。179结构化文本(ST语言)附录B错误信息错误原因范例功能输出无效变量功能输出的指定变量不合法Y:=SIN(X1,ENO=>1);(非布尔(BOOL)变量或数字已规定为ENO转送目的地)无(数据格式转换指令或功能调用Y:=INT_TO_DINTX);不包含“(“(开口括号)。无)运算符括号或数据格式转换指Y:=(X1+X2/2令或功能调用不包含“)“(封闭括号)与“(“(开口括号)对应。无:CASE语句的整数方程式中无CASEAOF“:”(冒号)。1X:=1;END_CASE;无=“=”不在赋值方程式中。无;语句中无“;”(分号)。无DOFOR或WHILE语句中无“DO”。无END_CASECASE语句结束处无“END_CASE”。无END_FORFOR语句结束处无“END_FOR”。无END_IFIF语句结束处无“END_IF”。无END_REPEATREPEAT语句结束处无“END_REPEAT”。无END_WHILEWHILE语句结束处无“END_WHILE”。无输入参数。必须设置所有输未规定功能自变量或功能自变Y:=EXPT(X);入变量。量不足。无OFCASE语句中无“OF”。无THENIF语句中无“THEN”。无TOFOR语句中无“TO”。无UNTILREPEAT语句中无“UNTIL”。无[未指定数组变量的数组变址。X:=Array;(*Array是数组变量*)无]未指定数组变量的数组变址。X:=Array[2;(*Array是数组变量*)180结构化文本(ST语言)附录B错误信息错误原因范例无常数CASE语句的整数方程式不含CASEAOF常数。2..:X:=1;2,:X:=2;END_CASE;文字数中不支持NOT运算NOT运算符用于数值。Result:=NOT1;%s数据类型不支持负值在数据类型不支持负值Y:=-X;(*X是一个UINT型变量,Y是一个INT型变量*)(UINT、UDINT、ULINT)的变量之前已使用了减符号。必须有一行有效码(不包括注无一行有效码(不包括注释)释)有太多变量指定于函数中设置了太多函数参数。Y:=SIN(X1,X2);未定义的识别符'%s'使用了未在变量表中定义的变量。意外语法'%s'已非法使用关键字(保留字)FORI:=1TO100DOBY-1(*DO位置非法*)或变量。X:=X+1;END_FOR;用法与函数变量不匹配函数参数非法使用。Y:=SIN(X1,EN=>BOOL1);(*输入参数EN已用作输出参数*)变量超出范围在变量中,已用超出变量数据X:=32768;(*X是INT类型变量*)类型范围的值替代。变量'%s'不是函数参数'%s'在参数中已规定了不能指定于(*X和Y是REAL类型变量而Z不是SIN函数参数*)函数参数中的变量。警告信息警告信息警告原因范例关键字'%s'冗余关键字已用于无效地方。例如,在回路语法范围外使用EXIT语句。从'%s'转换到'%s'期间,可能由于在大数据量的数据类型转Y:=DINT_TO_INT(X);(*X是一个DINT类型变量;Y数据丢失换到小数据量的数据类型期是一个INT类型变量*)间,数据可能被丢失。经常会被提及的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 问题:如何表示十六进制值?回答:在数值之前添加“16#”。例如,16#123F。也可添加前缀8#和2#分别用来表示八进制和二进制数。无这些前缀的数作为十进制数。问题:FOR语句可以使用多少次?回答:在下例中,FOR语句内容执行101次。当“i”值等于101时,回路处理结束。181结构化文本(ST语言)附录BFORi:=0TO100BY1DOa:=a+1;END_FOR;问题:当超出数组下标时回发生什么情况?回答:如果数组变量INT[10]有10个元素,则以下类型的语句不能检测到错误。当执行语句时,运算不稳定。i:=15;INT[i]:=10;问题:结构化文本编辑器中的变量是否会自动注册于变量表?回答:不会。在使用变量之前,将变量注册于变量表中。问题:是否可以直接调用梯级编程指令?回答:不可以。182附录C外部变量分类名称CX-Programmer中的数据类型地址外部变量条件标记大于或等于(GE)标记P_GEBOOLCF00不等于(NE)标记P_NEBOOLCF001小于或等于(LE)标记P_LEBOOLCF002指令执行错误(ER)标记P_ERBOOLCF003进位(CY)标记P_CYBOOLCF004大于(GT)标记P_GTBOOLCF005等于(EQ)标记P_EQBOOLCF006小于(LT)标记P_LTBOOLCF007负数(N)标记P_NBOOLCF008溢出(OF)标记P_OFBOOLCF009下溢(UF)标记P_UFBOOLCF010存取错误标记P_AERBOOLCF011始终OFF标记P_OffBOOLCF114始终ON标记P_OnBOOLCF113时钟脉冲0.02秒时钟脉冲位P_0_02sBOOLCF1030.1秒时钟脉冲位P_0_1sBOOLCF1000.2秒时钟脉冲位P_0_2sBOOLCF1011分钟时钟脉冲位P_1mimBOOLCF1041.0秒时钟脉冲位P_1sBOOLCF102辅助区域标记/位第一个循环标记P_First_CycleBOOLA200.11步骤标记P_StepBOOLA200.12第一个任务执行标记P_First_Cycle_TaskBOOLA200.15最大循环标记P_Max_Cycle_TimeUDINTA262当前扫描时间P_Cycle_Time_ValueUDINTA264循环时间错误标记P_Cycle_Time_ErrorBOOLA401.08电池电量低标记P_Low_BatteryBOOLA402.04I/O验证错误标记P_IO_Verify_ErrorBOOLA402.09输出OFF位P_Output_Off_BitBOOLA500.15OMRONFB库字CIO区域规格P_CIOWORDA450(见注释)HR区域规格P_HRWORDA452WR区域规格P_WRWORDA451DM区域规格P_DMWORDA460EM0到C区域规格P_EM0toP_EMCWORDA461toA4
本文档为【欧姆龙数据类型及结构化文本编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_916680
暂无简介~
格式:pdf
大小:537KB
软件:PDF阅读器
页数:30
分类:生活休闲
上传时间:2022-03-02
浏览量:37