GEPLC第14讲 控制功能指令1_第1页
GEPLC第14讲 控制功能指令1_第2页
GEPLC第14讲 控制功能指令1_第3页
GEPLC第14讲 控制功能指令1_第4页
GEPLC第14讲 控制功能指令1_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、第第 十四十四 讲讲 控制功能指令控制功能指令控制功能指令 程序控制指令用于对程序流转的控制,可以控制程序的结束、分支、循环、子程序或中断程序调用等。通过程序控制指令的合理应用,可以使程序结构灵活、层次分明,增强程序功能。读转换开关位置指令读转换开关位置指令I/O控制指令控制指令主控继电器指令主控继电器指令跳转指令跳转指令循环指令循环指令子程序子程序中断程序中断程序转鼓指令转鼓指令1. 读转换开关位置指令读转换开关位置指令 读转换器位置(SWITCH_POS) 允许逻辑读RUN/STOP 转换器的当前位置,以及转换器配置模式。 功能功能许用操作数许用操作数描述描述POS除了 S, SA, SB

2、, SC 之外任何操作数写进当前转换器位置值的存储单元:1 - 运行 I/O 激活2 - 运行 I/O 不激活3 - 停止模式MODE除了 S, SA, SB, SC 之外任何操作数写进转换器配置值的存储单元0 转换器配置不支持1 转换器控制运行/停止模式2 转换器不用,或由拥护申请使用3 转换器控制存储保护,或运行/停止模式S返回2. I/O控制指令控制指令当当DO I/O (DO_IO) DO I/O (DO_IO) 接收能流,在程接收能流,在程序运行时,每次扫描就刷新输入或输出序运行时,每次扫描就刷新输入或输出点。除了正常的点。除了正常的I/OI/O扫描外,在程序执行扫描外,在程序执行期

3、间也可以利用期间也可以利用DO_IODO_IO功能刷新其所选择功能刷新其所选择的的I/OI/O。如果输出指定,如果输出指定,DO_IODO_IO根据存储在根据存储在I/O I/O 存储器中最新值刷新输出。在整个存储器中最新值刷新输出。在整个I/O I/O 模块增量范围内使用模块增量范围内使用I/OI/O;如有必要,在;如有必要,在DO_IODO_IO执行期间,执行期间,PLCPLC调整基准点。调整基准点。暂停暂停I/O (SUS_IO)I/O (SUS_IO)功能块在一个功能块在一个CPU CPU 扫描中出现事故时停止正常扫描中出现事故时停止正常I/OI/O扫描。在扫描。在下次输出扫描期间,保

4、持所有输出的当下次输出扫描期间,保持所有输出的当前状态。在下次输入扫描期间,输入数前状态。在下次输入扫描期间,输入数据刷新。据刷新。可用操作数参量参量许用操作数许用操作数描述描述STI, Q, AI, AQ被扫描的输入或输出点(字)组起始地址。ST和END必须在相同的存储区域。注意:如果ST和END在BOOL量存储器中,ST必须是字节组。那就是说,基准地址必须从(8n+1)开始,例如%I01, %Q09, %Q49。ENDI, Q, AI, AQ被扫描的输入或输出点的最后一位的地址。必须和ST在相同的存储区域。注意:如果ST和END在BOOL量存储器中,END的基准地址必须是8n ,例如%I0

5、8, %Q16ALTI, Q, M, T, G, R, AI, AQ对于一个输入扫描,ALT指定地址来存储扫描输入点/字的值。对于一个输出扫描,ALT从指定地址获得输出点/字的值发送到I/O模块中。 注意:如果ST和END在模拟量存储器中,ALT仅是一个WORD。应用举例注意:n大部分使用DO_IO 和SUS_IO 的程序,把SUS_IO 功能块放在第一梯级放在第一梯级,处理输入的DO_IO 功能块放在下一个梯级下一个梯级,处理输出的DO_IO 功能块放在最后一个梯级最后一个梯级。nDO_IO DO_IO 功能块处理输出点的范围从功能块处理输出点的范围从%Q00001 %Q00001 到到%Q

6、00030%Q00030。如果在这个范围内。如果在这个范围内的模块是一个的模块是一个3232点的模块,点的模块,DO_IO DO_IO 功能块功能块执行对整个模块的扫描,不会把执行对整个模块的扫描,不会把I/O I/O 模块模块从中间分开扫描。从中间分开扫描。 返回3、 主控继电器指令主控继电器指令(MCRN,END MCRN)3、 主控继电器指令主控继电器指令(MCRN,END MCRN)一个 MCRN 指令标志一个逻辑段的开始,执行该逻辑段时断开能流。一个MCRN 段的结束必须由一个和MCRN 同名的ENDMCRN 作记号。在逻辑里ENDMCRN 必须跟在相应的MCRN 后面。 ENDMC

7、RN 有一个名称,用来识别及联合相应的有一个名称,用来识别及联合相应的 MCRN 。 主控继电器指令主控继电器指令 在激活的MCRN 和相应的ENDMCRN 之间的所有梯级执行时,有来自母线的负能流。 在主控继电器范围内的功能块执行时,能流断开,线圈关断。 一个MCRN 强加下列控制: 定时器不计时。TMR 类型重置。对于一个ONDTR 功能块,累加器保持原来的值。 正常输出关断,取反输出接通。 在一个激活的主控继电器范围内的子程序调用不执行。可是,在子程序内的任一定时器连续不断地计时。 举例:主控继电器的嵌套形式:主控继电器的嵌套形式: 只要只要V_I0002V_I0002触点触点允许能流进

8、入允许能流进入MCRNMCRN功能块,功能块,程序执行,能流不进入线程序执行,能流不进入线圈,一直执行到关联的圈,一直执行到关联的ENDMCRNENDMCRN。如果。如果V_I0001V_I0001和和V_I0003V_I0003触点为触点为ONON,线圈,线圈V_Q0001V_Q0001关断,关断,SET SET 线圈线圈V_Q0003V_Q0003维持当前状态。维持当前状态。 返回4、 跳转指令跳转指令(JUMP,LABEL)一个JUMP指令将旁路逻辑程序的一部分。程序在同一个块中指定的LABELN中连续执行。能量流直接从JUMPN跳转到由LABELN指定梯级。当跳转激活时,在jump和l

9、abel之间的任何功能块都不执行。JUMPN有一个与之相关联的有一个与之相关联的LABELN。 跳转指令跳转指令跳转指令性质: 在 JUMPN和与其相关的LABELN之间的所有线圈都保持它们先前的状态。 与定时器、计数器、锁存器和继电器相关联的线圈也保持它们先前的状态。 任何JUMPN能向前跳转也能向后跳转,也就是说,LABELN既能在前面梯级中也能在后面梯级中。LABELN必须在同一个块中。 跳转指令跳转指令注意: 1)为了避免由向前或向后JUMPN指令建立一个死循环,一个向后JUMPN应该包含一条有条件的路径。 2)一个JUMPN 指令的右端不连接任何指令或语句。 3)多条跳转指令可对应同

10、一标号,但不允许一个跳转指令对应多个相同标号,即在程序中不能出现两个相同的标号。 4)一个 JUMPN 与和它相关联的LABELN 能放在程序的任何地方,只要JUMPN / LABELN 在下面的范围内: 不与MCRN / ENDMCRN 对的范围重叠 不与FOR_LOOP / END_FOR 对范围重叠返回5. 循环指令循环指令FORLOOP,ENDFOR,EXITFOR循环指令循环指令FORLOOP,ENDFOR,EXITFORn 一个FOR_LOOP 可以通过设置一个负的增加量给下标变量递减赋值 。n 当START 和END 的值设置相等,程序循环仅执行一次。当START 的值不能增加/

11、减少到END 的值时,不执行循环语句。 n 如果在第一次测试时,FOR_LOOP 指令的使能输入有能流,在FOR 和相应的END_FOR 指令之间的梯级执行循环的次数由START,END 和INCREMENT 最初指定值决定。这种重复执行出现在PLC 单个扫描情况,如果循环周期长, 这种重复执行可能导致看门狗定时器停止。 n 程序循环允许嵌套,但限制在5对FOR/END_FOR内。 n 完全嵌套,也允许带有JUMP和MCR的嵌套。 控制要求:使用自增、自减指令和数据指针,将%R00101%R00200中的数据逆序传送到%R00301%R00400中。例. 数据逆序传输控制要求:使用自增、自减指

12、令和数据指针,将%R00001%R00030中的数据逆序传送到%R00201%R00230中。例. 数据逆序传输返回参考程序6. 子程序子程序不带参数调用子程序不带参数调用子程序 带参数调用子程序带参数调用子程序子程序子程序新建一个梯形图子程序新建一个梯形图子程序修改子程序名修改子程序名根据需要可以新建几个子程序(最多根据需要可以新建几个子程序(最多512个)个)打开属性窗打开属性窗带参数子程序与不带参数子程序带参数子程序与不带参数子程序子程序子程序不带参数调用子程序不带参数调用子程序 带参数调用子程序带参数调用子程序子程序子程序注意:u 一个CALL功能块能在任何程序块中使用,包括_MAIN

13、块或一个带参数块。但不能在一个外部块中使用。u 不能调用一个_MAIN块。u 执行调用之前,被调用的块必须存在。u 一个已知块的调用和被调用的次数没有限制。u 通过调用块本身可以形成递归子程序。当堆栈容量配置为默认值(64K),PLC保证在“应用堆栈溢出”错误发生之前8个嵌套调用中最小一个调用。u 当一个程序块、带参模块或外部C块的Y0参数返回ON 时,CALL向右传递能流,当返回为OFF时,CALL不向右传递能流。例1 :使用子程序设计一彩灯控制程序实现如下功能:设计一彩灯控制程序实现如下功能: 前前 64s,16 个输出个输出(Q00001Q00016),初,初态为态为 Q00001闭合,

14、其他打开,依次从最低位到最高位闭合,其他打开,依次从最低位到最高位移位闭合,循环移位闭合,循环4次;次; 后后 64s,16 个输出个输出(Q00001Q00016),初,初态为态为 Q00016和和 Q00015 闭合,其它打开,依次从最高闭合,其它打开,依次从最高位到最低位两两移位闭合,循环位到最低位两两移位闭合,循环 8次。次。 程序:返回例2 :思考 :使用带参数的子程序实现一位数加法计算器计算结果使用带参数的子程序实现一位数加法计算器计算结果的显示:的显示:(1)计算结果存放在)计算结果存放在%R00001中,数据类型为中,数据类型为INT型;型;(2)第一个数码管显示计算结果的十位

15、数,第二个)第一个数码管显示计算结果的十位数,第二个数码管显示计算结果的个位数。数码管显示计算结果的个位数。7. 中断程序中断程序1 1)由)由CPUCPU产生,中断的时间间隔由用户指定。如果产生,中断的时间间隔由用户指定。如果设定了初始延时,则在完成停止设定了初始延时,则在完成停止- -运行转换并经过初始延运行转换并经过初始延时时间后,开始计算中断时间。时时间后,开始计算中断时间。2 2)I/OI/O中断由中断由I/OI/O模块发出,模块发出,I/OI/O中断用于指示离散中断用于指示离散输入状态的改变输入状态的改变( (上升沿上升沿/ /下降沿下降沿) ),模拟量范围限制,模拟量范围限制(

16、(高高/ /低报警低报警) )和高速计数器事件。和高速计数器事件。3 3)模块中断由)模块中断由VMEVME模块产生。每个模块支持单个中模块产生。每个模块支持单个中断。断。注意:注意:中断驱动块执行后能中断非中断驱动块的执中断驱动块执行后能中断非中断驱动块的执行。如果正在中断的逻辑和已中断的逻辑访问相同的数行。如果正在中断的逻辑和已中断的逻辑访问相同的数据,会产生不可预期的错误。需要的话,在共享数据正据,会产生不可预期的错误。需要的话,在共享数据正在被访问时,服务请求程序在被访问时,服务请求程序17 17 或服务请求程序或服务请求程序32 32 可以可以临时屏蔽临时屏蔽I/O I/O 和定时中

17、断程序的执行。和定时中断程序的执行。用于启动程序块的用于启动程序块的3 种中断类型种中断类型中断程序中断程序中断设置中断设置 定时中断块第一次执行的时间为:CPU 进入运行模式后(延时*时间基准) + (时间间隔*时间基准)时间基准(Time Base)设定的时间间隔和延时的最小时间单元。时间基准可以设定为1 秒,0.1 秒和0.001 秒时间间隔(Interval)设定值*时间基准后,得到的值为程序块两次执行的时间间隔延时(Delay) (可选择)设定值*时间基准后,得到的值为延时多长时间开始第一次执行程序块1)定时中断:系统上电后定期执行的中断程序块)定时中断:系统上电后定期执行的中断程序

18、块中断设置中断设置 程序块可以由某些硬件输入的中断信号触发。例如,24 VDC,32 路的输入模块(IC697MDL650),不管输入信号是上升沿还是下降沿,第一次输入时都发出一个中断。如果模块配置中将中断功能使能,则中断可以触发执行一个程序块。I/O 中断在程序块属性栏中配置,触发必须使用全局变量%I, %AI 或者%AQ。2)I/O 中断中断如果在模块硬件配置中将VME 中断参数使能,程序块可以由VME 模块输入的中断信号触发。PAC 系统CPU 允许每个模块有一个中断。要配置模块中断,在程序块属性栏中标明模块所在的机架/槽号/中断ID即可。3)模块中断)模块中断举例:完成功能:输出继电器Q00001以1秒为周期通断。思考:思考:主程序为如下梯形主程序为如下梯形图时绘制图时绘制Q00001的

温馨提示

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

评论

0/150

提交评论