电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> PLC基础入门教程 >> 正文

西门子PLC程序控制指令  条件结束指令和子程序指令

作者:佚名    文章来源:网络    点击数:    更新时间:2023/5/29
条件结束指令

  条件结束(END)指令:执行条件成立(左侧逻辑值为1)时,终止当前扫描周期,结束主程序,返回主程序起点。END指令可以在主程序中使用,但不能在子程序或中断服务程序中使用。END指令见表3-11。

  停止指令

  停止(STOP)指令:执行条件成立(左侧逻辑值为1)时,停止执行用户程序时CPU状态由 RUN转到 STOP。STP指令见表3-12。

  如果STOP指令在中断程序中执行,那么该中断立即终止,并且忽略所有挂起的中断,继续扫描程序剩余部分,完成当前周期的剩余动作,包括主用户程序的执行,并在当前扫描的最后,完成从RUN 到 STOP模式的转变。

  看门狗复位指令

  看门狗复位(WDR)指令允许S7-200CPU的看门狗定时器被重新触发,这样可以在不引起看门狗错误的情况下,增加此扫描所允许的时间。WDR指令见表3-13。

 

  跳转指令

  跳转(JMP)指令:把程序的执行跳转到指定的标号,执行跳转后,逻辑堆栈顶总为1;

  标号(LBL)指令:标记跳转目的地的位置;

  操作数 n:0~255。

  JMP指令见表3-14,JMP指令梯形图示例如图 3-16所示。

 

  JMP指令可以在主程序、子程序或者中断服务程序中使用。跳转和与之相应的标号指令必须位于同一程序代码(无论是主程序、子程序还是中断服务程序)。不能从主程序跳到子程序或中断程序,同样也不能从子程序或中断程序中跳出。可以在顺序控制(SCR)程序段中使用JMP指令,但相应的标号指令必须在同一个顺序控制程序段中。

  子程序指令

  S7-200PLC的指令系统具有简单、方便、灵活的子程序调用功能。与子程序有关的操作有:建立子程序、子程序的调用和返回。

  1.建立子程序

  建立子程序是通过编程软件来完成的。可用编程软件“编辑”菜单中的“插入”选项,选择“子程序”,以建立或插入一个新的子程序,同时,在指令树窗口可以看到新建的子程序图标,默认的程序名是SBR_N,编号N从O开始按递增顺序生成,也可以在图标上直接更改子程序的程序名,把它变为更能描述该子程序功能的名字。在指令树窗口双击子程序的图标就可进入子程序,并能对它进行编辑。S7-200CPU221、CPU222、CPU 224最大支持64个(0~63)子程序;S7_200CPU 224XP.CPU 226最大支持128个(0~127)子程序。

  2.子程序调用

  (1)子程序调用(CALL)指令在使能输入有效时,主程序把程序控制权交给子程序。子程序的调用可以带参数,也可以不带参数。它在梯形图中以指令盒的形式编程。CALL指令见表3-15。

  (2)子程序条件返回(CRET)指令在使能输入有效时,结束子程序的执行,返回主程序中(此子程序调用的下一条指令)。梯形图中以线圈的形式编程,指令不带参数。

 

  使用说明:

  (1)CRET指令多用于子程序的内部,由判断条件决定是否结束子程序调用;RET指令用于子程序的结束。用MicroWIN32编程时,不需要手工输入RET指令,而是由软件自动加在每个子程序结尾。

  (2)子程序嵌套如果在子程序的内部又对另一子程序执行调用指令,则这种调用称为子程序的嵌套。子程序的嵌套深度最多为8级。

  (3)当一个子程序被调用时,系统自动保存当前的堆栈数据,并把栈顶置为1,堆栈中的其他置为0,子程序占有控制权。子程序执行结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得控制权。

  (4)累加器可在调用程序和被调用子程序之间自由传递,所以累加器的值在子程序调用时既不保存也不恢复。

  3.带参数的子程序调用

  子程序中可以有参变量,带参数的子程序调用扩大了子程序的使用范围,增加了调用的灵活性。子程序的调用过程如果存在数据的传递,则在调用指令中应包含相应的参数。

  1)子程序参数

  子程序最多可以传递16个参数。参数在子程序的局部变量表中加以定义。参数包含下列信息:变量名、变量类型和数据类型。

  (1)变量名变量名最多用8个字符表示,第一个字符不能是数字。

  (2)变量类型变量类型是按变量对应数据的传递方向来划分的,可以是传入子程序(IN)、传入/传出子程序(IN/OUT)、传出子程序(OUT)和暂时变量(TEMP)四种类型。四种变量类型的参数在变量表中的位置必须按以下先后顺序:

  ①IN类型传入子程序参数。所接的参数可以是直接寻址数据(如VBI00)、间接寻址数据(如AC1)、立即数(如16#2344)和数据的地址值(如&VBI06)

  ②IN/OUT类型:传入/传出子程序参数。调用时将指定参数位置的值传到子程序,返回时从子程序得到的结果值被返回到同一地址。参数可以采用直接和间接寻址,但立即数(如16#1234)和地址值(如&VBl00)不能作为参数。

  ③OUT类型:传出子程序参数。它将从子程序返回的结果值送到指定的参数位置。输出参数可以采用直接和间接寻址,但不能是立即数或地址编号。

  ④TEMP类型:暂时变量类型。在子程序内部暂时存储数据,不能用来与主程序传递参数数据。

  (3)数据类型局部变量表中还要对数据类型进行声明。数据类型包括:能流,布尔型,字节、字和双字型,整数、双整数型以及实型。

  ①能流:仅允许对位输入操作,是位逻辑运算的结果。在局部变量表中,布尔能流输入处于所有类型的最前面。

  ②布尔型:布尔型用于单独的位输入和输出。

  ③字节、字和双字型:这三种类型分别声明一个1字节、2字节和4字节的无符号输入或输出参数。

  ④整数、双整数型:这两种类型分别声明一个2字节或4字节的有符号输入或输出参数。

  ⑤实型:该类型声明一个IEEE标准的32位浮点参数。

  2)参数子程序调用的规则

  常数参数必须声明数据类型。例如,把值为223344的无符号双字作为参数传递时,必须用DW#223344来指明。如果缺少常数参数的这一描述,常数可能会被当作不同类型使用。

  输入或输出参数没有自动数据类型转换功能。例如,局部变量表中声明一个参数为实型,而在调用时使用一个双字,则子程序中的值就是双字。参数在调用时必须按照一定的顺序排列,先是输入参数,然后是输入输出参数,最后是输出参数。

  3)变量表使用

  按照子程序指令的调用顺序,参数值分配给局部变量存储器,起始地址是L0.0。使用编程软件时,地址分配是自动的。在局部变量表中要加入一个参数,右击要加入的变量类型区可以得到一个选择菜单,选择“插入”,然后选择“下一行”即可。局部变量表使用局部变量存储器。当在局部变量表中加入一个参数时,系统自动给各参数分配局部变量存储空间。参数子程序调用指令格式:CALL子程序,参数 I,参数2,.,参数n.局部变量分配见表3-16,带参数调用子程序示例如图3-18所示。

Tags:子程序指令,条件结束指令,西门子plc  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询