第四章 ControlLogix 控制器指令介绍和编程应用
本章内容: ControlLogix 控制器指令分类介绍。
本章目的: 掌握编写程序的基本要求,通过指令的分类学习了解各类指令的特
点,正确理解指令参数的输入,尤其是数据类型的运用,着重于通讯指令的学习。
应该说,ControlLogix 控制器与传统的可编程序控制器PLC-5/SLC500最大的区别是硬件结构的变化、数据结构的变化和通讯系统的变化,但它仍然保留或沿用了传统的可编程序控制器的指令系统,指令功能的差异不大,所以,关于编程,还有许多经验可以借鉴。 一. 控制器编程基础
要得到一个简洁、精确、严密的逻辑控制程序,除了对生产过程工艺的了解和分析,对整个控制系统正确的规划和设计,还要对程序的逻辑结构(即指令执行顺序)、数据的刷新过程、指令的详尽功能有着深刻的了解,才能正确地去编写或修改程序。关于编程的基础知识有如下三个方面需要了解。 1.梯形图程序的逻辑结构
ControlLogix 控制器的控制程序编写方式有梯形图程序、顺序功能流程图程序和语句程序。语句编程的程序可编译成梯形图程序相似的执行顺序,是适合计算机程序开发人员使用的方式;顺序功能流程图程序实质上是一个结构程序,它的结构元素还是梯形图程序或语句程序。所以,控制器的编程,通常是基于梯形图程序的编程。
梯形图程序由指令构成的逻辑梯级集合而成,逻辑梯级的结构则由输入指令和输出指令两部分组成:
输入指令 决定梯级条件的指令,通常是以下三类指令:
? 位指令的逻辑运算结果 在梯形图中用得最多的形式,根据生产过程的与或非逻辑关系编制出来的结构,其结果必为逻辑结果。 ? 比较指令的比较结果 用大小相等关系进行比较和数值范围进行判定而产生的逻辑结果。
? 检测或诊断的结果 两条特殊的指令SQI和DTR可对操作对象进行检测和诊断,得出逻辑结果。
输入指令的运行,并不产生执行某种操作的动作,但都会得到逻辑结果,这就是梯级条件,它将决定要不要做,梯级条件的存在有两种情形: 持续一段时间 ,逻辑上表现为宽脉冲 出现瞬间时间,逻辑上表现为窄脉冲 输出指令配合使用的关系。
输出指令 按梯级条件执行,引起操作的指令,通常有以下三类指令:
? 非保持型指令 在梯级条件持续期间执行,在梯级条件消失后便停止执行。具有代表性的指令是计时器指令,一般地,位指令、传送指令、转换指令、算逻运算指令等都属于非保持型指令。这类指令也可以是无条件的,即没有输入指令,指令总是在执行。
? 保持型指令 在梯级条件跳变时执行,靠梯级条件前沿触发引起执行动作。具有代表性的指令是计数器指令,一般地,位锁存指令、移位指令、堆栈操作指令、顺序器操作指令等都属于保持型指令。在编写程序时要注意给予有跳变的梯级条件。
? 可选型指令 可选择不连续方式或连续方式,一般是对外操作的通讯指令,例如MSG指令。选择不连续方式时,梯级条件跳变一次,指令执行一次;选择连续方式时,指令被触发后,即使梯级条件消失或不跳变,仍可以连续执行。
输出指令的执行是具体操作的动作,但这种执行动作与输入指令的存续有很大的关系,也即级条件将决定输出指令的执行。
值得指出的是,在PLC-5/SLC500的梯形图编程中,这种梯级的输入指令和输出指令的关系是十分严格的,一个梯级只有一对输入指令和输出指令的关系。但是在ControlLogix 控制器的梯形图编程中,已经变得非常灵活,可以在同一个梯级中编写含有好几个梯级条件的指令集合。尽管如此,输入指令和输出指令之间的对应关系仍然是非常明确的,在逻辑因果关系较为复杂的情况下,建议采用传统的方式去编写。
2.数据的刷新时间与程序执行的关系
ControlLogix 控制系统编写程序时,往往按照工艺流程的逻辑关系编写的梯形图程序,运行下来,却有不可思议的逻辑问题,反复检查,都不是梯级或指令的逻辑错误,这是为什么呢?这跟运行时的数据状况有关。
传统的可编程序控制器的工作周期由输入扫描、程序扫描和输出扫描三个阶段组成,输入扫描刷新了所有的输入映象表;程序扫描则根据最新输入数据按编制好的梯形图逻辑执行,产生最新控制结果,即刷新输出映象表;输出扫
梯级条件的存续时间,是编写输出指令的重要依据,它将确定输入指令和
描刷新所有的输出模块。这个过程是非常清晰和明确的,开发者很容易按工艺过程编写逻辑关系而不至于产生混乱,因为在整个程序扫描过程中,输入数据是不发生改变的。
ControlLogix 控制系统的I/O数据交换是生产者/用户方式,I/O模块不再是被动的数据承受者,而是主动的数据产生者,它们按照定义的中断时间发送或接受数据,I/O数据的刷新时间完全地独立于程序扫描。在控制器中,有两个CPU同时工作,一个分管逻辑程序的扫描,一个分管对外的数据交换,程序扫描和I/O交换是分别进行的,是相互独立的,完全有可能在程序扫描的过程中,输入数据发生了变化,而在梯形图程序中多次引用了同一输入数据。解决这个问题的办法是,在程序的起始梯级拷贝输入数据到一个数据缓冲区,整个程序扫描过程只引用缓冲区的数据;所有的控制结果是在每个任务完成后系统管理操作一次送到输出模块,不必编程拷贝。
3.指令执行与数据
传统的可编程序控制器PLC-5/SLC500地址数据的基本单位是16位的字,如N7:0;可以细化到位,如N7:0/0;也可以扩展成文件,如# N7:0。相应的操作指令是字(或子元素)操作指令、位操作指令、文件操作指令。
ControlLogix 控制系统的地址数据是基本数据,如BOOL、SINT、INT、DINT和REAL;或是系统定义的结构数据,如TIMER、PID;还有用户自定义结构数据。在编写指令地址数据时,往往有多种选择,要根据指令的性质来确定使用哪一种类型的数据,或者根据被操作的数据的类型来选择使用哪一种指令,比如COP指令和FAL指令处理数据的能力就很不一样。所以,使用每一条指令时,都要仔细地研究它的参数可以使用哪几种类型的数据,当源数据目标数据类型不一致时,指令执行将产生什么样的结果。在参考ControlLogix 控制系统的指令集时,请特别留意每条指令使用的数据类型,这项内容通常列表以方便查找。
二. 控制器指令的应用
ControlLogix 控制系统的指令介绍,此处着重于指令的应用,而不是解释指令,请结合《Logix5550控制器指令集参考手册》一书学习。 1、位操作指令
又称为继电器指令,专门用来处理离散量信息,用它来编制开关量信号的逻辑关系,梯形图程序的大部分都是这些指令构成的。 1-1 位输入指令XIC、XIO
? XIC 常闭输入指令 构成梯级条件的逻辑元素,为1时通。
? XIO 常开输入指令 构成梯级条件的逻辑元素,为0时通。 1-2 位输出指令OTE、OTL、OTU
? OTE 非保持型输出指令 梯级条件存在为1,梯级条件不存在为0。
? OTL 保持型锁存输出指令 必须与OUT指令配对使用,通常与ONS配
合运用。
? OUT保持型解锁输出指令 一般与OTL指令配对使用,单独使用时,用
来复位状态锁存位,通常与ONS配合运用。
注意,位操作指令的操作地址必须是位地址,即BOOL量或SINT、INT、DINT中的某一位,亦可为I/O模块的一个点。 1-3 一次启动指令ONS、OSR、OSF
? ONS 一次扫描有效存储指令 不能单独使用,必须跟随在某个级条件之后,级条件前沿触发后令级条件保持一个扫描周期,并储存状态,直到级条件后沿复位,存储位随即复位。分配给这条指令的地址即用于存储位,应该使用内部地址。这条指令非常有用,特别是配合锁存解锁指令的运用。比较下面两对梯级:
这一对梯级,没有ONS指令,当解锁的级条件没有消除时,无法进行锁存操作,总是以后一级的状态为准。
这一对梯级,因为ONS指令控制,两个梯级相互是独立的,锁存和解锁的操作可以随意地进行。
ONS指令的运用,可以使控制逻辑编得很精确,也可以对外部开关或外部操作不作特殊要求,而用编程来解决。传统的自锁梯级编程,可用锁存解锁指令与ONS指令配合使用来代替,对于搜索锁存信息更为方便。

