电气控制与PLC原理、应用实践三菱电机FX5U系列课件4.3梯形图编程实例及注意事项、4.4ST语法及指令_第1页
电气控制与PLC原理、应用实践三菱电机FX5U系列课件4.3梯形图编程实例及注意事项、4.4ST语法及指令_第2页
电气控制与PLC原理、应用实践三菱电机FX5U系列课件4.3梯形图编程实例及注意事项、4.4ST语法及指令_第3页
电气控制与PLC原理、应用实践三菱电机FX5U系列课件4.3梯形图编程实例及注意事项、4.4ST语法及指令_第4页
电气控制与PLC原理、应用实践三菱电机FX5U系列课件4.3梯形图编程实例及注意事项、4.4ST语法及指令_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章第4章FX5U系列PLC编程基础

4.3.1梯形图编程案例1.使用三菱FX5系列PLC实现三相异步电动机的正反转控制,PLC输出采用继电器输出方式,要求设计控制系统原理图和控制梯形图。解:第一步,根据控制要求,设计输入输出地址表(自行定义)输入点输出点正转—X10正转—Y10反转—X11反转—Y11停止—X12第二步,设计接口电路和辅助控制电路(主电路不做要求,前面章节多次讲述),见图4-189。第四章图4-189正反转控制原理图(参考)第四章4.3.1梯形图编程案例第三步,设计控制梯形图程序,见图4-190。图4-190正反转控制梯形图程序(参考)第四章第四章4.3.1梯形图编程案例

电气控制原理图如图4-189所示,梯形图如图4-190所示,梯形图中虽然有Y10和Y11常闭触点互锁,但由于PLC的扫描速度极快,Y10的断开和Y11的接通几乎是同时发生的,若PLC的外围电路无互锁触点,就会使正转接触器断开,其触点间电弧未灭时,反转接触器已经接通,可能导致电源瞬时短路。为了避免这种情况的发生,外部电路需要互锁,图4-189用QA1和QA2实现这一功能。上述的解题方法不是唯一方法,读者可有自行设计电气原理图和梯形图程序。2.使用三菱FX5系列PLC实现小车的往返控制(主电路、辅助控制电路与电机正反转控制相同),PLC输出采用继电器输出方式,要求压下SF1开始按钮,小车自动往复运行,正向运行3s,停车1.5s,反向运行3s,停车1.5s,压下SF2停车按钮,停止运行。试设计控制系统原理图和控制梯形图。解:第一步,根据控制要求,设计输入输出地址表(自行定义)输入点输出点开始—X13正转—Y10停止—X14反转—Y11第二步,设计PLC接口电路,见图4-191。第四章第四章4.3.1梯形图编程案例图4-191PLC接口电路(参考)第四章第四章4.3.1梯形图编程案例第三步,设计控制梯形图程序图4-192控制梯形图(参考)第四章第四章4.3.1梯形图编程案例上述的解题方法不是唯一方法,读者可有自行设计接口电路和梯形图控制程序。3.使用一台FX5U-32MT型PLC(晶体管,漏型输出)控制一台步进电动机(两相混合式),步进电机脉冲当量是1.5°/脉冲,控制步进电动机转速为250r/min,要求转10圈。要求设计控制原理图,并编写梯形图程序。解:第一步,根据控制要求,设计输入输出地址表(自行定义,不是唯一解)输入点输出点启动—X0脉冲输出口—Y0停止—X1方向—Y2第二步,设计PLC接口电路,见图4-193。FX5U-32MT型PLC可以用Y0、Y1、Y2及Y3高速输出脉冲,案例用Y0输出高速脉冲,方向可以任意选择。第四章图4-193PLC接口电路(参考)第四章4.3.1梯形图编程案例第三步,设计控制梯形图程序梯形图程序的设计需要根据控制要求,分析要求如下:PLC控制步进电动机,首先要确定脉冲频率(确定速度)和脉冲数(确定圈数)。步进电动机脉冲当量是指步进电动机每收到一个脉冲时,步进电动机转动角度。步进电动机的转速为:步进电动机的脉冲频率为:10圈就是10×360°=3600°,因此步进电动机要转动10圈,步进电动机需要收到个脉冲编写控制梯形图程序,见图4-194。第四章图4-194控制梯形图程序(参考)第四章4.3.2标签应用编程实例此处简单举例,说明标签的简单应用方法。第一步,创建新工程,在工程中创建新程序块,此时工程有两个程序块,见图4-195。图4-195创建新工程第四章第四章4.3.2标签应用编程实例第二步,选择【全局标签】,创建4个全局标签,进一步为全局标签分配软元件,如此将标签和软元件关联,此时标签和软元件可以互换。如图4-196和图4-197所示。图4-196创建新的全局标签第四章第四章4.3.2标签应用编程实例图4-197全局标签分配软元件第四章第四章4.3.2标签应用编程实例第三步,为程序块1(第一步创建的新程序块)创建局部标签,见图4-198。图4-198创建局部标签第四章第四章4.3.2标签应用编程实例第四步,在程序块(ProgPou)中输入程序,见图4-199(a);在程序块1中输入另外一段程序,见图4-199(b);下载、运行并监控程序。(a)程序块(ProgPou)中程序第四章

(a)程序块1中程序第四章4.3.2标签应用编程实例图4-199程序案例第四章

(b)程序块1中程序第四章4.3.3功能、功能块设计实例1.功能设计功能可以在程序块、功能块以及其他的功能中使用的程序部件。可以理解为子程序或者函数。此处简单举例,说明功能的定义设计方法。定义功能:d=a+b+c,流程如下:图4-200新建函数第四章第四章4.3.3功能、功能块设计实例第二步,导航窗口,双击【局部标签】,弹出局部标签设置表,如图4-201所示,按照图进行设置。图4-201局部标签设置第四章第四章4.3.3功能、功能块设计实例第三步,导航窗口,双击“程序本体”,弹出程序编辑窗口画面,如图4-202所示,按照图输入功能的程序。图4-202功能程序设计第四章第四章4.3.3功能、功能块设计实例第四步,导航窗口,鼠标左键按住“FunPou”,拖拽到程序块(ProgPou)程序编辑窗口,按照如图4-203所示进行编程,完成功能定义。到此,功能定义完成。图4-203功能调用第四章第四章4.3.3功能、功能块设计实例2.功能块设计此处简单举例,介绍功能块的应用方法。功能块的开发特别适合于在主程序中多次重复某项功能时(例如往返运动),可以将该功能定义为一项功能块,通过该方法,不仅可以节约主程序占用的容量,还具有一定的保密效应。运用功能块实现一台三相异步电动机的Y-△启动控制。原理图见图4-204。第四章图4-204电动机Y-△减压启动原理图第四章4.3.3功能、功能块设计实例第一步,导航窗口,选中【工程】,单击鼠标右键,弹出快捷菜单,单击【新建数据】,弹出如图4-205所示界面,选择功能块,单击确定按钮。图4-205新建功能块第四章第四章4.3.3功能、功能块设计实例第二步,导航窗口,双击【局部标签】,弹出局部标签设置表,如图4-206所示,按照图进行设置。图4-206局部标签设置第四章第四章4.3.3功能、功能块设计实例第三步,导航窗口,双击【程序本体】,弹出程序编辑窗口画面,如图4-207所示,按照图示输入功能块的程序。图4-207功能块程序设计第四章第四章4.3.3功能、功能块设计实例第四步,导航窗口,用鼠标的左键按住【FbPou】不放手,拖拽到如图4-208所示的位置,按照如图4-208所示输入主程序。图4-208功能块调用第四章

至此,功能块创建完成。功能块FB的数据类型和类比功能更加丰富。Y-△启动可以用功能块编写程序,要注意的是,如果必须用定时器作局部标签,不能用功能编写程序,因为功能中没有定时器数据类型。第四章4.3.4程序步骤及执行顺序

1.程序结构和步数(1)同样功能的顺控梯形图,程序的结构不同,能够简化程序和节约步数(上重下轻),如图4-209所示。图4-209程序结构和步数第四章第四章4.3.4程序步骤及执行顺序(2)并联结构较多的梯形图在左方(左重右轻),如图4-210所示。图4-210并联结构优化第四章第四章4.3.4程序步骤及执行顺序2.程序执行及编程顺序顺控程序是按照[从上至下]到[从左到右]的顺序扫描执行,如图4-211所示为程序执行及编程的顺序。第四章图4-211程序执行及编程顺序第四章4.3.5常见梯形图编程问题1.双线圈问题解决方法(1)双重输出的动作(错误的编程)如果梯形图程序中出现线圈的双重输出(双线圈),程序异常执行。如图4-212所示为双重输出的错误程序示例。图4-212双重输出动作第四章第四章4.3.5常见梯形图编程问题(2)双重输出的解决方法双重输出(双线圈)的问题,建议采用如图4-213所示的对策更改程序。图4-213双重输出解决方法第四章第四章4.3.5常见梯形图编程问题2.不可实现的编程回路及解决方法(1)桥式电路如图4-214所示的桥式电路,更改两个方向都有电流流过的回路。(2)输出线圈的位置1)线圈右侧不可以出现触点(图4-215左侧梯形图中X13的位置不正确);2)建议触点之间的线圈放在前面编程,如触点X11和X12之间的线圈Y12放在程序前面,可以节省步数。优化后的程序如图4-215右侧图所示。第四章图4-214桥式电路图4-215线圈的位置第四章4.3.6梯形图优化1.梯形图的编程,要以左母线为起点,右母线为终点,从左至右,按每行绘出。每一行的开始是起始条件,由常开、常闭触点或其组合组成,最右边的线圈是输出结果,一行写完,自上而下,依次写下一行。2.触点应画在水平线上,不能画在垂直分支线上。如图4-216(a)所示,触点X13画在垂直线上,很难正确识别它与其他触点的相互关系,应该重新编写程序,如图4-216(b)所示。

图4-216优化电路结构第四章(a)不正确(b)正确第四章4.3.6梯形图优化3.有几个串联电路块相并联时,应将触点最多的支路放在上面,如图4-217所示。而对有几个并联回路块相串联时,应将触点最多的放在梯形图的最左边;这样的安排使程序简洁,如图4-218所示。

图4-217先串联后并联梯形图的优化第四章(a)没有优化的梯形图(b)优化后的梯形图第四章4.3.6梯形图优化图4-218先并联后串联梯形图的优化第四章(a)没有优化的梯形图(b)优化后的梯形图第四章4.4.1ST编程语法1.ST语言配置ST语言是具有与C语言等相似的语法结构的文本形式的程序语言。可通过条件语句进行选择分支,通过重复语句进行重复语法控制,能够使用运算符(*、/、+、-、<、>、=等)的表达式,定义功能块的调用,通用功能的调用以及汉字等全角字符。ST语言编程由运算符与语句组成。由以下要素构成,见表4-124。第四章项目示例示例段落符号;,()运算符+、-、<、>、=保留字语句IF、CASE、WHILE、RETURN软元件X0、Y10、M100数据类型BOOL、DWORD函数ADD、REAL_TO_STRING_E常数123、’abc’标签Switch_A注释(*置为ON*)、//置为ON、/*置为ON*/其他符号半角空格、换行代码、TAB代码表4-124ST语言的结构要素

说明:段落符号、运算符、保留字应用半角记述第四章4.4.1ST编程语法2.段落符号在ST语言中,为了准确表示程序的结构,设有下述的段落符号,见表4-125。第四章符号内容()括弧[]数组要素的指定.(句点)结构体、功能块构件的指定,(逗号)自变量的断开:(冒号)软元件类型指定符;(分号)语句的终端’(单引号)字符串的标记..(两个句点)整数范围指定表4-125段落符号第四章4.4.1ST编程语法3.运算符在ST程序中使用的运算符、对象数据类型与运算结果的数据类型,见表4-126。第四章运算符对象数据类型运算结果类型*、/、+、-ANY_NUMANY_NUM<、>、<=、>=、=、<>ANY_SIMPLE位MODANY_INTANY_INTAND、&、XOR、OR、NOTANY_BITANY_BIT**ANY_REAL(底)ANY_NUM(指数)ANY_REAL表4-126运算符数据类型第四章4.4.1ST编程语法运算符的功能及优先顺序见表4-127。第四章运算符内容示例优先顺序()圆括弧式(2+3)*(4+5)1功能()功能的自变量CONCAR(‘AB’、‘CD’)2**幂运算3.0**43-符号取反-104NOT位型补数NOTTRUE*乘法运算10*205/除法运算20/10MOD求余数运算17MOD10+加法运算1.4+2.56-减法运算3-2<、>、<=、=>比较10>207=一致T#26h=T#1d2h8<>不一致8#15<>13&、AND逻辑积TRUEANDFALSE9XOR逻辑异或TRUEXORFALSE10OR逻辑或TRUEORFALSE11表4-127运算符数据类型第四章4.4.1ST编程语法说明:①在一个公式中有多个优先顺序相同的运算符时,从左侧开始运算。②一个公式中运算符的使用个数最多为1024个。4.语句可以在ST程序中使用的语句,见表4-128。第四章项目内容代入语句代入语句子程序控制语句功能块调用语句、功能调用语句RETURN语句选择语句IF语句(IF、IF...ELSE、IF...ELSIF)CASE语句重复语句FOR语句WHILE语句REPEAT语句EXIT语句表4-128ST程序中可使用的语句说明:应用半角字符记述语句。第四章4.4.1ST编程语法(1)代入语句1)格式:<左边>:=<右边>;具有将右边公式的结果代入到左边的标签或软元件中的功能。务必使右边公式的结果与左边的数据类型相同。2)使用数组型标签及结构体标签的情况下,应注意代入语句的左边与右边的数据类型。数组型标签的情况下,需要使数据类型与要素数左边与右边相同。此外,请不要指定要素。例如:intAry1:=intAry2;3)结构体标签的情况下,需要使数据类型(结构体的数据类型)的左边与右边相同。例如:dutVar1:=dutVar2;4)数据类型的自动转换在ST语言中,在记述不同的数据类型的代入及算数运算公式时,有时会自动转换数据类型。自动转换的示例:①dintLabel1:=intLabel1;//代入语句:将INT型(intLabel1)的值自动转换为DINT型,代入到左侧的DINT型(dintLabel1)第四章第四章4.4.1ST编程语法②dintLabel1:=dintLabel2+intLabel1;//算术运算公式:将INT型(intLabel1)的值自动转换为DINT型,执行DINT型的加法运算类型转换通过向代入语句、功能块及功能的输入自变量交接(VAR_INPUT部)、算术运算公式进行。为确保在类型转换时数据不丢失,应从容量小的数据类型向容量大的数据类型进行类型转换。类型转换以基本数据类型中的下述数据类型为对象,见表4-129。第四章数据类型内容字[带符号]转换后为双字[带符号]时,会自动转换为符号扩展后的值。单精度实数时,会自动转换为与转换前的整数相同的值①。字[无符号]/位列[16位]转换后为双字[无符号],位列[32位]或者双字[带符号]时,会自动转换为零扩展后的值②。单精度实数时,会自动转换为与转换前的整数相同的值①。表4-129数据类型对象说明:①数据类型交接至ANY_REAL的输入自变量时,会将16位的数据(字[带符号]或者字[无符号]/位列[16位])自动转换为单精度实数。②数据类型交接至ANY32的输入自变量时,会将字[无符号]/位列[16位]的数据自动转换为双字[无符号]/位列[32位]。上述以外的数据类型,应使用类型转换功能。第四章4.4.1ST编程语法(2)子程序控制语句1)功能块(FB)调用语句,见表4-130第四章格式内容实例名(输入变量1:=变量1,...输出变量1=>2,...);在实例名后,用“()”组织好输入变量、输出变量的代入语句。多变量的情况下,各代入语句之间用“,”(逗号)隔开。实例名.输入变量1:=变量1;...实例名();变量2:=实例名.输出变量1;在功能块(FB)调用的前后列举输入自变量、输出自变量的代入语句。表4-130数据类型对象第四章4.4.1ST编程语法在功能块调用语句的自变量中使用的符号与可分配公式如下表4-131所示。第四章类型内容属性使用符号可分配公式VAR_INPUT输入变量无,或RETAIN:=所有的公式VAR_OUTPUT输出变量无,或RETAIN=>只有变量VAR_IN_OUT输入输出变量无:=所有的公式VAR_PUBLIC外部变量无,或RETAIN禁止指定—表4-131功能块的自变量第四章4.4.1ST编程语法功能块的执行结果通过在实例名后添加“.”(句点)指定输出变量,代入变量被存储。功能块的输入变量及输出变量应用示例,见表4-132。第四章功能块FB定义记述示例1个输入变量、1个输出变量的功能块的情况下FB名:FBADDFB实例名:FBADD1输入变量1:IN1输出变量1:OUT1FBADD1(IN1:=Input1);Output1:=FBADD1.OUT1;3个输入变量、2个输出变量的功能块的情况下FB名:FBADDFB实例名:FBADD1输入变量1:IN1输入变量2:IN2输入变量3:IN3输出变量1:OUT1输出变量2:OUT2FBADD1(IN1:=Input1,IN2:=Input2,IN3:=Input3);Output1:=FBADD1.OUT1;Output2:=FBADD1.OUT2;表4-132功能块(FB)的输入变量及输出变量应用示例第四章4.4.1ST编程语法2)功能调用语句格式:功能名(变量1,变量2,...);用“()”将紧接在功能名后的自变量组织起来。多个自变量的情况下用“,”隔开。通过向变量代入,存储执行功能的结果,见表4-133。第四章功能块记述示例输入变量为1个功能的情况下(例:ABS)Outout1:=ABS(Input1);输入变量为3个功能的情况下(例:MAX)Outout1:=MAX(Input1,Input2,Input3);具有EN/ENO的功能(通用功能以外)的情况下(例:MAX_E)Output1:=MAX_E(boolEN,boolENO,Input1,Input2,Input3);通用功能的情况下(例:MOV)boolENO:=MOV(boolEN,Input1,Output1);(执行功能的结果变为ENO,第一自变量(变量1)变为EN。)表4-133变量带入第四章4.4.1ST编程语法说明:①没有返回值的用户定义功能、在调用语句的自变量中含有VAR_OUTPUT变量的功能都可以通过在其后添加“;”(分号),作为语句加以执行。3)RETURN语句RETURN语句是为了使程序、功能块、功能在中途结束而使用。如果在程序中使用了RETURN语句,将跳转到程序的最后语句的下一步。如果在功能块中使用了RETURN语句,将从功能块返回。如果在功能中使用了RETURN语句,将从功能返回。格式为RETURN;例如:IFbool1THENRETURN;END_IF;(3)选择语句常用选择型语句见表4-134。第四章第四章表4-134选择语句

第四章语句格式内容示例IFIF<布尔表达式>THEN<语句>;END_IF;布尔表达式(条件式)为真(TRUE)时,则执行语句。布尔表达式为假(FALSE)时,则不执行语句。IFbool1THENintV1:=intV1+1;END_IF;IF...ELSEIF<布尔表达式>THEN<语句1>;ELSE<语句2>;END_IF;布尔表达式(条件式)为真(TRUE)时,则执行语句1。布尔表达式的值为假(FALSE)时,则执行语句2。IFbool1THENintV3:=intV3+1;ELSEintV4:=intv4+1;END_IF;IF...ELSIFIF<布尔表达式1>THEN<语句1>;ELSEIF<布尔表达式2>THEN<语句2>;ELSEIF<布尔表达式3>THEN<语句3>;END_IF;布尔表达式(条件式)1为真(TRUE)时,则执行语句1。布尔表达式1的值为假(FALSE)而布尔表达式2的值为真(TRUE)时,则执行语句2。布尔表达式1、2的值都为假(FALSE)而布尔表达式3的值为真(TRUE)时则执行语句3。IFbool1THENintV1:=intV1+1;ELSIFbool2THENintv2:=intV2+2;ELSIFbool3THENintV3:=intV3+3;END_IF;CASECASE<整数式>OF<整数选择值1>:<语句1>;<整数选择值2>:<语句2>;<整数选择值n>:<语句n>;ELSE<语句n+1>;END_CASE;执行具有与整数式(条件式)的值一致的整数选择值的语句,在无一致的情况下,则执行ELSE语句的下一语句。CASEintV1OF1:bool1:=TRUE;2:bool2:=TRUE;ELSEintV1:=intV1+1;END_CASE;表4-134选择语句第四章4.4.1ST编程语法(4)重复语句常用重复语句见表4-135。第四章语句格式内容记述示例FORFOR<重复变量初始化>TO<最终值>BY<增加表达式>DO<语句>;END_FOR;首先进行作为重复变量使用的数据的初始化。根据增加表达式对初始化后的重复变量进行加法或减法运算,在达到最终值前一直重复执行从DO算起END_FOR内的1个以上的语句。FOR...DO语句结束后的重复变量保持着结束时的值。FORintV1:=0TO30BY1DOintV1:=intV1+1;END_FOR;WHILEWHILE<布尔表达式>DO<语句>;END_WHILE;布尔表达式(条件式)为真(TRUE)时,则执行超过1个的语句。布尔表达式在语句执行之前判定,布尔表达式为假(FALSE)时则不执行WHILE...DO内的语句。因为WHILE语句中的<布尔表达式>只要返回结果是真或假即可,因此IF条件语句中的<布尔表达式>中可指定的表达式则全部可以使用。WHILEintV1=30DOintV1:=intV1+1;END_WHILE;REPEATREPEAT<语句>;UNTIL<布尔表达式>END_REPEAT;布尔表达式(条件式)为假(FALSE)时,则执行超过1个的语句。布尔表达式在语句执行后判定,值为真(TRUE)时则不执行REPEAT...UNTIL内的语句。REPEATintV1:=intV1+1;UNTILintV1=30END_REPEAT;EXITEXIT;通过只能在重复语句中使用的语句,使重复语句在中途结束。如果在执行反复重复语句过程中达到了EXIT语句,则不执行EXIT语句之后的反复重复处理。终止重复语句后从下一行继续程序的执行。FORintV1:=0TO10BY1DOIFintV1>10THENEXIT;END_IF;END_FOR;表4-135重复语句第四章4.4.1ST编程语法(5)注意事项1)使用代入语句时①代入字符串的最大字符串长255字符。代入超过最大字符串长的字符串时,即为转换错误。②定时器型、计数器型的触点与线圈无法在代入语句的左边使用。③功能块的实例无法在代入语句的左边使用。应在代入语句的左边使用实例的输入变量、输入输出变量、外部变量。2)使用算数运算公式时将算数运算公式的结果代入到数据容量大的数据类型的变量中的情况下,应预先把算数运算公式的变量转换为左边的数据类型之后再进行运算。例如:在把数据容量16位(INT型)的算术运算结果代入到32位的数据类型(DINT型)的情况下varDint1:=varInt1*10;//varInt1为INT型,varDint1为DINT型

算术运算公式的运算结果将变为与输入操作数的数据类型相同的数据类型。因此在上述的程序中,在varInt1*10的运算结果超出了INT型的范围(-32768~+32767)的情况下,上溢或下溢的运算结果被代入到varDint1中。在这种情况下,应预先把运算表达式的操作数转换到左边的数据类型之后再进行运算。varDint2:=INT_TO_DINT(varInt1);//将INT型变量转换为DINT型变量varDint2:=varDint2*10;//用DINT型进行乘法运算,代入运算结果\第四章第四章4.4.1ST编程语法3)在算术运算公式中使用符号取反的运算符时如果相对于数据类型的最小值使用符号取反的运算符(-),则会为相同值。例如INT型的最小值时,-(-32768)=-32768。因此,在作为数据类型的自动转换的对象的变量中使用符号取反的运算符时,有时会出现意料外的结果。例:varInt1(INT型)的值为-32768,varDint1(DINT型)的值为0时varDint2:=-varInt1+varDint1;这种情况下,(-varInt1)的值原样不变地为-32768,并且-32768会代入varDint2中。算术运算公式中使用符号取反的运算符时,请预先在算术运算之前自动转换数据类型,或者创建不使用符号取反的运算符的程序。例:在算术运算之前自动转换数据类型时varDint3:=varInt;varDint2:=-varDint3+varDint1;例:不使用符号取反的运算符时varDint2:=varDint1-varInt1;4)使用位型标签时选择语句或重复语句中布尔表达式(条件式)一旦成立,<语句>内的位型标签处在ON状态下时,则这个位型标签将变为始终ON。例如:始终ON程序ST程序:IFbLabel1THENbLabel2:=TRUE;第四章第四章4.4.1ST编程语法图4-219始终ON梯形图程序第四章与ST程序同等处理的梯形图程序,见图4-219。为避免始终ON,应按下述方式添加将位型标签置为OFF的程序。例:避免始终ON的程序ST程序:IFbLabel1THENbLabel2:=TRUE;ELSEbLabel2:=FALSE;END_IF;与ST程序同等处理的梯形图程序,见图4-220。图4-220避免始终ON的程序第四章4.4.1ST编程语法5)使用定时器功能块、计数器功能块时对于选择语句中的布尔表达式(条件式),计时器功能块、计数器功能块的执行条件不同。①例如:定时器功能块的情况下更改前程序示例:IFbLabel1THENTIMER_100_FB_M_1(Coil:=bLabel2,Preset:=wLabel3,ValueIn:=wLabel4,ValueOut=>wLabel5,Status=>bLabel6);END_IF;(*bLabel1=ON并且bLabel2=ON时,开始计数。*)(*bLabel1=ON并且bLabel2=OFF时,计数清零。*)(*bLabel1=OFF并且bLabel2=ON时,停止计数。计数值不清零。*)(*bLabel1=OFF并且bLabel2=OFF时,停止计数。计数值不清零。*)更改后程序示例:TIMER_100_FB_M_1(Coil:=(bLabel1&bLabel2),Preset:=wLabel3,ValueIn:=wLabel4,ValueOut=>wLabel5,Status=>bLabel6);第四章第四章4.4.1ST编程语法②例如:计数器功能块的情况下更改前程序示例:IFbLabel1THENCOUNTER_FB_M_1(Coil:=bLabel2,Preset:=wLabel3,ValueIn:=wLabel4,ValueOut=>wLabel5,Status=>bLabel6);END_IF;(*bLabel1=ON并且bLabel2=ON/OFF时,计数+1。*)(*bLabel1=OFF并且bLabel2=ON/OFF时,不计数。*)(*bLabel1=ON/OFF不与计数+1联动。*)更改后程序示例:COUNTER_FB_M_1(Coil:=(bLabel1&bLabel2),Preset:=wLabel3,ValueIn:=wLabel4,ValueOut=>wLabel5,Status=>bLabel6);上述更改前程序示例是在选择语句不成立的情况下,为了不执行与定时器、计数器相关联的语句而创建的。根据bLabel1条件与bLabel2的AND条件使定时器、计数器动作的情况下,不使用控制语法,仅使用功能块。通过使用更改后的程序,可以使定时器、计数器动作。6)使用FOR...DO语句时①无法在重复变量中使用结构体构件及数组要素。②应使在重复变量中使用的类型与<最终值的表达式>、<增加表达式>的类型一致。③<增加表达式>可以省略。省略的情况下<增加表达式>作为1执行。④如果向<增加表达式>中代入0,则FOR语法以下可能不被执行或变为无限重复。⑤FOR...DO语法中FOR语句中的<语句>在执行后进行。第四章第四章4.4.1ST编程语法7)使用上升执行指令、下降执行指令时下表4-136显示在IF语句和CASE语句中使用上升执行指令、下降执行指令时的动作。第四章条件动作结果动作结果动作结果动作结果动作结果IF语句、CASE语句的条件式指令执行条件(EN)前一次扫描时的指令的ON/OFF判定结果指令的ON/OFF判定结果上升执行指令下降执行指令TRUE或CASE一致TRUEONON不执行不执行OFFON执行不执行FALSEONOFF不执行执行OFFOFF不执行不执行FALSE或CASE不一致TRUEONOFF不执行不执行①OFFOFF不执行不执行FALSEONOFF不执行不执行①OFFOFF不执行不执行表4-136上升和下降执行的指令动作第四章4.4.1ST编程语法说明:*①虽然是下降(ON→OFF),但IF语句或CASE语句的条件不成立,因此不执行指令。例如:IF语句中使用了PLS指令(上升沿执行指令)时,工作过程见图4-221。ST程序:IFbLabel0THENPLS(bLabel1,bLabel10);图4-221上升沿执行工作过程第四章第四章4.4.1ST编程语法8)使用主控指令时显示主控OFF时的动作。①选择语句(IF语句或者CASE语句)内或者重复语句(FOR语句、WHILE语句或者REPEAT语句)内的语句为不处理。②选择语句或者重复语句以外时,代入语句为不处理,代入语句以外的语句为非执行处理。举例1:选择语句(IF语句)内的语句MC(M0,N1,M1);//主控OFFIFM2THENM3:=M4;//主控OFF时为不处理,因此M3保持前一次扫描时的值END_IF;M20:=MCR(M0,N1)举例2:选择语句或者重复语句以外的语句(位代入语句时)MC(M0,N1,M1);//主控OFFM3:=M4;//主控OFF时为不处理,因此M3保持前一次扫描时的值M20:=MCR(M0,N1);举例3:选择语句/重复语句以外的语句(OUT指令时)MC(M0,N1,M1);//主控OFFOUT(M2,M3);//主控OFF时为非执行处理,因此M3为OFFM20:=MCR(M0,N1);第四章第四章4.4.1ST编程语法5.常数PLC的数据可用各种数据类型表示,如位、字(16位)、双字(32位)、单精度实数、字符串以及时间来表示。各种数据表达方式如表4-137所列。可对应的数据类型类型标记方式示例位布尔输入“FALSE”或“TRUE”TRUE、FALSE2进制数在2进制数的数值前附上“2#”2#0、2#18进制数在8进制数的数值前附上“8#”8#0、8#110进制数直接输入所使用的10进制数。或者在数值前附上“K”0、1、K0、K116进制数在16进制数的数值前附上“16#”或者在数值前附上“H”16#0、16#1、H0、H1•字[无符号]/位列[16位]•双字[无符号]/位列[32位]•字[带符号]•双字[带符号]2进制数*1在2进制数前附上“2#”2#0010、2#01101010、2#1111_11118进制数*1在8进制数前附上“8#”8#0、8#337、8#1_110进制数*1直接输入10进制数,或者在数值前附上“K”123、K123、K-123、12_316进制数*1在16进制数前附上“16#”或者在数值前附上“H”。16#FF、HFF、16#1_1单精度实数实数*1直接输入实数,或者在数值前附上“E”2.34、E2.34、E2.34、3.14实数(指数表现)指数表现,或者在实数值前附上“E”,然后在指数部分前附上“+”1.0E6、E1.001+5字符串(32)字符串将字符串用单引号(’)括起来‘ABC’时间时间在时间开头附上“T#”T#1h、T#1d2h3m4s5ms表4-137PLC数据表示第四章4.4.1ST编程语法在字符串类型的常数中,“$”作为转换序列使用。紧接着“$”的两个16进制数字符作为ASCII代码被识别,与ASCII代码相对应的字符被插入到字符串中;紧接着“$”的两个16进制数字符与ASCII代码不相对应的情况下,即为转换错误。但是,紧接着“$”的字符在下述情况下不会变为错误。详见表4-138。第四章标记在字符串中使用的符号或打印机代码$$$$’’$””$L或$I移行$N或$n换行$P或$p进页$R或$r复位$T或$t制表表4-138特殊情况说明第四章4.4.1ST编程语法6.标签与软元件(1)指定方法在ST程序中可以直接记述并使用标签与软元件。标签与软元件可以在表达式的左边、右边、通用功能/功能块的自变量、返回值等中使用。(2)附带类型指定的软元件标记字软元件通过向软元件名附加软元件型指定符,可以作为任意的数据类型在ST语言内使用。见表4-139。第四章软元件类型指定符数据类型示例示例的说明无总称数据类型ANY16在算术运算公式等表达式中只使用软元件的情况下,为字[带符号]。但是在FUN/FB的自变量部分中作为无类型指定的软元件被指定的情况下则为自变量定义的数据类型.D0D0中不带类型指定符的情况下:U字[无符号]/位列[16位]D0:U将D0作为字[无符号]/位列[16位]的值:D双字[带符号]D0:D将D0、D1作为双字[带符号]的值:UD双字[无符号]/位列[32位]D0:UD将D0、D1作为双字[无符号]/位列[32位]的值:E单精度实数D0:E将D0、D1作为单精度实数的值表4-139软元件标记注意:可以使用软元件类型指定符的软元件如下:数据寄存器(D)、链接寄存器(W)、模块访问软元件(U\G)、文件寄存器(R)。第四章4.4.1ST编程语法(3)软元件的指定方法关于软元件的指定可以使用下述方法:1)变址修饰;2)位指定;3)位数指定;4)间接指定;(4)注意事项1)在ST程序中无法使用指针型。2)使用位数指定代入的情况下,应使右边和左边的数据类型相一致。例如:D0:=K5X0;在上述情况下,因为K5X0为双字型、D0为字型,程序出错。3)使用位数指定代入的情况下,右边>左边时,在左边的对象点数范围内进行数据传送。例如:K5X0:=2#1011_1101_1111_0111_0011_0001;在上述情况下,因为K5X0的对象点数20点,向K5X0代入1101_1111_0111_0011_0001(20位)。4)将计数器(C)、定时器(T)、累计定时器(ST)的当前值(TNn等)在字[无符号]/位列[16位]以外的类型中使用时,或将长计数器(LC)的当前值(LCNn等)在双字[无符号]/位列[32位]以外的类型中使用时,应使用类型转换功能。例如:varInt:=WORD_TO_INT(TN0);(*使用类型转换功能*)第四章第四章4.4.1ST编程语法7.注释ST程序中使用的注释方法如下表4-140所示第四章注释形式注释符号内容记述示例单一行注释//将从开始符号“//”到行尾的内容作为注释。//注释内容多行注释(**)将从开始符号“(*”到结束符号“*)”的内容作为注释。可以在注释中输入换行。■无换行(*注释内容*)■有换行(*第1行注释内容第2行注释内容*)/**/将从开始符号“/*”到结束符号“*/”的内容作为注释。可以在注释中输入换行。■无换行/*注释内容*/■有换行/*第1行注释内容第2行注释内容*/表4-140注释注意:在多行注释中请勿记述含有结束符号的注释。第四章4.4.2ST编程指令入门1.触点指令(1)运算开始、串联连接、并联连接[LD、LDI、AND、ANI、OR、ORI]LD:常开触点运算开始指令/LDI:常闭触点运算开始指令触点指令是对指定的软元件的ON/OFF信息进行提取,作为运算结果。•AND:常开触点串联连接指令/ANI:常闭触点串联连接指令对指定的软元件的ON/OFF信息进行提取,与至当前为止的运算结果进行AND运算,作为运算结果。•OR:常开触点的并联连接指令/ORI:常闭触点的并联连接指令对指定的软元件的ON/OFF信息进行提取,与至当前为止的运算结果进行OR运算,作为运算结果。ST为代入语句、操作符、控制语句等。在ST语言中可能有LD、AND、OR等无直接适用于触点的指令(符号)的情况。通过代入语句构成的情况下,按下述示例表示。例如:Y1:=(X0ORX1)ANDX2ANDNOTX3;Y2:=NOTX4ORNOTX5;第四章第四章4.4.2ST编程指令入门(2)脉冲运算开始、脉冲串联连接、脉冲并联连接[LDP、LDF、ANDP、ANDF、ORP、ORF]•LDP:上升沿脉冲运算开始指令仅在(s)中指定的位软元件的上升沿时(OFF→ON)导通。•LDF:下降沿脉冲运算开始指令仅在(s)中指定的位软元件的下降沿时(ON→OFF)导通。•ANDP:上升沿脉冲串联连接指令/ANDF:下降沿脉冲串联连接指令,至当前为止的运算结果与(s)中指定的位软元件进行AND运算,作为运算结果。•ORP:上升沿脉冲并联连接指令/ORF:下降沿脉冲并联连接指令,至当前为止的运算结果与(s)中指定的位软元件进行OR运算,作为运算结果。ST指令格式:ENO:=LDP(EN,s);ENO:=LDF(EN,s);ENO:=ANDP(EN,s);ENO:=ANDF(EN,s);ENO:=ORP(EN,s);ENO:=ORF(EN,s);(3)脉冲否定运算开始、脉冲否定串联连接、脉冲否定并联连接[LDPI、LDFI、ANDPI、ANDFI、ORPI、ORFI]LDPI:上升沿脉冲否定运算开始指令在(s)中指定的位软元件的OFF时、ON时、下降沿时(ON→OFF)的情况下导通。•LDFI:下降沿脉冲否定运算开始指令在(s)中指定的位软元件的上升沿时(OFF→ON)、OFF时、ON时的情况下导通。•ANDPI:上升沿脉冲否定串联连接指令/ANDFI:下降沿脉冲否定串联连接指令至当前为止的运算结果与(s)中指定的位软元件进行AND运算,作为运算结果。第四章第四章4.4.2ST编程指令入门•ORPI:上升沿脉冲否定并联连接指令/ORFI:下降沿脉冲否定并联连接指令至当前为止的运算结果与(s)中指定的位软元件进行OR运算,作为运算结果。ST指令格式:ENO:=LDPI(EN,s);ENO:=LDFI(EN,s);ENO:=ANDPI(EN,s);ENO:=ANDFI(EN,s);ENO:=ORPI(EN,s);ENO:=ORFI(EN,s);2.结合指令(1)梯形图块串联连接、并联连接ST程序中无对应指令。(2)运算结果推入、读取、弹出[MPS、MRD、MPP]•MPS:存储MPS指令之前的运算结果(ON/OFF)。•MRD、MPP:读取通过MPS指令存储的运算结果,以该运算结果从下一步开始进行运算。ST指令格式:ENO:=MPS(EN);ENO:=MRD(EN);ENO:=MPP(EN)。(3)运算结果取反[INV]对INV指令之前为止的运算结果进行取反。ST指令格式:ENO:=INV(EN)。第四章第四章4.4.2ST编程指令入门(4)运算结果脉冲化[MEP、MEF]•MEP:MEP指令之前的运算结果为上升沿时变为ON,上升沿以外的情况下,变为OFF。•MEF:MEF指令之前的运算结果为下降沿时变为ON,下降沿以外的情况下,变为OFF。ST指令格式:ENO:=MEP(EN);ENO:=MEF(EN)。功能如下:■MEP•当MEP指令之前的运算结果为上升沿时(OFF->ON),变为ON(导通状态)。MEP指令之前的运算结果为上升沿以外的情况下,均为OFF(非导通状态)。•使用MEP指令时,对多个触点串联连接时,脉冲化处理将易于进行。■MEF•当MEF指令之前的运算结果为下降沿时(ON->OFF),变为ON(导通状态)。MEF指令之前的运算结果为下降沿以外的情况下,均为OFF(非导通状态)。•使用MEF指令时,对多个触点串联连接时,脉冲化处理将易于进行。第四章第四章4.4.2ST编程指令入门3.输出指令(1)OUT(定时器、计数器、报警器除外)OUT指令是将OUT指令之前的运算结果输出到指定的软元件(d)中。ST指令格式:ENO:=OUT(EN,d)。(2)定时器[OUTT、OUTHT、OUTHST、OUTST、OUTHST、OUTHSST]OUT指令之前的运算结果为ON时,对指定的定时器/累计定时器的线圈ON状态进行计测直至设定值。如果时限到,常开触点将导通,常闭触点将变为非导通。ST指令格式:ENO:=OUT_T(EN,Coil,Value);ENO:=OUTH(EN,Coil,Value);ENO:=OUTHS(EN,Coil,Value)。注意:创建通过定时器的触点进行其它定时器的定时计测的程序时,应从后计测的定时器开始依次编程。下述情况下,如果按计测顺序进行编程,所有的定时器将在同一扫描中变为ON。•设置值短于扫描时间时•设置值为1的情况下(3)计数器[OUTC]OUT指令之前的运算结果由OFF/ON变化时,将(d)中指定的计数器的当前值+1,如果计数达到设定值,常开触点将导通,常闭触点变为非导通。第四章第四章4.4.2ST编程指令入门(4)超长计数器[OUTLC]OUT指令之前的运算结果由OFF→ON变化时,将(d)中指定的超长计数器的当前值+1,如果计数到达设定值,常开触点将导通,常闭触点变为非导通。ST指令格式:ENO:=OUT_C(EN,Coil,Value)。注意点同上。(5)软元件的设置(报警器除外)[SET]执行指令变为ON时,(d)中指定的软元件将变为下述状态。•位软元件:将线圈、触点置为ON。•字软元件的位指定:将指定位置为1。ST指令格式:ENO:=SET(EN,d)。注意事项对于输出继电器(Y),在同一运算中执行了SET指令和RST指令的情况下,将输出接近于END指令(程序的结束)的指令结果。(6)软元件的复位(报警器除外)[RST]RST输入变为ON时,(d)中指定的软元件将变为下述状态。•位软元件:将线圈、触点置为OFF。•定时器、计数器:将当前值置为0,将线圈、触点置为OFF。•字软元件的位指定:将指定位置为0。•字软元件、模块访问软元件、变址寄存器:将内容置为0。ST指令格式:ENO:=RST(EN,d)。第四章第四章4.4.2ST编程指令入门(7)上升沿输出[PLS]PLS指令OFF→ON时使(d)中指定的软元件1个扫描为ON,OFF→ON以外时使其为OFF。ST指令格式:ENO:=PLS(EN,d)。(8)下降沿输出[PLF]PLF指令ON→OFF时使(d)中指定的软元件1个扫描周期为ON,ON/OFF以外时段使其为OFF。ST指令格式:ENO:=PLF(EN,d)。4.主控制指令(1)主控制的设置与复位[MC、MCR]•MC:开始主控制。•MCR:结束主控制ST指令格式:ENO:=MC(EN,n,d);ENO:=MCR(EN,n)(脉冲执行型)。注意事项•MC指令之后没有连接到母线的指令(LD、LDI等)的情况下,变为回路出错(出错代码:33E0)。•MC~MCR指令在FOR~NEXT、STL~RETSTL、P~RET(SRET)、I~IRET中无法使用。此外,请勿用I、IRET、FEND、END。•嵌套最多可以有15个(N0~N14)。进行嵌套的情况下,MC指令中从嵌套(N)的小编号开始使用,而MCR指令是从大编号开始使用。如果将顺序颠倒,则不成为嵌套结构,因此CPU模块无法正常运算。•MCR指令为集中于1个位置的嵌套结构时,通过最小号的一个嵌套(N)编号,可以结束所有的主控制。第四章第四章4.4.2ST编程指令入门5.功能指令(1)数据传送指令1)16位数据传送[MOV(P)]指令将(s)中指定的软元件的BIN16位数据传送到(d)中指定的软元件。ST指令格式:ENO:=MOV(EN,s,d);ENO:=MOVP(EN,s,d)(脉冲执行型)。2)32位数据传送[DMOV(P)]指令将(s)中指定的软元件的BIN32位数据传送到(d)中指定的软元件。ST指令格式:ENO:=DMOV(EN,s,d);ENO:=DMOVP(EN,s,d)(脉冲执行型)(2)比较指令1)BIN16位数据比较输出[CMP(P)(_U)]指令将比较(s1)与(s2)中指定的软元件的BIN16位数据。ST指令格式:ENO:=CMP(EN,s1,s2,d);ENO:=CMPP(EN,s1,s2,d)(脉冲执行型)。注意事项:从起始处占用3点(d)中指定的软元件。请注意不要与用于其他控制程序的软元件重复。2)BIN32位数据比较输出[DCMP(P)(_U)]指令将比较(s1)与(s2)中指定的软元件的BIN32位数据。ST指令格式:ENO:=DCMP(EN,s1,s2,d);ENO:=DCMPP(EN,s1,s2,d)(脉冲执行型)。注意事项同16位比较指令。第四章第四章4.4.2ST编程指令入门(3)区间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论