ControlLogix培训学习资料 点击:2568 | 回复:61



墨之殇

    
  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 20:48:43
楼主

第一章   系统概述

 

本章内容:  本章概括地介绍了ControlLogix 系统的基本结构和性能特点,简单地阐述了控制器和网络的基础类型,建立了相关的基本概念。

本章目的:  通过本章的学习,了解ControlLogix 系统的基本特点和功能;了解ControlLogix 系统控制器的基本类型及用途;了解ControlLogix 系统的基本网络及特点,对ControlLogix 系统有一个全局的概念。

 

一.ControlLogix 系统特点介绍

ControlLogix 系统是罗克韦尔自动化有限公司(艾伦布拉德利有限公司)继传统的可编程序控制器PLC2PLC5/SLC之后推出的第三代工业控制产品,从硬件配置、通讯方式到数据结构都有根本性的变化,控制和数据传送概念也完全不同。它是高度模块化结构的、可灵活地进行任意组合和扩充的高性能控制平台;通过背板强大的网关功能完成信息层、控制层和设备层三个开放式的通讯平台之间的自由转换,并兼容DH+RI/ODH485/串口等传统通讯网络;IEC 1131-3 标准的结构体数据形式可完善地表达生产过程数据实体并使得控制器与外部系统的数据交换实现无缝连接。ControlLogix 系统的使用是简单而便利的,但整个控制系统硬件配置、网络组态和数据流的规划却是不可忽视的,在有大量数据交换的系统中显得尤其重要。

 

1.  ControlLogix 系统的的编程环境

        作为ControlLogix控制器编程终端的PC机或笔记本电脑,通常情况是,在Windows NT / Windows 2000/ Windows XP 操作系统下安装:

·         RSLogix5000 编程软件

·         RSLinx  连接软件

·         RSNetWorx  for ControlNet 网络组态软件

·         RSNetWorx  for DeviceNet 网络组态软件.

·         RSNetWorx  for EtherNet  网络组态软件.

RS NetWorx  软件根据选用的网络类型有不同的安装。

 

2.      ControlLogix 系统的分类

功能强大的ControlLogix 系统广泛地适用各种不同的用途,可根据需求灵活地选择多种方案,在ControlLogx 系统中,可从应用或产品结构的不同角度进行分类。




墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:19:04
21楼

·         INT           整数             -32768 -- +32767                                   16

·         DINT        长整数         -2147483648 --- +2147483647              32

·         REAL       实数             -3.4*10-38  ---1.17*10+38      ( 负数 )        32

                                             1.17*10-38 ---  3.4*10+38     ( 正数 )

它们和标准的数据库的基本类型是一样的,但由于ControlLogix系统的数据处理和传送的基本单元是32位,所以,尽可能地使用DINTREAL的数据类型,将节约控制器的内存空间和系统资源,这也是系统优化要考虑的问题之一。

 

2-2  系统预定义结构数据类型 

系统预定义结构数据类型是系统预先设定的结构数据,它有系统事先设定好的固定形式,引用时自然产生。有如下几种形式:

       1>   I/O模块组态时产生的I/O数据,如:

·         Local:0:C  ---  本地位于0槽输入模块的组态数据

·         Local:0:I    ---  本地位于0槽输入模块的输入数据

·         Local:1:C  ---  本地位于1槽输出模块的组态数据

·         Local:1:I  ---   本地位于1槽输出模块的状态数据

·         Local:1:O ---  本地位于1槽输出模块的输出数据

·         CNBR_2:0:I  --- 远程位于0槽输入模块的输入数据

·         CNBR_2:0:C --- 远程位于0槽输入模块的组态数据

        不同的I/O模块有不同的数据结构,这取决于I/O模块与控制器交换的数据内容,模块的数据结构在开发模块时就已经决定了。

2>   出自于PLC5/SLC500 的多字元素文件,因为ControlLogix系统的指令系统仍然沿用了传统的PLC5的指令系统,所以PLC5 的多字元素文件在指令中还是需要引用。如:

·         TIMER  ---   用于计时器指令

·         COUTER  --- 用于计数器指令

·         CONTROL ---  用于数组类型指令

·         PID  --- 用于PID指令

·         MESSAGE --- 用于MSG指令

·         SFC_STEP  用于顺序功能流程图操作

·         SFC_STOP  用于顺序功能流程图操作

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:20:23
22楼
请注意,在PLC中的16位的整型数在这里统统转变成了32位的双整数,两者均是各自控制器中信息处理的基本单元。

3>    运动控制的数据结构,由运动控制指令引用,如:

• AXIS_CONSUMED

• AXIS_VIRTUAL

• MOTION_GROUP

• MOTION_INSTRUCTION

4>  功能块(过程控制)的数据结构,由功能块编程时引用,如:

• TOTALIZER   --- 累加器数据结构

• MULTIPLEXER  --- 8选1 功能块数据结构

• FBD_TIMER  ---  功能块的计时器

• FBD_COUTER  ---  功能块的计数器

• FBD_LOGICAL  ---  功能块的逻辑运算

5>  系统组态信息和状态信息,不显示在数据结构选项中,SSV和GSV指令操作时引用,必须创建相同数据结构的自定义结构数据,来建立对应的TAG,如:

• AXIS ---  运控模块的状态信息

• CONTROLLER  ---  控制器模块执行时的状态信息

• CONTROLLERDEVICE  --- 控制器物理硬件的识别

• CST --- 为一个框架中的设备提供协调系统时间的信息

• DF1  ---  对可组态的DF1通讯设备进行组态和获得信息

• FAULTLOG  --- 获取或清除控制器的故障信息

• MESSAGE ---  获取或设置信息指令的组态信息

• MODULE  ---  获取或设置模块(在I/O Configuration中的)的组态信息

• MOTIONGROUP  ---  运控模块轴组的状态信息

• PROGRAM  ---  获取或设置程序的组态信息

• ROUTINE  ---获取子程序的组态信息

• SERIALPORT   ---获取或设置串口的组态信息

• TASK  ---获取或设置任务的组态信息

• WALLCLOCKTIME ---获取或设置控制器中的系统时间



2-3  用户自定义结构数据类型

用户自定义结构数据类型由用户根据自己的需要自行定义数据的结构,分为以下两种情况。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:21:15
23楼

1>   字符串预定义

用户可自行定义不同长度(1-64K字符)的字符串数据结构,用于ASCII码的数据表达(即英文文字表达),用户自定义结构中有一个缺省的长度为82的字符串数据结构,即PLC-5/SLC中字符串数据的定义长度,以保证与PLC-5/SLC的兼容。

2>   用户自定义数据结构

用户自定义数据结构通常用于围绕某一控制事件的相关数据建立起来的数据结构,这种结构可使得数据的查找、监视、传送非常方便。在建立用户自定义的数据结构过程中,其子元素定义的顺序跟存储器空间的占用有关,每当建立一个子元素,都会在上次剩余的32位的存储器空间安排,如果不够,将开出一个新的32位的存储器空间,一个完整的用户自定义数据结构,一定是32位存储器的整倍数。所以,正确的建立子元素的顺序,可以得到存储器空间的合理安排,从而节约内存空间。下面是一个变频器的相关数据建立起来的用户自定义数据结构:

 

            

2-3

其存储器空间占用如下所示:

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:23:23
24楼

2-4

 

       可以看出,除了BOOL量外,其它数据类型的子元素的建立都是以字节为单位开出和计算的

 

2-4  数组

数组是同一数据类型的连续分布的集合,可由基本数据类型和结构数据类型构成,数组有1维、2维和3维,各维数中的元素个数取决于内存。基本数据类型的1维数组相当于PLC-5/SLC500 中的文件,因此,PLC-5/SLC500中的文件操作在ControlLogix 中统统变成了1维数组的操作。有的结构类型数据不可以定义成数组。

 

.  控制器的容量

每当提到控制器的容量,通常有两种说法,一是指它的物理容量,讲的是内存的大小;二是指它的逻辑容量,讲的是信息的连接数量。

1.控制器的内存容量

控制器的内存由基本内存和扩展内存构成,不同的控制器类型的内存组合也不一样。

  • 1756-L1    Logix  5550   基本内存  160K  扩展内存   512K , 1M ,  2M
  • 1756-L53  Logix  5553   L1 + 3.5M,
  • 1756-L55  Logix  5555   基本内存  750K  扩展内存   1.5M , 3.5M ,  7.5M

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:25:02
25楼

ControlLogix控制器的内存存放信息的内容和方法与PLC-5不同,在存放等同运行信息时,它们有如下的等量关系:

  • 1756-L1  =  160K字节   相当于   1785-L11 
  • 1756-M1 = 1756-L1  + 512K字节    相当于 PLC5/40
  • 1756-M2 = 1756-L1  + 1M 字节       相当于PLC5/80
  • 1756-M3 = 1756-L1  + 2M字节       相当于PLC5/250

 

 

控制器的内存要存放的内容有静态的空间占用,也有动态的空间占用,它们基本上包括以下几种:

  • 初始化操作系统(43K字节,此项不占用选型手册中提供给用户的内存空间),各次版本新增加功能所带来的附加内存空间,
  • I/O模块定义和组态   ASCII代码存放形式
  • 数据库   标签的ASCII代码存放形式(含标签名字和别名)
  • 应用程序的源代码(尽管是相似的指令,由于提高执行速度,比较PLC5/SLC而言需要附加的内存)
  • 运行时信息交换处理所需要的缓冲区
  • RSLinx 数据操作所需要的标签组的存储
  • 在线编辑所需要的悬挂编辑梯级的临时存储

通常,建议预留20—30%的控制器内存空间,以满足由于新版本的移植引起的操作系统所需增加的空间、应用程序增加所需要的空间及动态占用的空间。

 

2.   控制器的连接容量

相似于传统的可编程序控制器中讨论的带I/O的能力,控制器对外的数据交换统称为信息的连接,它们有静态连接和动态连接两种,静态连接通常是预定性数据,如I/O数据、控制器Produce/Consume数据、通讯数据、等;动态连接通常是非预定性数据,如MSG传送的数据、人机界面传送的数据、等等。一个ControlLogix控制器的可连接容量最大为250个,其占用列举如下:

  • 本地框架中的I/O模块,每块占用1个连接
  • 远程框架中非离散量模块各占用1个连接
  • 远程框架非优化离散量模块各占1个连接
  • 远程框架所有的优化离散量模块(同一框架)共占1个连接
  • 每块DH/RIO模块占用1个连接
  • 每块DNB模块占用2个连接
  • 每个RIO 的适配器占用1个连接
  • 每个Produce占用1个连接, 对应Produce Tag 外部每一个Consume Tag 占用1个连接

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:26:14
26楼
  • 控制器中的每一个Consume Tag 占用1个连接
  • 每条MSG指令占用1个连接,可以通过取消MSG指令中的 Cache Connection 的功能来释放非执行中的MSG的连接

         从以上列举不难看出,ControlLogix 控制系统的确是一个模块化的结构,I/O模块与控制器的数据交换,混同其它种类的信息交换,都是信息的连接,后面章节关于I/O模块的深入讨论,可以了解,其实I/O模块与控制器交换的数据远远不止输入输出点的数据,还包括了模块组态和状态等,一大块信息的连接。

关于控制器的连接占用,在后面各种模块应用的章节中,将重复提及,以加深连接占用的理解。

 

.  控制器的信息保护

         控制器的内存是控制器所有信息存放的地方,这些信息的保护是系统维护的重要工作,应该对以下保护的方法进行了解。

1.使用锂电池

采用锂电池,在框架失电的情况下,直接保护控制器的内存状态。型号为1756BA1的锂电池可直接安装在控制器上,因体积有限,容量较小,只能维持不到100天;另外一种型号为1756BATM的电池模块(内置电池可更换),独立安装在框架之外,容量较大,一般可维持300天左右。通常在选型手册中给出的维持时间,作为参考量,电池维持的时间取决控制器内存的大小和停电时间的长短,内存越大,停电时间越长,电池维持的时间越短。

 

2.选用带闪存的控制器

传统的控制器信息永久保存的方法是采用EEPROMControlLogix控制器摒弃了这种旧的技术,而采用了闪存技术,作为永久存储内存信息的方法。可 在编程软件中直接操作,将内存信息闪存到非易失性存储器,或从非易失性存储器恢复到内存。

        因为非易失性存储器和内存在制造时集于一体,在定购控制器时,就要考虑好选型,以免日后的更换引起不必要的费用。

 

3.存储磁盘文件

将磁盘文件下载到控制器,也是恢复控制器内存的方法。要在编程终端(PC机或笔记本电脑)妥善保存项目的磁盘文件。文件的存放形式有后缀为 *.ACD和后缀为*.L5K的两种文件,作为保管或寄送,多用*.L5K文件形式,因为这种文件形式占用的存储空间是比较小的。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:27:27
27楼

值得提醒的是,只有磁盘文件保存的信息才是完整的项目信息,控制器内存或闪存的信息主要是组态信息和运行信息,占用大量内存空间的注释信息即文字信息,是不会下载在控制器中的,尽管ControlLogx控制器的内存已经增大了很多。此外,在项目移交时,应该注意查收附有磁盘文件的硬媒介质,以保证有完备的项目资料。

 

 

 

 

 

 

 

 

 

 

 

 

习题

1、控制器有几个CPU?它们各自的工作是什么?

2、控制器的内存有哪几种?它们分别存放什么信息?

3、控制器的信息保护有哪几种方式?

4、多于32位的标签,在数据传送过程可能出现什么情况?怎么解决?

5、一个控制器最多可以建立多少个任务?有哪几种类型的任务?每种类型的任务有什么样的限制?

6、周期型任务和事件中断任务的执行一共有几个优先权?优先权的高低由什么决定?

7、每个任务最多可以建立多少个程序?

8、每个程序中有多少个子程序?有哪些特殊的子程序?

9、子程序的编写模式有哪几种?

10、            数据库的区域有哪几种类型?在引用时有什么限制?

11、            数据结构有哪几种类型?

12、            用户自定义结构怎么安排才会节省内存空间?

13、            当控制器的内存不够用的时候,怎样可以解决?

14、            一个控制器对外最多可以有多少个连接?

15、            控制器的连接有哪几种类型?

16、            计算以下控制器所属模块和对外通讯一共占用控制器多少个连接。

             I/O模块:

本地框架

数量

远程框架一(优化)

数量

远程框架二(不优化)

数量

1756-IB16D

4

1756-IB16(优化)

4

1756-IB16

2

1756-OB16D

3

1756-OB16(优化)

3

1756-OB16

1

1756-IF6I

3

1756-IF6I

2

1756-IF6I

3

1756-OF6VI

2

1756-OF6VI

1

1756-OF6VI

4

1756-DNB

1

1756-HSCE

1

 

 

       

             控制器: 

信息类别

数量

Produce

4

Consumed(本机接受)

8

Consumed(外部接受)

20

MSG

15

 

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:29:50
28楼

第四章   ControlLogix  控制器指令介绍和编程应用

本章内容:   ControlLogix 控制器指令分类介绍。

本章目的: 掌握编写程序的基本要求,通过指令的分类学习了解各类指令的特点,正确理解指令参数的输入,尤其是数据类型的运用,着重于通讯指令的学习。

 

应该说,ControlLogix 控制器与传统的可编程序控制器PLC-5/SLC500最大的区别是硬件结构的变化、数据结构的变化和通讯系统的变化,但它仍然保留或沿用了传统的可编程序控制器的指令系统,指令功能的差异不大,所以,关于编程,还有许多经验可以借鉴。

一.  控制器编程基础

要得到一个简洁、精确、严密的逻辑控制程序,除了对生产过程工艺的了解和分析,对整个控制系统正确的规划和设计,还要对程序的逻辑结构(即指令执行顺序)、数据的刷新过程、指令的详尽功能有着深刻的了解,才能正确地去编写或修改程序。关于编程的基础知识有如下三个方面需要了解。

1.梯形图程序的逻辑结构

ControlLogix 控制器的控制程序编写方式有梯形图程序、顺序功能流程图程序和语句程序。语句编程的程序可编译成梯形图程序相似的执行顺序,是适合计算机程序开发人员使用的方式;顺序功能流程图程序实质上是一个结构程序,它的结构元素还是梯形图程序或语句程序。所以,控制器的编程,通常是基于梯形图程序的编程。

梯形图程序由指令构成的逻辑梯级集合而成,逻辑梯级的结构则由输入指令和输出指令两部分组成:         

 

输入指令     决定梯级条件的指令,通常是以下三类指令:

·         位指令的逻辑运算结果  在梯形图中用得最多的形式,根据生产过程的与或非逻辑关系编制出来的结构,其结果必为逻辑结果。

·         比较指令的比较结果  用大小相等关系进行比较和数值范围进行判定而产生的逻辑结果。

·         检测或诊断的结果   两条特殊的指令SQIDTR可对操作对象进行检测和诊断,得出逻辑结果。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:31:22
29楼

输入指令的运行,并不产生执行某种操作的动作,但都会得到逻辑结果,这就是梯级条件,它将决定要不要做,梯级条件的存在有两种情形:

   持续一段时间 ,逻辑上表现为宽脉冲   

         出现瞬间时间,逻辑上表现为窄脉冲    

梯级条件的存续时间,是编写输出指令的重要依据,它将确定输入指令和输出指令配合使用的关系。

输出指令    按梯级条件执行,引起操作的指令,通常有以下三类指令:

·         非保持型指令   在梯级条件持续期间执行,在梯级条件消失后便停止执行。具有代表性的指令是计时器指令,一般地,位指令、传送指令、转换指令、算逻运算指令等都属于非保持型指令。这类指令也可以是无条件的,即没有输入指令,指令总是在执行。

·         保持型指令   在梯级条件跳变时执行,靠梯级条件前沿触发引起执行动作。具有代表性的指令是计数器指令,一般地,位锁存指令、移位指令、堆栈操作指令、顺序器操作指令等都属于保持型指令。在编写程序时要注意给予有跳变的梯级条件。

·         可选型指令    可选择不连续方式或连续方式,一般是对外操作的通讯指令,例如MSG指令。选择不连续方式时,梯级条件跳变一次,指令执行一次;选择连续方式时,指令被触发后,即使梯级条件消失或不跳变,仍可以连续执行。

输出指令的执行是具体操作的动作,但这种执行动作与输入指令的存续有很大的关系,也即级条件将决定输出指令的执行。

值得指出的是,在PLC-5/SLC500的梯形图编程中,这种梯级的输入指令和输出指令的关系是十分严格的,一个梯级只有一对输入指令和输出指令的关系。但是在ControlLogix 控制器的梯形图编程中,已经变得非常灵活,可以在同一个梯级中编写含有好几个梯级条件的指令集合。尽管如此,输入指令和输出指令之间的对应关系仍然是非常明确的,在逻辑因果关系较为复杂的情况下,建议采用传统的方式去编写。

 

2.数据的刷新时间与程序执行的关系

ControlLogix 控制系统编写程序时,往往按照工艺流程的逻辑关系编写的梯形图程序,运行下来,却有不可思议的逻辑问题,反复检查,都不是梯级或指令的逻辑错误,这是为什么呢?这跟运行时的数据状况有关。

传统的可编程序控制器的工作周期由输入扫描、程序扫描和输出扫描三个阶段组成,输入扫描刷新了所有的输入映象表;程序扫描则根据最新输入数据按编制好的梯形图逻辑执行,产生最新控制结果,即刷新输出映象表;输出扫

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:33:02
30楼

描刷新所有的输出模块。这个过程是非常清晰和明确的,开发者很容易按工艺过程编写逻辑关系而不至于产生混乱,因为在整个程序扫描过程中,输入数据是不发生改变的。

ControlLogix 控制系统的I/O数据交换是生产者/用户方式,I/O模块不再是被动的数据承受者,而是主动的数据产生者,它们按照定义的中断时间发送或接受数据,I/O数据的刷新时间完全地独立于程序扫描。在控制器中,有两个CPU同时工作,一个分管逻辑程序的扫描,一个分管对外的数据交换,程序扫描和I/O交换是分别进行的,是相互独立的,完全有可能在程序扫描的过程中,输入数据发生了变化,而在梯形图程序中多次引用了同一输入数据。解决这个问题的办法是,在程序的起始梯级拷贝输入数据到一个数据缓冲区,整个程序扫描过程只引用缓冲区的数据;所有的控制结果是在每个任务完成后系统管理操作一次送到输出模块,不必编程拷贝。 

 

3.指令执行与数据

传统的可编程序控制器PLC-5/SLC500地址数据的基本单位是16位的字,如N7:0;可以细化到位,如N7:0/0;也可以扩展成文件,如# N7:0。相应的操作指令是字(或子元素)操作指令、位操作指令、文件操作指令。

ControlLogix 控制系统的地址数据是基本数据,如BOOLSINTINTDINTREAL;或是系统定义的结构数据,如TIMERPID;还有用户自定义结构数据。在编写指令地址数据时,往往有多种选择,要根据指令的性质来确定使用哪一种类型的数据,或者根据被操作的数据的类型来选择使用哪一种指令,比如COP指令和FAL指令处理数据的能力就很不一样。所以,使用每一条指令时,都要仔细地研究它的参数可以使用哪几种类型的数据,当源数据目标数据类型不一致时,指令执行将产生什么样的结果。在参考ControlLogix 控制系统的指令集时,请特别留意每条指令使用的数据类型,这项内容通常列表以方便查找。

 

一.  控制器指令的应用

ControlLogix 控制系统的指令介绍,此处着重于指令的应用,而不是解释指令,请结合《Logix5550控制器指令集参考手册》一书学习。

1、位操作指令

又称为继电器指令,专门用来处理离散量信息,用它来编制开关量信号的逻辑关系,梯形图程序的大部分都是这些指令构成的。

1-1  位输入指令XICXIO

  • XIC  常闭输入指令   构成梯级条件的逻辑元素,为1时通。

                                       

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:34:34
31楼
  • XIO  常开输入指令   构成梯级条件的逻辑元素,为0时通。

                                         

1-2  位输出指令OTEOTLOTU

  • OTE  非保持型输出指令   梯级条件存在为1,梯级条件不存在为0

                                         

  • OTL  保持型锁存输出指令  必须与OUT指令配对使用,通常与ONS配合运用。

                                       

  • OUT保持型解锁输出指令  一般与OTL指令配对使用,单独使用时,用来复位状态锁存位,通常与ONS配合运用。

                                         

        注意,位操作指令的操作地址必须是位地址,即BOOL量或SINTINTDINT中的某一位,亦可为I/O模块的一个点。

1-3  一次启动指令ONSOSROSF

  • ONS  一次扫描有效存储指令   不能单独使用,必须跟随在某个级条件之后,级条件前沿触发后令级条件保持一个扫描周期,并储存状态,直到级条件后沿复位,存储位随即复位。分配给这条指令的地址即用于存储位,应该使用内部地址。这条指令非常有用,特别是配合锁存解锁指令的运用。比较下面两对梯级:

                        

这一对梯级,没有ONS指令,当解锁的级条件没有消除时,无法进行锁存操作,总是以后一级的状态为准。  

                          

这一对梯级,因为ONS指令控制,两个梯级相互是独立的,锁存和解锁的操作可以随意地进行。

ONS指令的运用,可以使控制逻辑编得很精确,也可以对外部开关或外部操作不作特殊要求,而用编程来解决。传统的自锁梯级编程,可用锁存解锁指令与ONS指令配合使用来代替,对于搜索锁存信息更为方便。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:36:55
32楼
  • 上升沿一次启动OSR

严格的说,这条指令不是对位操作的指令,但它产生的结果是对位操作。这是一条输出指令,当级条件成立时触发,即前沿触发,设置输出位,这个输出位,可作为某个梯级的存在一个扫描周期的级条件。

                                    

  • 下降沿一次启动OSR

与上条指令对应的一条指令,它也这是一条输出指令,当级条件消失时触发,即后沿触发,设置输出位,这个输出位,可作为某个梯级的存在一个扫描周期的级条件。

                                      

 

2、计时器和计数器指令

2-1 计时器指令

计时器指令是输出指令,位于梯级的右边,当级条件成立时,指令被使能,指令开始计时工作。通常计时器指令是用于完成延时、定时和计时的功能

             计时基值:  1ms

             计时范围:  1 --- 2,147,483,647 ms 

        计时器的精度与其指令所在程序的扫描周期有关,当某个执行动作周期时间小于100ms时,建议采用定时中断执行子程序,而不要用计时器控制动作。

有三种计时器:

  • 非保持型通延时计时器 TON   级条件成立(),指令使能,计时;级条件消失(),指令未使能,累加值(ACC)复位,所有状态位复位。

                                   

  • 非保持型断延时计时器 TOF  级条件成立(),指令使能,计时;级条件消失(),指令未使能,累加值(ACC)复位,所有状态位复位。

                                  

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:39:45
33楼
  • 保持型通延时计时器 RTO    级条件成立(),指令使能,计时;级条件消失(),指令未使能,累加值(ACC)不复位,所有状态位复位。

                              

非保持型的计时器常常用作于定时,利用自身状态位DN做级条件,可令其自复位,从而产生定时工作脉冲。

        

 

2-2 计数器指令

计数器指令是输出指令,位于梯级的右边,当级条件发生跳变时,指令使能,并产生加1或减1的操作,计数器指令通常用来计数。

                计数范围:-2,147,483,648 --- 2,147,483,647

  有两种计数器:

  • 增计数器  CTU   级条件跳变一次,累加值增加1,不管状态位(完成位DN或上溢出位OV)是什么状态,都不会停止增计数。

                                     

  • 减计数器  CTD   级条件跳变一次,累加值减去1,不管状态位(完成位DN或下溢出位UN)是什么状态,都不会停止减计数。

                         

如果要实现双向计数,不妨编制两条计数器指令,它们修改共同的数据元素ACC

                     

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:41:54
34楼

注意,与计时器不同,计数器指令的状态位DNOVUN,不管它们是什么状态,都不影响计数的进行,计数器的计数只取决于级条件的跳变。

2-3 复位指令

复位指令RES可给保持型的指令RTOCTUCTD复位,复位操作将累加值和状态位统统复零。好的编程习惯是:将所有的复位操作统统放在程序的最后几级。

          

 

2、比较指令

比较指令都是输入指令,用以决定梯级的条件,在编写梯形图程序时,往往都是面对工艺过程的逻辑关系,有以下几种比较类型:

1>      单一比较指令

EQUNEQ GEQGRTLEQLES都是完成单一比较的指令,每条指令只对两个比较对象进行比较。

2>      表达式比较指令

表达式比较指令CMP,比较对象可以是算逻运算表达式,用比较连接符进行比较。

3>  屏蔽比较指令

屏蔽比较指令MEQ,两个比较对象通过屏蔽代码位对位地进行比较。

 

  • 完成范围比较的指令LIM,测试数值落在范围内或落在范围外。操作对象的数据类型限于SINTINTDINTDEAL,最优化的比较值是32位的数据DINTREAL

 

3、算术/逻辑运算指令

算术/逻辑运算指令都是输出指令,属于非保持型指令,当级条件成立的时候执行,也可以无条件执行,有以下两种类型的运算方式:

  • 完成单一运算的指令,如ADDSUBMULDIVSQRNEGANDORXORNOTSINCOSTANASNACSATNLNLOGXPY
  • 完成表达式运算的指令,CPM,可用算逻运算符连接的表达式进行运算。

每次运算结束,都会影响算逻运算标志位,其关键字为:

S:V    溢出标志位,目标地址发生溢出,置位,且次要故障置位。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:44:48
35楼

S:Z    为零标志位,目标地址为零,置位。

S:N    符号标志位    目标地址为负,置位。

S:C     进位标志位    目标地址发生进位,置位。

这四个关键字是为数不多的几个直接寻址,不用建立标签旧可直接引用。

操作对象的数据类型限于SINTINTDINTDEAL,最优化的运算值是32位的数据DINTREAL

当级条件存在时,每次程序扫描都会执行算术/逻辑运算指令,如只需要在满足条件时计算一次,最好采用ONS指令,从而节省程序执行时间。

算术/逻辑运算指令的运用,一般地说,符合运算的常规,但在ADD指令作累加器使用时,要特别注意它的执行条件。

 

2、传送/转换指令

传送/转换指令都是输出指令,在级条件成立的时候执行。

 

  • 传送和带屏蔽传送指令,MOVMVM
  • 位域分配指令,BTD,可完成数据单元内传送和数据单元间传送,该指令的操作,可改变一段位域的位置。
  • /数转换指令,TODFRD,码制(BCD码)和数制(十进制)之间的转换,使用时请注意,码制是不可运算的,所以常常需要进行转换。
  • 角度/弧度的转换指令,DEGRAD,角度和弧度之间的相互转换。
  • 清除指令,CLR,清除目标单元数据,令其为零。

 

                    

3、数组(文件)操作指令

以上讨论的指令都是对元素的操作,相似于PLC-5/SLC指令系统的文件操作指令,ControlLogix  指令系统中有一些指令是对数据连续存储的数组进行操作。下面要学习的指令是数组(文件)操作指令,它们的操作对象是数据连续存储的数组,一般地,操作方式有以下三种:

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:47:32
36楼

 

数组操作指令FALCOPFLLFSCAVESRTSTD

6-1    数组(文件)算逻运算指令  FAL

 这条指令是一条处理功能很强的指令,它既可以运算,也可以传送和转换。不同于COP指令的是,它可以对结构型数据的单个元素完成数据连续存储的数组的操作,处理方式非常灵活,它的执行过程有三种操作模式可选择:

--- 整体模式   级条件跳变激活指令后,指令一次完成所有的操作,一般

     用于数组对数组的操作。Mode项输入ALL

--- 数值模式   级条件跳变激活指令后,每次扫描完成指定的操作个数,

多次扫描指令才执行完毕,即使在执行过程中,级条件消失,仍然要    

完成全部的操作,一般用于数组对数组的操作,其操作结果相似于整 

体模式,不同的是,将一条指令的操作分担给几个扫描周期,此方式

适合该条指令执行工作量很大的情况。Mode项输入正整数。

           --- 增量模式   级条件跳变一次执行一次,跟SQO指令相似,一般用于数

                 组对元素的操作。Mode项输入INC

 

编写FAL指令有以下几点要注意:

·         FAL指令的执行必须有级条件的跳变,受COP指令的影响,常常被人忽视这一点,以至于出现指令不执行的错误。

对基本类型数据的数组操作时,数据地址使用被操作范围的第一个元素(和其他数组操作指令一样);对结构型数组的单个元素操作时,必须采用变址的方式寻找单个元素的地址。常用的方法是用控制结构体的POS来进行修改(ALL方式必须如此,其他方式则可以用指令在外部修改),因为POS

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:50:20
37楼

·         是从0开始计数的,所以当第一个被操作元素不是数组的0地址时,必须加上偏移量,如:Array_Timer【Control_FAL.POS+2】.ACC

 

6-1     数组(文件)复制指令COP CPS

COP指令的执行是存储器从字节到字节的直接复制,即存储空间的对应搬运,通常是数组对数组的操作,源操作数和目标操作数如果不是相同类型的数据,要特别注意指令参数中的长度即指目标地址的元素个数,如下面这条指令:

                                   

Driver_1  是一个占用40个字节的用户自定义的结构体,如果要COP到双整数数组,必须用10个元素(40个字节)来接受;源操作数和目标操作数反过来,则长度应为1

                                 

 

正因为COP只是存储空间之间的直接搬运,所以,不可以对结构体数组中结构体元素中的单个元素进行操作,要完成这种操作,只能用FAL指令。

        CPS指令是同步拷贝指令,特别用于从基本内存的数据缓存区拷贝到内部数据区,这条指令具有屏蔽中断的功能,在拷贝过程中,背板CPU不能中止它的执行过程,因而能获得完整的数据,在不允许一个数据块新旧数据混杂时,采用这条指令。

                                       

此例是对一个10个双整字的数组Consumed标签进行同步拷贝。

 

6-2    数组(文件)充填指令 FLL 

这条指令是用源地址的元素充填目标地址的数组,指令参数中的长度是目标地址的字节数,指令的的执行通常用作于数组的初始化。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:52:01
38楼

6-1    数组(文件)搜索比较指令FSC 

对表达式中建立的比较关系和比较对象进行比较,找到满足比较关系的元素时,找到位FD置位,POS则指出找到的元素所在位置,同时禁止位IN也置位,以防止往下搜索,当IN复位后,搜索继续。

6-2      数组(文件)平均值计算指令  AVE 

计算指定数组内的元素组的平均值。数组的参数应填写被计算元素组的第一个元素,长度的参数应填写参加计算的元素的个数,计算结果必为双整数或实数。

6-3    数组(文件)排序 SRT  

对指定数组内的一维数组的元素的数值进行递增的排序,数组的参数应填写被排序元素组的第一个元素,长度的参数应填写参加排序的元素的个数。

6-4     数组(文件)标准偏差指令 SDT

对指定数组内的一维数组的元素进行标准偏差的计算,数组的参数应填写被计算元素组的第一个元素,长度的参数应填写参加计算的元素的个数,计算结果必为实数。

 

7.   寄存器移动指令

     这一组指令是在存储器单元进行移动操作的,且必须是级条件跳变才执行。7-1   位移指令  BSLBSR 

位左移和位右移指令,其操作对象必须是双整数而不是BOOL数组,参加移动的第一个位必须是元素的0位; 参加移动的最后一位的元素的剩余的高位均为无效地址,不能用作其他。

7-2    先入先出指令  FFLFFU

队列操作,必须成对使用,因操作关连,共用同一个控制文件。FFL在级条件跳变时,POS1,装载数据到POS所指元素;FFU在级条件跳变时,卸载最前面的数据,同时全体数据前移,POS1。完成位置位,不能继续装载;栈空位置位,不能继续卸载。

7-3     先入后出  LFLLFU

堆栈操作,必须成对使用,因操作关连,共用同一个控制文件。LFL在级条件跳变时,POS1,装载数据到POS所指元素;LFU在级条件跳变时,卸载最后面的数据,POS1。完成位置位,不能继续装载;栈空位置位,不能继续卸载。

 

8.  顺序器指令

8-1      顺序器输出指令SQO 

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:53:37
39楼

将预先设置好的输出状态存放在顺序器数组中,按级条件跳变顺序地输出,与FAL指令递增方式的操作相似,但可利用0步来解决初始化问题。

8-1     顺序器装载指令SQL 

       通过该指令,可让操作员修改顺序器数组,尽管SQLSQO有共同的操作对象---顺序器数组,但因为操作不关连,不可以用相同的控制器文件。

8-2    顺序器输入指令SQI 

        这是一条特殊的指令,它完成某输入量对参考数组的比较,是一条输入指令,比较结果将产生级条件。因为是输入指令,没有级条件触发来修改位置参数,所以,有时跟SQO指令配合使用,用同一个控制器文件,此时,往往用于校验SQO的输出;也可以编程在外部修改

 

 

9.  程序控制指令

程序控制指令的执行将使得程序的执行顺序或执行状况发生改变,可用来编排按满足条件执行程序;有些指令在调试程序时非常有用。

9-1     跳转指令 JMP和标号指令LBL 

成对使用,每对用同一名称,书写方式同标签。跳转的执行将改变程序内梯级的执行顺序,可以向前跳转,也可以向后跳转,发生向后跳转时,要防止程序死循环,当程序死循环发生时,程序的看门狗超时引起故障。

9-2       跳转子程序指令JSR、子程序指令SBR和返回指令RET  

跳转子程序指令的执行将调用除主控的子程序和故障处理子程序以外的子程序(嵌套层数不受限制),执行完后仍回原处。只有在要带入和带出参数(不受限制)时,SBRRET(可多条)指令才会需要使用;当不需要带入参数时,用ENTER键来结束,以跳过带入带出参数选项。

9-3     暂停指令 TND 

每个梯形图的最后一级都是END,即结束级,检测到END便停止程序扫描,如果在程序中间的某一个梯级写下这条指令,则程序扫描将暂时结束在这一梯级,通常在调试程序时使用。

9-4     主控复位指令 MCR  

MCR的成对使用来创建一个区域,在满足条件时令该区域的梯级无效,且非保持型指令复位。

  --- MCR成对使用,有条件开始,无条件结束。

 --- MCR构成的区域不能嵌套。

  --- 不能跳转到MCR区域中。

墨之殇

  • 精华:16帖
  • 求助:7帖
  • 帖子:395帖 | 4077回
  • 年度积分:102
  • 历史总积分:26826
  • 注册:2011年8月26日
发表于:2011-12-10 21:55:11
40楼

注意:MCR区域的控制和子程序的调用是不一样的,主要表现在MCR的后扫描将复位所有的非保持型指令的数据,而JSR执行完毕后,数据是保持不变的。

 

9-1    中断禁止指令UID和中断使能指令UIE 

这两条指令要成对使用,当某一个梯级编写了UID指令,在这之后的梯级执行都不能被定时中断或事件中断调用,直到出现了UIE指令,禁止中断才被解除,通常被用于半途的执行结果不便在调用任务后输出,限定一个完整的执行过程。

 

9-2    恒假指令AIF  

设置在梯级的最前面,该梯级即被禁止,调试程序时用。

                                

 

9-3     空操作指令  NOP

可放置在梯级任何地方,执行空操作,如与输入指令分支并接,即旁路输入指令为无条件。

                                

9-4     循环/终止循环指令 FORBRKRET

FOR指令的执行将调用一个重复执行的子程序,直到按步长执行到终止值,才返回到中断点;含在子程序中的BRK可在满足某个条件时,中断正在重复执行的子程序,返回到中断点。这种循环方式的子程序调用是不能带入参数和用RET返回参数的。

 

10.特殊指令 FBCDDTDTRPID

10-1数组(文件)位比较指令 FBC  

本条指令的执行是将源数组和参考数组位对位(存储器的操作)地进行比较,发现不同时,将结果记录在结果文件中。这条指令有两个控制结构体:

  • 比较数组的控制结构体   记录比较的状态,每当找到一个不匹配的位,找到位FD置位(每次记录一个不匹配模式);所有的位比较完毕,存在有不匹配位,找到位FD置位(整体模式)。该长度设置指的是参加比较位的数量。

热门招聘
相关主题

官方公众号

智造工程师