sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159013 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-25
查看sjm213的 主题 / 回贴
楼主  发表于: 2013-03-25 10:23
系列帖子链接:http://www.ymmfa.com/read-gktid-1421940.html

即日起开始对三菱FX系列PLC的主要应用指令进行简单介绍。
有需要深入探讨的请跟帖讨论。

1- 条件跳转【CJ】Conditional Jump
CJ指令可以使程序从CJ指令开始到指定的指针之间的顺控程序不执行,该指令可以缩短扫描周期和执行使用双线圈的程序。
跳转位置的指针用P指针编号标记,但不能使用P63,该指针表示向END步跳转。
编辑P指针时,在GX Developer软件中将光标移动到梯形图母线的左侧,直接按键盘ENTER键激活指令输入框,输入指针编号。指针的编号不能重复。
可以用CJ指令向上跳转,但程序继续执行到CJ指令后又会再次返回,如此反复执行会导致扫描周期时间超长,引起看门狗定时器错误。



2- 子程序调用【CALL】Subroutine Call
在顺控程序中对需要多次使用的一段程序可以单独编辑为一个子程序,使用子程序调用指令CALL执行该段程序。CALL一般需要与FEND指令和SRET指令配合使用。
子程序调用的指针与跳转指针都使用P指针,但两个指令不能调用同一个指针编号。
子程序要写在主程序结束之后,主程序结束使用FEND指令进行标记。子程序编辑完后要用SRET指令返回CALL指令处。
CALL指令与CJ指令很大的不同在于CJ指令跳转到P标记后,程序往下执行不再返回CJ指令,而CALL指令跳转到P标记,执行到SRET指令后程序还要返回CALL指令,再往下执行CALL指令之后的程序。
在子程序中也可以再次调用其他子程序,这种指令用法也叫做嵌套,子程序内的CALL指令最多允许4层嵌套。


3- 子程序返回【SRET】Subroutine Return
    子程序返回指令无需驱动条件,该指令直接接在梯形图母线上。执行了CALL指令后,必须使用SRET指令返回到主程序。

  
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159013 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-25
查看sjm213的 主题 / 回贴
1楼  发表于: 2013-03-25 10:26
4- 中断指令 中断返回【IRET】Interruption Return/允许中断【EI】Interruption Enable/禁止中断【DI】Interruption Disenable
中断程序是优先级高于一般执行程序的,PLC在执行中断程序时,会停止主程序的扫描。所以中断程序实时性较高,不受扫描周期的影响,适用于执行高速控制、获得固定运行时间和获取短时间脉冲信号的场合。
PLC通常为禁止中断状态,使用EI指令可以使PLC变为允许中断,该指令无需驱动条件。在允许中断之后,可以使用DI指令再次更改为禁止中断。
  

中断程序像子程序一样,也要写在主程序之后,但中断指针使用I指针编号标记。I指针定义不同其指代的中断含义不同,用户不能自己设定。中断程序结束后需要使用IRET指令返回到主程序。
中断主要分为输入中断、定时器中断和计数器中断三种。

4.1 输入中断
输入中断使用X0~X5的输入信号驱动中断子程序,其中断指针编号及对应动作如下表:
  

在程序中使上表所示的M8050~M8055置ON后,会禁止其各自对应的输入中断。
4.2 定时器中断
定时器中断不受PLC扫描周期的影响,每隔10ms~99ms执行一次中断程序。其中断指针编号及对应动作如下表:
  

    定时器中断共计三个,其指针编号6、7、8不能重复使用。

4.3 计数器中断
计数器中断是根据高速计数器的当前值来进行中断。其中断指针编号及对应动作如下表:
  

    它和HSCS指令配合使用,在该指令中指定中断指针编号。
  

注:多个中断依次发生时,先发生的优先;完全同时发生时,新的指针编号优先。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159013 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-25
查看sjm213的 主题 / 回贴
2楼  发表于: 2013-03-25 10:28
5- 主程序结束【FEND】First End
    FEND指令表示主程序的结束,执行该指令后PLC会进行与END指令相同的过程,经过输出处理、输入处理、看门狗定时器刷新并返回到第0步程序。该指令主要用于编写子程序和中断程序时,子程序和中断程序都要写在该指令的后面。

  

6- 看门狗定时器【WDT】Watchdog Timer
WDT指令可对看门狗定时器进行刷新。当PLC的扫描周期时间大于200ms时会出现看门狗定时器错误,然后CPU错误,LED灯亮后停止运行。在程序中插入WDT指令可以避免出现这样的错误。也可以通过修改D8000寄存器的内容来延长看门狗定时器的检测时间(其初始值为200ms)。
在程序扫描周期较长时,将程序一分为二,中间插入WDT指令,就可以使每段程序执行时间都低于200ms从而避免看门狗定时器报警。
  


7- 循环程序 循环范围开始【FOR】For/循环范围结束【NEXT】Next
For-Next指令配合使用,可以让两指令之间的程序按照指定的次数在一个扫描周期内重复运行,执行完毕后才继续处理NEXT指令之后的程序。
在For-Next指令之间再使用For-Next指令嵌套编程时,最多运行嵌套5层。
For-Next指令无需驱动条件,但必须成对使用。NEXT指令在FOR指令之前,或没有NEXT指令,或FOR和NEXT指令个数不一致,或FEND、END指令以后有NEXT指令都会出错。
For-Next指令执行效果如下图所示: