PLC编程及应用课件第6章.ppt

上传人:qwe****56 文档编号:70010987 上传时间:2023-01-14 格式:PPT 页数:195 大小:3.54MB
返回 下载 相关 举报
PLC编程及应用课件第6章.ppt_第1页
第1页 / 共195页
PLC编程及应用课件第6章.ppt_第2页
第2页 / 共195页
点击查看更多>>
资源描述

《PLC编程及应用课件第6章.ppt》由会员分享,可在线阅读,更多相关《PLC编程及应用课件第6章.ppt(195页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6章章可编程序控制器可编程序控制器的功能指令的功能指令6.1 6.1 S7-200S7-200的指令规约与数据类型检查的指令规约与数据类型检查 6.2 6.2 程序控制指令程序控制指令 6.3 6.3 局部变量表与子程序局部变量表与子程序 6.4 6.4 数据处理指令数据处理指令 6.5 6.5 数学运算指令数学运算指令 6.6 6.6 中断程序与中断指令中断程序与中断指令 6.7 6.7 高速计数器与高速脉冲输出指令高速计数器与高速脉冲输出指令 返回返回6.1 6.1 S7-200S7-200的指令规约的指令规约 6.1.1使能输入与使能输出使能输入与使能输出6.1.2梯形图中的网络与指

2、令梯形图中的网络与指令6.1.3其他规约其他规约返回返回后一页后一页前一页前一页1EN与与ENO在在梯梯形形图图中中,用用方方框框表表示示功功能能指指令令,在在SIMATIC指指令令系系统统中中将将这这些些方方框框称称为为“盒盒子子”(Box),在在IECll31-3指指令令系系统统中中将将它它们们称称为为“功功能能块块”。功功能能块块的的输输入入端端均均在在左左边边,输输出出端端均均在在右右边边(见见图图6-1)。梯梯形形图图中中有有一一条条提提供供“能能流流”的的左左侧侧垂垂直直母母线线,图图中中I2.4的的常常开开触触点点接接通通时时,能能流流流流到到功功能能块块DEC_B的的数数字字量

3、量输输入入端端EN(EnableIN,使使能能输输入入),该该输输入入端有能流时,功能指令端有能流时,功能指令DEC_B才能被执行。才能被执行。返回返回后一页后一页前一页前一页如如果果功功能能块块在在EN处处有有能能流流而而且且执执行行时时无无错错误误,则则ENO(EnableOUT,使使能能输输出出)将将能能流流传传递递给给下下一一元元件件。如如果果执执行行过过程程中中有有错错误误,能能流流在在出出现现错错误误的的功功能块终止。能块终止。ENO可可作作为为下下一一功功能能块块的的EN输输入入,即即几几个个功功能能块块可可以以串串联联在在一一行行中中(见见图图6-1),只只有有前前一一功功能能

4、块块被被正正确确执执行行,后后一一功功能能块块才才能能被被执执行行。EN和和ENO的的操作数均为能流,数据类型为操作数均为能流,数据类型为BOOL(布尔布尔)型。型。图中的功能块图中的功能块DEC_B表示将字节变量表示将字节变量VB0的值减的值减1,并将结果送回,并将结果送回VB0,该功能块的输入和输出可以该功能块的输入和输出可以是不同的变量。是不同的变量。返回返回后一页后一页前一页前一页语语句句表表(STL)中中没没有有EN输输入入,对对于于要要执执行行的的STL指指令令,栈栈顶顶的的值值必必须须为为1,指指令令才才能能执执行行。与与梯梯形形图图中中的的ENO相相对对应应,语语句句表表设设置

5、置了了ENO位位,可可用用AENO(AndENO)指指令令存存取取ENO位位,AENO用用来来产产生与功能块的生与功能块的ENO相同的效果。相同的效果。图图6-1中的梯形图对应的语句表为:中的梯形图对应的语句表为:LDI2.4DEC_BVB0AENOMOV_BVB0,VB2 返回返回后一页后一页前一页前一页S7-200系统手册的指令部分给出了指令的描述,使系统手册的指令部分给出了指令的描述,使ENO=0的错误条件、受影响的的错误条件、受影响的SM位、该指令支持位、该指令支持的的CPU型号和操作数表,该表中给出了每个操作数型号和操作数表,该表中给出了每个操作数允许的存储器区、寻址方和数据类型。允

6、许的存储器区、寻址方和数据类型。表表6-1列出了列出了S7-200CPU存储器的范围和特性,表存储器的范围和特性,表6-2给出了给出了S7-200操作数的范围。操作数的范围。2网络网络在在梯梯形形图图中中,程程序序被被划划分分为为称称为为网网络络(Network)的的独独立立的的段段,网网络络由由触触点点、线线圈圈和和功功能能块块组组成成。在在梯梯形形图图中中给给出出了了网网络络的的编编号号,如如网网络络2。能能流流只只能能从从左左往往右右流流动动,网网络络中中不不能能有有断断路路、开开路路和和反反方方向向的的能能流。允许以网络为单位给梯形图程序加注释。流。允许以网络为单位给梯形图程序加注释。

7、返回返回STL程程序序不不使使用用网网络络,如如果果用用Network这这个个关关键键词词对对程序分段,可以将程序分段,可以将STL程序转换为梯形图程序。程序转换为梯形图程序。返回返回返回返回3.指令的输入与输出指令的输入与输出必须有能流输入才能执行的功能块或线圈指令称为必须有能流输入才能执行的功能块或线圈指令称为条件输入指令,它们不能直接连接到左侧母线上,条件输入指令,它们不能直接连接到左侧母线上,如果需要无条件执行这些指令,可以用接在左侧母如果需要无条件执行这些指令,可以用接在左侧母线上的线上的SM0.0(该位始终为该位始终为1)的常开触点来驱动它)的常开触点来驱动它们。们。有的线圈或功能

8、块的执行与能流无关,如标号指令有的线圈或功能块的执行与能流无关,如标号指令LBL和顺序控制指令和顺序控制指令SCR等,称为无条件输入指令,等,称为无条件输入指令,应将它们直接接在左侧母线上。应将它们直接接在左侧母线上。不能级连的指令块不能级连的指令块ENO没有输出端和能流流出。没有输出端和能流流出。JMP、CRET、LBL、NEXT、SCR和和SCRE等属于等属于这类指令。这类指令。返回返回返回返回触点比较指令没有能流输入时,输出为触点比较指令没有能流输入时,输出为0,有能流输,有能流输入时,入时,输出与比较结果有关。输出与比较结果有关。4、其他规约、其他规约SIMATIC程序编辑器中的直接地

9、址由存储器区和地程序编辑器中的直接地址由存储器区和地址组成,如址组成,如I0.0。IEC程序编辑器用程序编辑器用%表示直接地址,表示直接地址,如如%I0.0“INPUT1”为全局符号名,符号为全局符号名,符号“#INPUT1”中的中的“#”号表示该符号是局部变量,号表示该符号是局部变量,红色部号红色部号“?.?”或或“?”表示需要输入的地址表示需要输入的地址或数值。或数值。梯形图中的规约:梯形图中的规约:“”是一个开路符号,或需要能流连接。是一个开路符号,或需要能流连接。返回返回“|”表示输出是一个可选的能流,用于指令的级表示输出是一个可选的能流,用于指令的级连。连。符号符号“”表示有一个值或

10、能流可以使用。表示有一个值或能流可以使用。返回返回6.2 6.2 程序控制指令程序控制指令 表表6-11是是程程序序控控制制指指令令的的列列表表。下下面面对对各各种种程程序序控控制制指令分别加以说明。指令分别加以说明。621循环指令循环指令在在控控制制系系统统中中经经常常遇遇到到需需要要重重复复执执行行若若干干次次同同样样的的任务的情况,这时可以使用循环指令。任务的情况,这时可以使用循环指令。名名称称循环开始循环开始循环结束循环结束指令指令FORNEXT指令表格式指令表格式FORINDX,INIT,FINALNEXT梯形图格式梯形图格式FOR指令表示循环的开始,指令表示循环的开始,NEXT指令

11、表示循环的结指令表示循环的结束,并将堆栈的栈顶值设为束,并将堆栈的栈顶值设为1。驱动。驱动FOR指令的逻辑条指令的逻辑条件满足时,反复执行件满足时,反复执行FOR与与NEXT之间的指令。在之间的指令。在FOR指令中,需要设置指针或当前循环次数计数器指令中,需要设置指针或当前循环次数计数器(1NDX)、起始值、起始值(1NIT)和结束值和结束值(FINAL)。返回返回后一页后一页前一页前一页假假设设INIT等等于于1,FINAL等等于于10,每每次次执执行行FOR与与NEXT之之间间的的指指令令后后,INDX的的值值加加1,并并将将结结果果与与结结束束值值比比较较。如如果果INDX大大于于结结束

12、束值值,则则循循环环终终止止,FOR与与NEXT之之间间的的指指令令将将被被执执行行10次次。如如果果起起始始值大于结束值,则不执行循环。值大于结束值,则不执行循环。指指令令输入输入/输输出出操作数操作数数据类型数据类型FORINDXVW、IW、QW、MW、SW、SMW、LW、T,C,AC,*VD,*AC,*LDINTINITVW、IW、QW、MW、SW、SMW、LW、T,C,AIW,AC,常数,常数,*VD,*AC,*LDINTFINALVW、IW、QW、MW、SW、SMW、LW、T,C,AIW,AC,常数,常数,*VD,*AC,*LDINT返回返回后一页后一页前一页前一页FOREN ENO

13、INDX INIT FINAL FOREN ENOINDX INIT FINAL 21(NEXT)(NEXT)返回返回(2)再再次次启启动动循循环环时时,它它将将初初始始值值INIT传传送送到到指指针针INDX中。中。FOR指指令令必必须须与与NEXT指指令令配配套套使使用用。允允许许循循环环嵌嵌套套,即即FORNEXT循循环环在在另另一一个个FORNEXT循循环环之之中中,最最多多可可嵌套嵌套8层层。下面是使用下面是使用FOR/NEXT循环的注意事项:循环的注意事项:(1)如果启动了)如果启动了FOR/NEXT循环,除非在循环内循环,除非在循环内部修改了结束值,否则循环就一直进行,直到循环部

14、修改了结束值,否则循环就一直进行,直到循环结束。结束。在循环的执行过程中,可以改变循环的参数。在循环的执行过程中,可以改变循环的参数。解读下列梯形图程序功能解读下列梯形图程序功能返回返回6.2.2跳转与标号指令跳转与标号指令条条 件件 满满 足足(栈栈 顶顶 的的 值值 为为 1)时时,跳跳 转转 指指 令令JMP(Jump)使使 程程 序序 流流 程程 转转 到到 对对 应应 的的 标标 号号LBL(1abel)处处,标标号号指指令令用用来来指指示示跳跳转转指指令令的的目目的的位位置置。JMP与与LBL指指令令中中的的操操作作数数n为为常常数数0255,JMP和和对对应应的的LBL指指令令必

15、必须须在在同同一一程序块中程序块中。名名称称跳跳转转标标号号指令指令JMPLBL指令表格式指令表格式JMPNLBLN梯形图格式梯形图格式(1)JMP和和LBL指令必须成对使用于主程序、子程序或中断程序中。主程序、指令必须成对使用于主程序、子程序或中断程序中。主程序、子程序或中断程序之间不允许相互跳转。若在步进程序中使用跳转指令,则必子程序或中断程序之间不允许相互跳转。若在步进程序中使用跳转指令,则必须使须使JMP和和LBL指令在同一个指令在同一个SCR段中。段中。(2)多条跳转指令可对应同一标号,但不允许一个跳转指令对应多个相同标号,多条跳转指令可对应同一标号,但不允许一个跳转指令对应多个相同

16、标号,即在程序中不能出现两个相同的标号。即在程序中不能出现两个相同的标号。(3)执行跳转指令时,跳过的程序段中各元件的状态如下。执行跳转指令时,跳过的程序段中各元件的状态如下。各输出线圈保持跳转前的状态。各输出线圈保持跳转前的状态。计数器停止计数,当前值保持跳转之前的计数值。计数器停止计数,当前值保持跳转之前的计数值。1ms、10ms定时器保持跳转之前的工作状态,原来工作的继续工作,定时器保持跳转之前的工作状态,原来工作的继续工作,到设置值后可以正常动作,当前值要累计到到设置值后可以正常动作,当前值要累计到32767才停止。才停止。100ms定时器在跳定时器在跳转时停止工作,但不会复位,当前值

17、保持不变,跳转结束后若条件允许可继续转时停止工作,但不会复位,当前值保持不变,跳转结束后若条件允许可继续计时,但已不能准确计时了。计时,但已不能准确计时了。(4)标号指令标号指令LBL一般放置在一般放置在JMP指令之后,以减少程序执行时间。若要指令之后,以减少程序执行时间。若要放置在放置在JMP指令之前,则必须严格控制跳转指令的运行时间,否则会引起运指令之前,则必须严格控制跳转指令的运行时间,否则会引起运行瓶颈,导致扫描周期过长。行瓶颈,导致扫描周期过长。(1)CRET多用于子程序内部,在条件满足时起结束子程序的作用。多用于子程序内部,在条件满足时起结束子程序的作用。在子程序的最后,编程软件将

18、自动添加子程序无条件结束指令在子程序的最后,编程软件将自动添加子程序无条件结束指令RET。(2)子程序可以嵌套运行,即在子程序内部又对另一子程序进行调用。子程序可以嵌套运行,即在子程序内部又对另一子程序进行调用。子程序的嵌套深度最多为子程序的嵌套深度最多为8层。在中断程序中仅能有一次子程序调用。可层。在中断程序中仅能有一次子程序调用。可以进行子程序自身的递归调用,但使用时要慎重。以进行子程序自身的递归调用,但使用时要慎重。(3)当一个子程序被调用时,系统自动保存当前的堆栈数据,并把栈顶当一个子程序被调用时,系统自动保存当前的堆栈数据,并把栈顶值置值置1,堆栈中的其他值为,堆栈中的其他值为0,子

19、程序完全占有控制权。子程序执行结束时,子程序完全占有控制权。子程序执行结束时,通过子程序结束指令自动恢复原来的逻辑堆栈值,调用程序重新取得控制权。通过子程序结束指令自动恢复原来的逻辑堆栈值,调用程序重新取得控制权。(4)累加器累加器AC可以在调用程序和被调子程序之间自由传递数据,所以累可以在调用程序和被调子程序之间自由传递数据,所以累加器的值在子程序调用时既不保存又不恢复。加器的值在子程序调用时既不保存又不恢复。5)带参数的子程序调用带参数的子程序调用可以带参数调用子程序,这种方式扩大了子程序的使用范围,增加了调用的可以带参数调用子程序,这种方式扩大了子程序的使用范围,增加了调用的灵活性。灵活

20、性。返回返回后一页后一页前一页前一页6.2.3停止指令停止指令停停止止指指令令STOP使使可可编编程程序序控控制制器器从从运运行行模模式式进进入入停停止止模模式式,立立即即终终止止程程序序的的执执行行。如如果果在在中中断断程程序序中中执执行行停停止止指指令令,中中断断程程序序立立即即终终止止,并并忽忽略略全全部部等等待待执执行行的的中中断断,继继续续执执行行主主程程序序的的剩剩余余部部分分,并并在在主主程程序序的的结结束束处处,完完成成从从运运行行方方式式至至停止方式的转换。停止方式的转换。返回返回后一页后一页前一页前一页6.2.4监控定时器复位指令监控定时器复位指令监监控控定定时时器器(Wa

21、tchdog)又又称称看看门门狗狗,它它的的定定时时时时间间为为300ms,每每次次扫扫描描它它都都被被自自动动复复位位一一次次,正正常常工工作作时时如如果果扫扫描描周周期期小小于于300ms,监监控控定定时时器器不不起起作作用用。如如果果强强烈烈的的外外部部干干扰扰使使可可编编程程序序控控制制器器偏偏离离正正常常的的程程序序执执行行路路线线,监监控控定定时时器器不不再再被被周周期期性性地地复位,定时时间到时,可编程序控制器将停止运行。复位,定时时间到时,可编程序控制器将停止运行。在以下情况下扫描周期可能大于在以下情况下扫描周期可能大于300ms,监控定监控定时器会停止执行用户程序:时器会停止

22、执行用户程序:(1)用户程序很长。用户程序很长。(2)出现中断事件时,执行中断程序的时间较长。出现中断事件时,执行中断程序的时间较长。返回返回(3)循环指令使扫描时间延长。循环指令使扫描时间延长。为为了了防防止止在在正正常常情情况况下下监监控控定定时时器器动动作作,可可将将监监控控定定时时器器复复位位(WDR)指指令令插插人人到到程程序序中中适适当当的的地地方方,使使监监控控定定时时器器复复位位。如如果果FORNEXT循循环环程程序序的的执执行行时时间间可可能能超超过过监监控控定定时时器器的的定定时时时时间间,可可将将WDR指指令令插插入入到到循循环环程程序序中中。条条件件跳跳转转指指令令JM

23、P若若在在它它对对应应的的标标号号之之后后(即即程程序序往往回回跳跳),可可能能因因连连续续反反复复跳跳步步使使它它们们之之间间的的程程序序被被反反复复执执行行,总总的的执执行行时时间间超超过过监监控控定定时时器器的的定定时时时时间间。为为了了避避免免出出现现这这样样的的情情况况,可可在在JMP指指令令和和对对应应的的标标号号之之间间插插入入WDR指令。指令。使使用用WDR指指令令后后,在在终终止止本本次次扫扫描描之之前前,下下列列操操作作将被禁止:将被禁止:返回返回后一页后一页前一页前一页(1)通信通信(自由口模式除外自由口模式除外)。(2)IO更新更新(立即立即IO除外除外)。(3)强制更

24、新。强制更新。(4)SM位更新位更新(不能更新不能更新SM0(5)运行时间诊断。运行时间诊断。(6)在中断程序中的在中断程序中的STOP指令指令(7)如如果果扫扫描描时时间间超超过过25s,10ms定定时时器器和和100ms定定时时器不能正确累计时间。器不能正确累计时间。如如果果将将CPU的的方方式式开开关关切切换换到到STOP位位置置,1.4s内内CPU转到停止模式。转到停止模式。返回返回后一页后一页前一页前一页6.3 6.3 局部变量表与子程序局部变量表与子程序 6.3.1局部变量表局部变量表1局部变量与全局变量局部变量与全局变量程程序序中中的的每每个个POU(ProgramOrganiz

25、ationalUnit,程程序序组组织织单单元元)均均有有自自己己的的由由64字字节节L储储器器组组成成的的局局部部变变量量表表。它它们们用用来来定定义义有有范范围围限限制制的的变变量量,局局部部变变量量只只在在它它被被创创建建的的POU中中有有效效。与与之之相相反反,全全局局符符号号在在各各POU中中均均有有效效,只只能能在在符符号号表表全全局局变变量量表中定义。表中定义。全全局局符符号号与与局局部部变变量量名名称称相相同同时时,在在定定义义局局部部变变量量的的POU中中,该该局局部部变变量量的的定定义义优优先先,该该全全局局定定义义则则在其它在其它POU中使用。中使用。返回返回局部变量适用

26、于以下两种情况:局部变量适用于以下两种情况:(1)在在子子程程序序中中只只用用局局部部变变量量,不不用用绝绝对对地地址址或或全全局符号,子程序可移植到别的项目去。局符号,子程序可移植到别的项目去。(2)如如果果使使用用临临时时变变量量(TEMP),同同一一片片物物理理存存储储器器可在不同的程序中重复使用。可在不同的程序中重复使用。如如果果不不是是上上述述两两种种情情况况,不不需需要要使使用用局局部部变变量量。通通过过在在符符号号表表(SIMATIC)或或全全局局变变量量表表(IEC)中中进进行行定义,可使符号成为全局变量。定义,可使符号成为全局变量。2局部变量的类型局部变量的类型TEMP(临临

27、时时变变量量):暂暂时时保保存存在在局局部部数数据据区区中中的的变变量量。只只有有在在执执行行该该POU时时,定定义义的的临临时时变变量量才才被被使使用,用,POU执行完后,不再使用临时变量的数值。执行完后,不再使用临时变量的数值。返回返回在在主主程程序序或或中中断断程程序序中中,局局部部变变量量表表只只包包含含TEMP变变量。子程序中的局部变量表还有下面的量。子程序中的局部变量表还有下面的3种变量:种变量:IN(输入变量输入变量):由调用它的:由调用它的POU提供的输人参数。提供的输人参数。OUT输出变量输出变量):返回给调用它的:返回给调用它的POU的输出参数。的输出参数。IN_OUT(输

28、输入入输输出出变变量量):其其初初始始值值由由调调用用它它的的POU提供,被子程序修改后返回给调用它的提供,被子程序修改后返回给调用它的POU。3。局部变量的赋值局部变量的赋值在在局局部部变变量量表表中中赋赋值值时时,只只需需指指定定声声明明局局部部变变量量的的类类型型(TEMP,IN,IN_OUT或或OUT)和和数数据据类类型型(参参见见SIMATIC和和IEC11313的的数数据据类类型型),但但不不指指定定存存储储器器地地址址,程程序序编编辑辑器器自自在在L存存储储区区中中为为所所有有局局部部变变量量指定存储器位置。指定存储器位置。返回返回4在局部变量表中增加新的变量在局部变量表中增加新

29、的变量对对于于主主程程序序与与中中断断程程序序,局局部部变变量量表表显显示示一一组组已已被被预预先先定定义义为为TEMP(临临时时)变变量量的的行行。表表中中增增加加行行,只只需需用用右右键键单单击击表表中中的的某某一一行行,选选择择“插插入入一一行行”指指令令,在在所所选选行行的的上上部部插插入入行行,选选择择“插插入入一一行行下下”指令,在所选行的下部插入新的行。指令,在所选行的下部插入新的行。对对于于子子程程序序,局局部部变变量量表表显显示示数数据据类类型型被被预预先先定定义义为为IN、IN_OUT、OUT和和TEMP的的一一行行,不不能能改改变变它它们们的的顺顺序序。如如果果要要增增加

30、加新新的的局局部部变变量量,必必须须用用鼠鼠标标右右键键单单击击已已有有的的行行,并并出出菜菜单单在在所所击击行行的的上上下下插插入相同类型的另一局部变量。入相同类型的另一局部变量。返回返回5局部变量数据类型检查局部变量数据类型检查局局部部变变量量作作为为参参数数向向子子程程序序传传递递时时,在在该该子子程程序序的的局局部部变变量量表表中中指指定定的的数数据据类类型型必必须须与与调调用用POU中中的数据类型值匹配。的数据类型值匹配。例例如如从从主主程程序序OB1调调用用子子程程序序SBR0,使使用用名名为为INPUT1的的全全局局符符号号作作为为子子程程序序的的输输人人参参数数。在在SBR0的

31、的局局部部变变量量表表中中,已已经经定定义义了了一一个个名名为为FIRST的局部变量作为该输人参数。的局部变量作为该输人参数。当当OB1调调用用SBR0时时,INPUT1的的数数值值被被传传人人FIRST,INPUT1和和FIRST的数据类型必须匹配。的数据类型必须匹配。返回返回6显示或隐藏局部变量表显示或隐藏局部变量表将将水水平平分分裂裂条条拉拉至至程程序序编编辑辑器器视视窗窗的的顶顶部部,则则不不再再显显示示局局部部变变量量表表,但但它它仍仍然然存存在在。将将分分裂裂条条下下拉拉,将再次显示局部变量表。将再次显示局部变量表。7在局部变量表中进行赋值在局部变量表中进行赋值在在程程序序中中使使

32、用用符符号号名名时时,程程序序编编辑辑器器首首先先检检查查有有关关POU的的局局部部变变量量表表,然然后后检检查查符符号号表表全全局局变变量量表表。如如果果某某符符号号名名在在两两处处都都没没有有定定义义,程程序序编编辑辑器器则则将将其其视视为为全全局局符符号号,程程序序编编辑辑器器指指定定一一条条绿绿色色波波浪浪状状下下画画线线,并并将将名名称称括括在在双双引引号号中中,例例如如“UndefinedLocalVar(未未定定义义的的局局部部变变量量)。如如果果后后来来对对该该符符号号名名赋赋了了值值,程程序序编编辑辑器器不不会会自自动动再再次读取局部变量表并修改它。次读取局部变量表并修改它。

33、返回返回为为了了将将该该符符号号名名作作为为局局部部变变量量使使用用,必必须须手手工工删删除除程程序序代代码码中中的的引引号号,并并在在符符号号名名前前插插入入#号号,例例如如改为改为#UndefinedLocalVar。各各子子程程序序最最多多可可调调用用16个个输输入入输输出出参参数数,如如果果超出超出16个,将返回错误。个,将返回错误。选选择择希希望望的的变变量量类类型型所所在在的的行行,并并在在名名称称域域中中键键人人变变量量名名称称,在在数数据据类类型型域域中中键键人人数数据据类类型型。不不需需在在局局部部变变量量表表中中的的变变量量名名称称前前加加#号号,#号号只只在在程程序序代码

34、中的局部变量名之前使用。代码中的局部变量名之前使用。局局部部变变量量名名可可包包含含数数字字、字字母母和和下下画画号号(“-”),也也可可以以包包含含扩扩展展字字符符(ASCll128ASCll255)。第第一一个个字字符符必必须须是是字字母母或或扩扩展展字字符符,关关键键字字不不能能作作为为符号名。符号名。返回返回局局部部变变量量表表中中的的变变量量名名被被下下载载和和存存储储在在CPU存存储储器器中中,使用较长的变量名将占用较多的存储空间。,使用较长的变量名将占用较多的存储空间。6.3.2子程序的编写与调用子程序的编写与调用S7-200CPU的的控控制制程程序序由由主主程程序序、子子程程序

35、序和和中中断断程程序序组组成成。STEP7MicroWIN32在在程程序序编编辑辑器器窗窗口口里里为为每每个个POU(程程序序组组织织单单元元)提提供供一一个个独独立立的的页页。主程序总是第主程序总是第1页,后面是子程序或中断程序。页,后面是子程序或中断程序。因因为为各各个个程程序序在在编编辑辑器器窗窗口口里里被被分分开开,编编译译时时在在程程序序结结束束的的地地方方自自动动加加入入无无条条件件结结束束指指令令END、MEND、RET或或RETI。如如果果在在程程序序里里加加了了这这些些指指令令,编译时反而会出错。编译时反而会出错。名名称称子程序调用子程序调用子程序结束子程序结束指令指令CAL

36、LCRET指令表格式指令表格式CALLSBR_NCRET梯形图格式梯形图格式CALL子程序调用指令,当子程序调用指令,当EN端口执行条件存在时,将主端口执行条件存在时,将主程序转到子程序入口开始执行子程序。程序转到子程序入口开始执行子程序。SBR_N是子程序名,是子程序名,标志子程序入口地址。在编辑软件中,标志子程序入口地址。在编辑软件中,SBR_N随着子程序随着子程序名称的修改而自动改变。名称的修改而自动改变。CRET有条件子程序返回指令,在其逻辑条件成立时,有条件子程序返回指令,在其逻辑条件成立时,结束子程序执行,返回主程序中的子程序调用处继续向下结束子程序执行,返回主程序中的子程序调用处

37、继续向下执行。执行。返回返回1子程序的作用子程序的作用子子程程序序常常用用于于需需要要多多次次反反复复执执行行相相同同任任务务的的地地方方,只只需需要要写写一一次次子子程程序序,别别的的程程序序在在需需要要子子程程序序的的时时候候调调用用它它,而而无无需需重重写写该该程程序序。子子程程序序的的调调用用是是有有条条件件的的,未未调调用用它它时时不不会会执执行行子子程程序序中中的的指指令令,因因此使用子程序可以减少扫描时间。此使用子程序可以减少扫描时间。使使用用子子程程序序可可以以将将程程序序分分成成容容易易管管理理的的小小块块,使使程程序序结结构构简简单单清清晰晰,易易于于查查错错和和维维护护。

38、如如果果子子程程序序中中只只引引用用参参数数和和局局部部变变量量,可可以以将将子子程程序序移移植植到到其其他他项项目目。为为了了移移植植子子程程序序,应应避避免免使使用用全全局局符符号号和和变变量量,如如I、Q、M、SM、AI、AQ、V、T、C、S、AC等存储器中的绝对地址。等存储器中的绝对地址。返回返回2子程序的创建子程序的创建可可采采用用下下列列方方法法创创建建子子程程序序:在在“编编辑辑”菜菜单单中中选选择择“插插入入一一子子程程序序”;在在程程序序编编辑辑器器视视窗窗中中按按鼠鼠标标右右键键,从从弹弹出出菜菜单单中中选选择择“插插入入一一子子程程序序”。程程序序编编辑辑器器将将从从原原

39、来来的的POU显显示示进进入入新新的的子子程程序序,程程序序编编辑辑器器底底部部将将出出现现标标志志新新的的子子程程序序的的新新标标签签,在在程程序序编编辑辑器器窗窗口口中中可可以以对对新新的的子子程程序序编编程程。可可以以使使用用该该子子程程序序的的局局部部变变量量表表定定义义参参数数,各各子子程程序序最最多多可可以以定定义义16个个IN、OUT参参数数。用用右右键键双双击击指指令令树树中中的的子子程程序序或或中中断断程程序序的的图图标标,在在弹弹出出的的窗窗口口中中选选择择“重新命名重新命名”,可修改它们的名称。,可修改它们的名称。返回返回假假设设创创建建了了一一个个名名为为CULCU的的

40、子子程程序序,首首先先在在该该子子程程序序的的局局部部变变量量表表中中,定定义义一一个个名名为为“输输入入”的的双双字字IN(输输人人)变变量量、一一个个名名为为“输输出出”的的双双字字OUT(输输出出)变变量量和和一一个个名名为为TMP1的的双双字字TEMP(临临时时)变变量量(见见图图6-5)。在在图图6-6的的子子程程序序中中,输输入入变变量量被被乘乘以以12000,再再除除以以13257,运运算算结结果果作作为为子子程程序序的输出。的输出。返回返回3子程序的调用子程序的调用可可以以在在主主程程序序、另另一一子子程程序序或或中中断断程程序序中中调调用用子子程程序序,但但是是不不能能在在子

41、子程程序序中中调调用用自自己己(即即不不允允许许递递归归调调用用)。调调用用子子程程序序时时将将执执行行子子程程序序的的全全部部指指令令,直直至至子子程程序序结结束束,然然后后返返回回调调用用程程序序中中子子程程序序调调用用指指令令的的下一条指令之处。下一条指令之处。返回返回在在梯梯形形图图程程序序中中插插入入子子程程序序调调用用指指令令时时,首首先先打打开开程程序序编编辑辑器器视视窗窗中中需需要要调调用用子子程程序序的的POU,找找到到需需要要调调用用子子程程序序的的地地方方。在在指指令令树树的的最最下下面面用用左左键键打打开开子子程程序序文文件件夹夹,将将需需要要调调用用的的子子程程序序图

42、图标标从从指指令令树树拖拖到到程程序序编编辑辑器器中中的的正正确确位位置置。或或将将光光标标置置于于程程序编辑器视窗中,然后双击指令树中的调用指令。序编辑器视窗中,然后双击指令树中的调用指令。应应为为子子程程序序调调用用指指令令的的各各参参数数指指定定有有效效的的操操作作数数,有有效效操操作作数数为为存存储储器器地地址址、常常量量、全全局局符符号号和和调调用用指指令令所所在在的的POU中中的的局局部部变变量量(不不是是被被调调用用子子程程序序中中的局部变量的局部变量)。如如果果在在使使用用子子程程序序调调用用指指令令后后修修改改该该子子程程序序中中的的局局部部变变量量表表,调调用用指指令令将将

43、变变为为无无效效。必必须须删删除除无无效效调调用,并用能反映正确参数的新的调用指令代替。用,并用能反映正确参数的新的调用指令代替。返回返回在在语语句句表表程程序序中中调调用用子子程程序序时时使使用用调调用用指指令令“SBRn”。在在调调用用子子程程序序时时,CPU保保存存整整个个逻逻辑辑堆堆栈栈后后,将将栈栈顶顶值值置置为为1,堆堆栈栈中中的的其其他他值值清清0,控控制制转转移移至至被被调调用用的的子子程程序序。子子程程序序执执行行完完成成时时,用用调调用用时时保保存存的的数数据据恢恢复复堆堆栈栈,控控制制返返回回调调用用程程序序。子子程程序序和和调调用用程程序序共共用用累累加加器器,不不会会

44、因因使使用用子子程程序序自动保存或恢复累加器。自动保存或恢复累加器。4调用带参数的子程序调用带参数的子程序调调用用带带参参数数的的子子程程序序时时需需要要设设置置调调用用的的参参数数,参参数数在在子子程程序序的的局局部部变变量量表表中中定定义义,最最多多可可传传递递16个参数。个参数。局部变量局部变量(L)地址地址变量名变量名(Name)参数类型参数类型(Var.Type)数据类型数据类型(DataType)说明说明(Comments)无无ENINBOOL指令使能输入指令使能输入参数参数LB0INPUT1INBYTEL1.0INPUT2INBOOLLD2INPUT3INDWORDLW6TRAN

45、SIN_OUTWORDLD8OUTPUT1OUTDWORDLD12OUTPUT2OUTDWORD返回返回IN(输输入入)是是传传入入子子程程序序的的输输入入参参数数。如如果果参参数数是是直直接接寻寻址址,如如VBl0,指指定定地地址址的的值值被被传传入入子子程程序序。如如果果参参数数是是间间接接寻寻址址,如如*AC1,指指针针指指定定地地址址的的值值被被传传入入子子程程序序。如如果果参参数数是是常常数数(例例如如DW#12345)或或地地址址(如如&VBl00),它它们们的的值值被被传传如如子子程程序序,“#”为常数描述符。为常数描述符。OUT(输输出出)是是子子程程序序的的执执行行结结果果,

46、它它被被返返回回给给调调用用它它的的POU。常常数数和和地地址址(如如&VBl00)不不能能作作输输出量。出量。IN_OUT(输输入入输输出出)将将参参数数的的初初始始值值传传给给予予程程序序,子子程程序序的的执执行行结结果果返返回回给给同同一一地地址址。常常数数和和地地址址不不能作输入输出参数。能作输入输出参数。在子程序中可以使用参数在子程序中可以使用参数IN、IN_OUT和和OUT。返回返回TEMP是是局局部部存存储储变变量量,不不能能用用来来传传递递参参数,它们只能在子程序中使用。数,它们只能在子程序中使用。子子程程序序传传递递的的参参数数放放在在子子程程序序的的局局部部变变量量表表中中

47、,局局部部变变量量表表最最左左边边的的一一列列是是每每个个被被传传递递的的参参数数的的局局部部存存储储器器地地址址。调调用用子子程程序序时时,输输人人参参数数被被拷拷贝贝到到子子程程序序的的局局部部存存储储器器,子子程程序序执执行行完完后后,从从局局部部存存储储器器区区拷拷贝贝输输出出参参数数到到指指定定的的输输出出参参数数地地址址。数数据据单单元元的的大大小小和和类类型型用用参参数数的的代代码码表表示示。在子程序中局部参数存储器的参数值分配如下:在子程序中局部参数存储器的参数值分配如下:(1)按按子子程程序序指指令令的的调调用用顺顺序序,给给参参数数值值分分配配局局部部存储器,起始地址是存储

48、器,起始地址是L0。返回返回(2)18个个连连续续的的位位参参数数分分配配一一个个字字节节,字字节节中中的位地址为的位地址为Lx.0Lx.7。(3)字字节节、字字和和双双字字值值在在局局部部存存储储器器中中按按字字节节顺顺序分配,如序分配,如LBx,LWx或或LDx。在在带带参参数数调调用用子子程程序序指指令令中中,参参数数必必须须按按一一定定的的顺顺序序排排列列,输输人人参参数数在在最最前前面面,其其次次是是输输人人输输出出参数,最后是输出参数。参数,最后是输出参数。如果用语句表编程,子程序调用指令的格式为:如果用语句表编程,子程序调用指令的格式为:CALL子程序号,参数子程序号,参数1,参

49、数,参数2,参数参数nn:016。带参数调用子程序使带参数调用子程序使ENO:0的错误条件:的错误条件:SM43(运行时间运行时间),0008(子程序嵌套超界子程序嵌套超界)。返回返回例例6-2子程序调用举例子程序调用举例(见图见图6-7)主程序主程序LD100CALLI0,I0.1,VBl0,I1.0,&VBl00,*AC1,VD200.子程序子程序10.LDI2.1CRET.I1.0VD200VB10*AC1I0.0 SBR10 EN IN1 OUTIN2 IN3 IN4 IN/OUT&VB100I0.1I2.1RET返回返回5子程序的嵌套调用子程序的嵌套调用程程序序中中最最多多可可创创建

50、建64个个子子程程序序。子子程程序序可可以以嵌嵌套套调调用用(在在子子程程序序中中调调用用别别的的子子程程序序),最最大大嵌嵌套套深深度为度为8。6.程序的有条件返回程序的有条件返回在在子子程程序序中中用用触触点点电电路路控控制制RET(从从子子程程序序有有条条件件返返回回)指指令令,触触点点电电路路接接通通时时条条件件满满足足,子子程程序序被被终终止止。编编程程软软件件自自动动地地为为主主程程序序和和子子程程序序添添加加无无条件返回指令。条件返回指令。类类似似地地,可可以以在在主主程程序序中中用用触触点点电电路路驱驱动动END(有条件结束)有条件结束)返回返回6.4 6.4 数据处理指令数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁