第12讲 跳转与子程序指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3) 变量表的使用 按照子程序指令的调用顺序,参数值分配给局部变量存储器, 起始地址是L0.0。当在局部变量表中加入一个参数时,系统自动给各参 数分配局部变量存储空间。使用编程软件时,地址分配是自动的。在局 部变量表中要加入一个参数,单击要加入的变量类型区可以得到一个选 择菜单,选择“插入”,然后选择“下一行”即可。局部变量表使用局 部变量存储器L。
用跳转指令来编写设备的手动与自动控制切换程序是一种常用的编 程方式。 例: 用跳转指令编程,控制两只灯,分别接于Q0.0、Q0.1。控 制要求如下: (1)要求能实现自动与手动控制的切换,切换开关接于I0.0,若I0.0 为OFF则为手动操作,若I0.0为ON,则切换到自动运行; (2)手动控制时,能分别用一个开关控制它们的启停,两个灯的启 停开关分别为I0.1、I0.2; (3)自动运行时,两只灯能每隔1s交替闪亮。
3)对定时器来说,因刷新方式不同而工作状态不同。在跳转期间,分辨 率为1ms和10ms的定时器会一直保持跳转前的工作状态,原来工作的继 续工作,到设定值后,其位的状态也会改变,输出触点动作,其当前值 存储器一直累计到最大值32767才停止。对分辨率为100ms的定时器来 说,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳 转结束后,若输入条件允许,可继续计时,但已失去了准确计时的意义, 所以在跳转段里的定时器要慎用。
二、子程序指令
子程序在结构化程序设计中是一种方便有效的工具。S7-200 PLC的指 令系统具有简单、方便、灵活的子程序调用功能。与子程序有关的操 作有:建立子程序、子程序的调用和返回。 1. 建立子程序 操作编程软件
2. 子程序指令 子程序指令有2条:子程序调用指令(CALL)和子程序条件返回指 令(CRET)。
Q0.0,驱动手抓夹紧;Q0.1,驱动上升; Q0.2,驱动下降;Q0.3,驱动左移; Q0.4,驱动右移。
编程思路如下:设计一个手动程序和一个自动程序,当I0.4为OFF时 调用手动子程序,当I0.4为ON时调用自动子程序。
主程序
右图为手动子程序,自动 子程序可参考第8讲中内容。
3. 带参数的子程序 子程序中可以有参变量,带参变量的子程序调用极大地扩大了子程 序的使用范围,增加了调用的灵活性。它主要用于功能类似的子程序块 的编程。子程序的调用过程如果存在数据的传递,则在调用指令中应包 含相应的参数。
(c)数据类型。局部变量表中还要对数据类型进行声明。数据类型
可以是:能流、布尔型、字节型、字型、双字型、整数型和实型。
(2) 参数子程序调用的规则 (1)常数参数必须声明数据类型。如值为223344的无符号双字作 为参数传递时,必须用DW#223344来指明。如果缺少常数参数的这一 描述,常数可能会被当作不同类型使用。 (2)输入或输出参数没有自动数据类型转换功能。如局部变量表 中声明一个参数为实型,而在调用时使用一个双字,则子程序中的值就 是双字。 (3)参数在调用时必须按照一定的顺序排列,先是输入参数,然 后是输入输出参数,最后是输出参数和暂时变量。
第12讲 跳转与子程序指令 讲
一、跳转指令 二、子程序指令
Leabharlann Baidu
一、跳转指令
跳转有关的指令有两条:跳转指令(JMP)和标号指令(LBL)。
说明: (1)跳转指令和标号指令必须配合使用,而且只能使用在同一程序块 中,如主程序、同一主程序或同一个中断程序。不能在不同的程序块中 相互跳转; (2)执行跳转后,被跳过程序段中的各元件状态为: 1)Q、M、S、C等元件的位保持跳转前的状态; 2)计数器C停止计数,当前值存储器保持跳转前的计数值;
(4)累加器可在调用程序和被调用子程序之间自由传递,所以累
加器的值在子程序调用时既不保存也不恢复。 (5)当子程序在一个扫描周期内被多次调用时,在子程序中不能 使用上升沿、下降沿、定时器和计数器指令。
例: 简易机械手的控制。在第8讲中介绍了机械手的自动控制,如 图所示,现要求在原自动控制的基础上加手动控制,用一个输入点来 进行自动与手动操作的切换。要求机械手要原点才能开始自动运行。
I/O分配如下: I0.0,上限位检测开关; I0.2,左限位检测开关; I0.1,下限位检测开关; I0.3,右限位检测开关;
I0.4,手动\自动切换, 当I0.4为OFF时手动控制,为ON时自动控制; I0.5,手动向上运行; I0.7,手动向左运行; I1.1,手动松开; I0.6,手动向下运行; I1.0,手动向右运行; I1.2,手动夹紧;
例: 编写一个计算Y=(X+30)×4÷5的子程序,使该公式能在多处调 用。其中X、Y的数据类型为整数。
子程序
主程序
(1) 子程序参数 子程序最多可以传递16个参数。参数在子程序的局部变量表中加以定 义。参数包含下列信息:变量名、变量类型和数据类型。 (a)变量名。变量名最多用23个字符表示,第一个字符不能是数 字。 (b)变量类型。变量类型是按变量对应数据的传递方向来划分的, 可以是传入子程序(IN)、传入和传出子程序(IN_OUT)、传出子程 序(OUT)和暂时变量(TEMP)等4种类型。
3.指令说明 (1)CRET指令多用于子程序的内部,由判断条件决定是否结束 子程序的调用,RET用于子程序的结束。用编程软件编程时,在子程序 结束处,不需要输入RET指令,软件会自动在内部加到每个子程序的结 尾(不显示出来)。 (2)如果在子程序的内部又对另一子程序执行调用指令,则这 种调用称作子程序的嵌套。子程序的嵌套深度最多为8级。 (3)当一个子程序被调用时,系统自动保存当前的堆栈数据, 并把栈顶置1,堆栈中的其他值为0,子程序占有控制权。子程序执行 结束,通过返回指令自动恢复原来的逻辑堆栈值,调用程序又重新取得 控制权。