第3章 罗克韦尔ControlLogix编程_第1页
第3章 罗克韦尔ControlLogix编程_第2页
第3章 罗克韦尔ControlLogix编程_第3页
第3章 罗克韦尔ControlLogix编程_第4页
第3章 罗克韦尔ControlLogix编程_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 罗克韦尔controllogix编程,3.1 controllogix编程语言,3.2 数据描述与数据类型,3.3 数据结构,3.4 应用程序的结构,3.5 常用指令系统,3.1 controllogix编程语言,3.1.1 编程语言简介 1编程语言 (1)梯形图ld(ladder diagram) 梯形图ld是一种图形语言,直观易懂,是最常采用、应用最广泛的编程语言之一。 (2)结构文本st(structured text) 结构文本st类似于计算机高级语言,符合iec61131-3标准,使用由操作符和操作数组成的表达式结构,描述功能、功能块、程序的行为,在执行表达式时会返回值。 (

2、3)功能块图fbd(function block diagram) 功能块图fbd使用类似于布尔代数的图形逻辑符号来表示控制逻辑,组态过程控制,是引入dcs系统的仪表控制组态方式,由功能块之间的连接建立程序结构。 (4)顺序功能图sfc(sequential function chart) 顺序功能图sfc类似于顺序控制的流程图,将工作流程细化到步,提供全部的结构且协调面向批处理的过程。,3.1.1 编程语言简介,2编程语言的选用与相互转换 controllogix系列plc的编程语言各有特色,一般情况下,如果程序没有错误,并且被正确地划分为程序段,则编程语言之间可以相互转换。,3.1.2 梯

3、形图ld,1梯形图程序的逻辑结构 梯形图程序是由指令构成的逻辑梯级集合而成的,而逻辑梯级的结构则由输入指令和输出指令两部分组成,如图3-1所示。,3.1.2 梯形图ld,输入指令的运行,并不直接执行某种操作的动作,但都会得到逻辑结果,这就是梯级条件,它决定要不要执行指令。梯级条件逻辑上存在两种脉冲形式,如图3-2所示。,输出指令的执行是具体操作的动作,但这种执行动作与输入指令的存续有很大的关系,输入指令和输出指令之间的对应关系是非常明确的,即梯级条件会决定输出指令的执行状况。,3.1.2 梯形图ld,2梯级运行条件 梯形图的并列分支层数没有限制。图3-3显示的是一个5层并列分支,第一层分支是主

4、梯级,后面跟着4个附加分支。,3.1.2 梯形图ld,梯形图嵌套的分支最多可以为6层。图3-4显示的是一个嵌套分支情况,底部输出指令在一个3层深度的嵌套分支上。,3.1.2 梯形图ld,3梯级预扫描和后扫描 (1)预扫描 预扫描的执行条件是: 程序从编程状态切换至运行状态; 从上电状态自动切换到运行状态。 预扫描的主要内容包括: 扫描所有的主程序; 扫描所有设备阶段的状态程序和预状态程序; 扫描程序和设备阶段的所有子程序,但不会重复预扫描; 扫描所有的for调用的子程序; 不按照跳转指令指向的顺序; 按照预扫描方式执行的所有指令; 将所有非保持型指令复位到0状态; 不刷新输入数据,且不输出数据

5、。,3.1.2 梯形图ld,(2)后扫描 后扫描的执行条件是: 当mcr指令结束区域控制时; 当设备阶段的状态程序转向下一个状态时; 当sfc步的转换条件成立,离开激活步时。 后扫描的主要内容包括: 扫描条件不成立的mcr区域; 扫描所有未激活的设备阶段状态程序; 扫描所有未激活的sfc步; 按照后扫描方式执行的所有指令; 每个梯级都被扫描,但梯级条件永远不成立; 将所有非保持型指令复位到0状态; 刷新输入数据,但有可能被梯级条件否认; 输出虚拟数据。,3.1.2 梯形图ld,4数据刷新时间与程序执行的关系 传统plc的工作周期由输入扫描、程序扫描、输出扫描三个阶段组成。输入扫描刷新所有的输入

6、映像表;程序扫描则根据最新输入数据,按照编制好的梯形图逻辑执行,产生控制结果,即刷新输出映像表;输出扫描刷新所有的输出模块。在这个过程中,输入数据是不发生改变的。 5梯形图编程的主要侧重点 连续的操作或没有顺序的多个操作并列执行; 布尔量或位操作,可简单使用继电器指令; 综合复杂的逻辑操作; 信息处理或通信处理(msg指令); 解决生产现场机器的联锁关系,充分体现明确的逻辑关系; 维护维修人员的操作可能检查出机器或生产过程的故障; 伺服控制,可明确运动控制指令的执行顺序。,3.1.3 结构文本st,1赋值语句(assignment) 赋值语句的语法如下: tag := expression;

7、标签数据类型必须为bool、sint、int、dint、real类型。 2表达式(expression) 表达式可以包括以下内容: 用于存储数值的标签名,即变量; 立即数,即常数; 函数; 运算符。,3.1.3 结构文本st,运算符的运算优先级如表3-1所示。,3.1.3 结构文本st,3指令(instruction) 指令是一个标准语句,使用圆括号包含其操作数。根据指令的不同类型,运行时,指令可以产生一个或多个数值。 指令在每次被扫描且结构条件为真时执行,如果结构条件为假,就不执行该结构内的语句。 4结构(construct) ifthen 当特定条件发生时,执行操作。 caseof 根据数

8、值选择执行的操作。 fordo 根据指定的次数重复执行操作,然后再执行其他操作。 whiledo 当条件为真时,重复执行操作。 repeatuntil 直到条件为真,否则重复执行操作。,3.1.3 结构文本st,5注释(comment) 当添加注释内容时,使用的注释格式是: (*注释内容*) 或 /*注释内容*/ 当添加的注释内容是单独一行时,使用的注释格式是: /注释内容 6结构文本编程的主要侧重点 复杂的非常规算术运算; 专用数组或循环处理表格,其他编程方式不能处理的数组和表格; ascii字符串处理或协议处理,适用于文字表达的模式。,3.1.4 功能块图fbd,功能块编程主要用于过程控制

9、,侧重于以下应用范围: 连续过程,功能块组态连接信息流向,使控制具有连续性; 驱动控制,专用于驱动控制要求; 闭环控制,专用于较复杂的闭环控制要求; 流量计算,专用的累加器功能块满足控制要求。,3.1.5 顺序功能图sfc,顺序功能图编程主要用于工艺步骤分明的控制要求,侧重于以下应用范围: 多个操作的高水平管理,严格控制执行步骤; 反复的操作顺序,可反复扫描活动步的执行逻辑; 大量重复操作的批量处理; 运行控制顺序(具有内嵌结构语句的功能块),准确协调执行顺序; 控制机械操作进程状态。,3.2 数据描述与数据类型,3.2.1 数据描述 数据是计算机所表示的信息总称,它可以分为数值数据和非数值数

10、据两种。数值数据包括整数、小数,既可以是正数,也可以是负数。 数据以某种特定的形式存在,数据类型决定了数据的属性。不同的数据之间往往还存在某些联系。 数据类型为数据说明数据结构、数据格式、数据行为等,用于定义标签使用的数据位、字节或字的个数。,3.2.2 数据类型,1基本数据类型 (1)基本数据类型 二进制格式的数据类型是指单一数据类型。一个二进制格式的数据由一位或者多位组成,其中的每一位都用两个基数(0或1)表示。数据的大小由其位数决定,如图3-5所示。,3.2.2 数据类型,单个的十进制数需要用4位二进制数进行编码,为了用bcd码表示十进制数的09,使用与二进制数相同的表示方法,如图3-6

11、所示。,3.2.2 数据类型,例如,对十进制数“2350”用16位编码,如表3-2所示。,例如,对十进制数“58293016”用32位格式编码,如表3-3所示。,3.2.2 数据类型,controllogix plc系统的基本数据类型如表3-4所示。,3.2.2 数据类型,例如,1024可以表示为1.024e3。实数占用存储器的2个字,最高位是符号位,其余的位代表指数和尾数。浮点数为1.m2e,其存储结构如图3-7所示。,3.2.2 数据类型,controllogixplc系统数据处理和传送的基本单元是32位。当数据类型为bool、sint、int,被分配给一个标签时,控制器仍然占了一个完整的

12、4字节dint,剩余部分则被闲置,如图3-8所示。,3.2.2 数据类型,(2)基本数据类型的优点 名称是独立的; 标签的数量没有限制; 标签编辑器(edit tags)和数据监视(monitor tags)可以任意选择标签并显示任何参数; 允许在标签编辑器和数据监视中按字母排序显示; 标签及其他的位都可以支持别名; 在线编程时可以增加。 (3)基本数据类型的注意点 每个标签都要消耗4字节; 需要消耗较多的通信管理和控制器内存; 在线时不可以改变标签的数据类型。,3.2.2 数据类型,2结构数据类型 (1)系统预定义结构数据类型 i/o模块组态时产生的i/o数据。 功能块(过程控制)的数据结构

13、。 系统组态信息和状态信息。 (2)自定义结构数据类型 字符串自定义数据结构。 用户自定义数据结构udf。 aoi自定义指令。,3.2.2 数据类型,3数组 (1)数组类型 数组是同一数据类型的连续分布的集合,可由基本数据类型和结构数据类型构成。 (2)数组类型和结构数据类型的优点 允许特定的名称和用户自定义的结构; 在控制器中固定信息; 控制器内存占用冲突得到解决,且通信时间得到优化; 能够动态地索引数组; 在线编程可以创建新数组。,3.2.2 数据类型,(3)数组类型和结构数据类型的注意点 每个用户自定义的结构或数组限于2mb; 用户自定义的结构充满32位整倍数的空间; 数组中的数据元素只

14、能被基本标签指向; 标签编辑器(edit tags)和数据监视(monitor tags)的筛选有限; 只有在离线时才能创建或改变结构数据类型和数组类型的结构; 在结构里面的数组只可以是一维数组; 用户自定义结构的子元素不能超过500个,如果需要更多,可以采用嵌套的形式,即子元素本身就是自定义结构; 要用于通信的用户自定义结构也有限制,produce/consume的标签,通过背板的不超过500b,通过controlnet网络的不超过480b; i/o数据要放入结构中,只能使用cop指令,注意数据类型要保持一致,以避免数据转换; 当需要在程序开始时将输入数据装载在结构数据中,在程序结束时将结构

15、数据装载到输出数据中,这时,要用合适的指令把数据装载到结构数据里,单一的位用xic指令和ote指令,连续的位用btd指令,单一的量用cop指令,连续的量用cps指令。,3.2.2 数据类型,4不同数据类型的内存占用和时间消耗情况对比 例如,在1756-l63控制器中执行一条add指令,使用不同数据类型的消耗情况如表3-5所示。,3.3 数据结构,3.3.1 controllogix控制器程序文件结构 logix5000控制器实时多任务系统内核图如图3-9所示。,3.3.1 controllogix控制器程序文件结构,1任务 连续型任务是指周而复始执行的任务,在后台运行。 周期型任务是指定时中断

16、执行的逻辑程序,周期性地执行任务,必须定义周期时间。执行周期默认值是10ms,选择范围是0.12000ms。 事件触发型任务是指事件触发引起的任务调用,事件触发可以是由外部输入点变化引起的,如数字量输入触发或模拟量的新采样数据,也可以是由consuned tag引起或直接由指令调用引起的,还可以由运动控制状态引起。,3.3.1 controllogix控制器程序文件结构,例如,项目中有3个任务,分别是1个事件触发型任务、1个周期型任务、1个连续型任务,如表3-6所示。,3.3.1 controllogix控制器程序文件结构,任务执行情况如图3-10所示。,3.3.1 controllogix控

17、制器程序文件结构,2程序 程序是第二层的组织结构,由一个数据库和多个子程序组成。每个程序都有一个独立的数据库,在这个数据库建立的数据标签只能被本程序内的子程序引用,而且都是内部数据。 3子程序 子程序是真正的执行程序,所有的控制程序都被编写在子程序中。,3.3.1 controllogix控制器程序文件结构,4故障处理子程序和上电程序 故障处理子程序一般用来编写清除故障的恢复程序。在本程序内由于指令执行产生的错误,或本程序引用的i/o连接故障,都有可能引起停机,定义的故障处理子程序是停机之前要调用的子程序,若能在这个子程序中清除可恢复故障的错误代码,就可以避免停机。 5删除子程序、程序和任务

18、删除子程序的所有执行代码; 选定子程序并删除它们; 删除程序区域的所有标签; 选定程序并删除它们; 最后删除任务。,3.3.2 controllogix控制器程序文件规划,1任务确定的原则 大部分执行代码都应该放在连续任务中; 长时间才操作一次的执行代码或要求时间精确处理的操作,采用周期类型的任务; 特定的事件需要同步执行的代码采用事件触发类型的任务,这类任务每触发一次只执行一遍; 任务的个数不要太多,否则可能导致维护困难; 为了改善系统性能,有的任务的输出处理应该取消,不需要执行的任务可以屏蔽。,3.3.2 controllogix控制器程序文件规划,2任务的优先级 controllogix

19、控制器是一个多任务的处理器,当多个任务同时请求工作时,优先级高的任务先处理。控制器任务的优先级如图3-11所示。,3.3.2 controllogix控制器程序文件规划,不同优先级的任务执行时相互中断的过程如图3-12所示。,3.3.3 系统高层管理,1系统高层管理的作用 controllogix系统高层管理时间主要是耗费在信息通信和后台任务的时间。这里的信息通信不是在i/o组态中预先设定的,而是外部访问的通信。例如,外部另一个控制器发出的msg指令,只有在周期任务和事件中断任务都不能执行的情况下,信息通信才可以进行。 2系统高层管理的主要内容 控制器与编程终端和人机界面的通信; 控制器发出的

20、msg指令; 控制器响应外部的msg指令; 串口信息和指令处理(如ascii码)。,3.3.3 系统高层管理,系统高层管理和执行代码扫描的工作是同一个cpu实现的,如何分配这两者之间的工作关系,如图3-13所示。,3.3.4 controllogix控制器数据文件结构,1控制器的数据区域 全局数据区域,又称为控制器数据区域,它含有全部的对外数据和公用的内部数据,其数据可被控制器内所有的子程序引用。 程序数据区域,全部为内部数据,其数据只能被本程序内的子程序引用。各程序之间的数据区域是隔离的,以防止标签命名的冲突。 2数据库标签建立的基本原则 尽可能短地建立描述性的标签名称; 标签名称存放在控制

21、器中,并且要占用内存空间; 每个字符使用一字节的控制器内存,每个标签耗用的字节都是4字节的整数倍,如标签实际使用了10字节,但将耗用12字节的内存空间; 使用结构数据,将节省标签的数目和尺寸大小; 程序上传可以带回标签的名称,但没有注释。,3.4 应用程序的结构,3.4.1 程序循环执行 cpu的循环扫描包括3个主要部分: (1)cpu检查输入信号的状态并刷新过程映像输入表; (2)执行用户程序; (3)把过程映像输出表的值写到输出模块。,3.4.2 应用程序结构设计,应用程序结构设计通常有3种方法:线性化编程、模块化编程和结构化编程,如图3-14所示。,3.4.2 应用程序结构设计,1线性化

22、编程 对于线性化编程,在设计一个控制过程时,采用线性化编程的步骤如下: (1)描述过程的具体任务; (2)把任务分解成输入任务和输出任务; (3)确定每个任务的输入和输出; (4)编制每个任务的程序,直到完成所有的任务。 2模块化编程 模块化编程是把程序分成若干个程序块,每个程序块含有一些设备和任务的逻辑指令。 主程序中的指令决定控制程序模块的执行。模块化程序段控制不同的过程任务,这些块相当于主循环程序的子程序。,3.4.2 应用程序结构设计,3结构化编程 【例3.1】 食品加工工艺。在选择产品添加剂时,需要决定哪个罐的成分加到混合罐内。由于罐的控制具有相似特点,可以建立一个任务,用于选择产品

23、。在选择开关的基础上,任务段调用相应的程序块,分配当前的参数,控制混合罐的流入量。 解决方案: 建立一个任务段控制罐的流出量。 为相关的任务段建立变量定义表,注意参数的设计和地址。 建立一个任务段,根据选择开关调用其他任务段。在结构化编程中,调用功能的处理与在模块化编程中一样。,3.4.2 应用程序结构设计,结构化程序设计如下: 确定哪些部件和操作应用于所有罐和相关控制中。 建立任务段完成所要求的控制。 建立任务段的变量定义表,以便于对要操作的罐和相关控制分配地址。 设计一个程序,根据选择开关调用任务段。,3.5 常用指令系统,1标准常开触点和标准常闭触点 例如,如果机器中的常闭触点不动作,过

24、程表中的信号状态为“1”,ld中用“常开触点”符号检查信号的“1”状态,当信号状态为“0”时,“常闭触点”的符号提供检查结果为“1”,如图3-15所示。,3.5 常用指令系统,2位逻辑指令 (1)常闭输入指令xic 常闭输入指令xic检查数据位是否为置位状态,为1时导通,梯级条件成立,如图3-16所示。,(2)常开输入指令xio 常开输入指令xio检查数据位是否为断开状态,为0时导通,梯级条件成立,如图3-17所示。,2位逻辑指令,例如,时序图如图3-18所示,编写成梯形图如图3-19所示。,2位逻辑指令,(3)非保持型使能输出指令ote 非保持型使能输出指令ote置位或清零数据位。当梯级条件

25、存在时,为1;当梯级条件不存在时,为0。其一直与梯级条件保持一致,如图3-20所示。,(4)保持型锁存输出指令otl 保持型锁存输出指令otl置位锁存数据位,必须与out指令配对使用,通常与ons指令配合使用。梯级条件只要存在一个扫描周期,位操作数即被锁存为1,如图3-21所示。,2位逻辑指令,(5)保持型解锁存输出指令out 保持型解锁存输出指令out解锁存清零数据位,一般与otl指令配对使用,通常与ons指令配合使用。单独使用时,常用做复位状态锁存位。梯级条件只要存在一个扫描周期,位操作数即被解锁存为0,如图3-22所示。,2位逻辑指令,(6)单脉冲触发指令ons 单脉冲触发指令ons、上

26、升沿触发指令osr、osf都是这样的一次启动有效型指令。 ons指令不能单独使用,必须跟在某个梯级条件之后,梯级条件前沿触发后保持一个扫描周期,且存储已触发状态,直到梯级条件复位,存储位也随即复位为0。ons指令的作用相当于硬件电路中的微分电路,ons指令时序图如图3-23所示。,2位逻辑指令,(7)上升沿触发指令osr 上升沿触发指令osr根据存储位的状态置位或清零输出位。这是一条输出指令,当梯级条件成立时触发,即上升沿触发,设置输出位。 osr指令图如图3-24所示。,2位逻辑指令,指令时序图如图3-25所示。,2位逻辑指令,(8)下降沿触发指令osf 下降沿触发指令osf是与osr指令对

27、应的输出指令,当梯级条件消失时触发,即下降沿触发,设置输出位。 osf指令图如图3-26所示。,2位逻辑指令,指令时序图如图3-27所示。,2位逻辑指令,(9)按位与指令and 按位与指令and将输入值a和输入值b进行按位与运算,并输出结果。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-28所示。,2位逻辑指令,(10)按位或指令or 按位或指令or将输入值a和输入值b进行按位或运算,并输出结果。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-29所示。,2位逻辑指令,(11)按位非指令not 按位非指令not将输入值a和输入值b进行按位非运算,并输出结果。输入值

28、和输出值的数据类型必须是一致的。梯形图的表示形式如图3-30所示。,2位逻辑指令,先串联后并联的程序结构如图3-31所示。其特点是触点组先串联,再将整个触点组和其他触点或触点组并联。,先并联后串联的程序结构如图3-32所示。其特点与先串联后并联的次序正好相反。,2位逻辑指令,(12)按位异或指令xor 按位异或指令xor将输入值a和输入值b进行按位异或运算,并输出结果。输入值和输出值的数据类型必须是一致的。指令如表3-7所示。,2位逻辑指令,梯形图的表示形式如图3-33所示。,3计时器指令,(1)非保持型延时导通计时器指令ton 非保持型延时导通计时器指令ton是最常用的指令之一,主要用以延时

29、或定时,如图3-34所示。,3计时器指令,当梯级输入条件为真(导通)时,指令使能,开始计时,直到累加器值(.acc)大于等于预置值(.pre);当梯级输入条件消失(断开)时,指令未使能,累加器(acc)复位,所有状态位复位,利用状态位dn作为梯级条件,令其自复位,计时器循环进行,从而产生定时工作脉冲。时序图如图3-35所示。,3计时器指令,执行逻辑如图3-36所示。,3计时器指令,(2)非保持型延时断开计时器指令tof 非保持型延时断开计时器指令tof对应于ton指令,是满足负逻辑关系的计时器指令,当梯级输入条件为假时,开始累计。不但梯级条件要求负逻辑,动作dn也是负逻辑,如图3-37所示。,

30、3计时器指令,当梯级输入条件为假(断开)时,指令使能,开始计时,直到累加器值(.acc)大于等于预置值(.pre);当梯级输入条件消失(导通)时,指令未使能,累加器(acc)复位,所有状态位复位。时序图如图3-38所示。,3计时器指令,执行逻辑如图3-39所示。,3计时器指令,(3)保持型延时导通计时器指令rto 保持型延时导通计时器指令rto多用于时间累加,尤其是梯级条件间断型的时间累加,因为当梯级条件消失时,只复位状态位,累加值不复位。当梯级条件再次成立时,累加值会在原来累加值的基础上继续累加。复位rto指令可用res指令实现,如图3-40所示。,3计时器指令,当梯级条件成立(导通)时,指

31、令使能,开始计时;当梯级条件消失(断开)时,指令未使能,累加值(.acc)不复位,所有状态位复位。时序图如图3-41所示。,4计数器指令,(1)加计数器指令ctu 加计数器指令ctu,梯级条件跳变一次,cu被使能一次,累加值增加1,无论计数器状态位(完成位dn或上溢出位ov)是什么状态,都不会影响加计数,即计数器的计数只能通过梯级条件的跳变实现,不受计数器状态位的影响,如图3-42所示。,4计数器指令,如果指令被使能时cu位是清零状态,则ctu指令使计数累加值加1;如果指令被使能时cu位是置位状态,或指令被禁止,则ctu指令保持累加值(.acc)不变。时序图如图3-43所示。,4计数器指令,执

32、行逻辑如图3-44所示。,4计数器指令,(2)减计数器指令ctd 减计数器指令ctd,梯级条件跳变一次,cd被使能一次,累加值减1,无论计数器状态位(完成位dn或下溢出位un)是什么状态,都不会影响减计数,如图3-45所示。,4计数器指令,执行逻辑如图3-46所示。,4计数器指令,如果要实现双向计数功能,可以同时使用加计数器指令ctu和减计数器指令ctd,两条指令使用同一个计数器结构体,修改同一个标签的数据元素acc,如图3-47所示。,4计数器指令,例如,一条食品生产车间的传输带将食品送进包装箱内,每传输进一个食品,limit_box1就接通一次,计数器counter的累加值加1;每传输出一

33、个食品,limit_box2就接通一次,计数器counter的累加值减1。如果有包装箱内已有100个食品,counter.dn被置位,则conveyor接通,传输带停止传输食品,如图3-48所示。,4计数器指令,(3)复位指令res 复位指令res可以将保持型指令rto、rtu、ctu的结构体数据timer、counter和数组操作结构体数据control复位。复位指令res不仅将累加器值复位,而且将结构体的状态位都复位。通常在程序的最后安排复位指令res。,5比较指令,(1)单一比较指令 等于比较指令equ。 不等于比较指令neq。 大于比较指令grt。 大于等于比较指令geq。 小于比较指

34、令les。 小于等于比较指令leq。 (2)表达式比较指令 表达式比较指令cmp是复合式比较指令,用于比较表达式中指定的算术运算。指令的表达式可以是运算符、立即数和标签。如果表达式比较复杂,可以使用圆括号。,5比较指令,(3)屏蔽比较指令 屏蔽比较指令meq通过屏蔽字,位对位地比较两个数据,屏蔽字可以是地址,也可以是立即数,立即数的默认值是十进制数,如果要改用其他数制,则在数字前加相应的前缀16#、8#、2#。 meq结构体的寻址状态位如下。 使能位:bool数据类型,置位状态表示指令被使能。 源值(source):dint数据类型,要与参考值进行比较的数值。 屏蔽值(mask):dint数据

35、类型,定义要屏蔽的位。 参考值(compare):dint数据类型,要与源值进行比较的数值。 输出值(dest):bool数据类型,表示指令执行的输出结果。,5比较指令,例如,两个数值value1和value2,通过屏蔽后,如果相等,则置位light,灯亮;如果不相等,则清零light,灯灭。示意图如图3-49所示。,5比较指令,梯形图如图3-50所示。,5比较指令,(4)极限比较指令 极限比较指令lim检测被测数据是否在上限和下限之间。 当下限值小于上限值时,如果被测数据在范围之内,则梯级条件为真;如果被测数据在范围之外,则梯级条件为假。,6基本数学运算指令,(1)加法指令add 加法指令a

36、dd将输入值相加,并输出结果。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-51所示。,6基本数学运算指令,(2)减法指令sub 减法指令sub从sourcea的值中减去sourceb的值,并输出结果。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-52所示。,6基本数学运算指令,(3)乘法指令mul 乘法指令mul将输入值相乘,并将结果传给输出dest。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-53所示。,6基本数学运算指令,(4)除法指令div 除法指令div用输入值sourcea除以sourceb的值,并将结果传给输出dest。输入值和输

37、出值的数据类型必须是一致的。梯形图的表示形式如图3-54所示。,6基本数学运算指令,(5)求模指令mod 求模指令mod计算输入值sourcea除以sourceb的余数,并将计算结果的余数传给输出dest。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-55所示。,6基本数学运算指令,(6)平方根指令sqr 平方根指令sqr计算输入值source的平方根,并将计算结果传给输出dest。输入值和输出值的数据类型必须是一致的。梯形图的表示形式如图3-56所示。,6基本数学运算指令,(7)取负值指令neg 取负值指令neg改变输入值的符号,并将结果传给输出dest。梯形图的表示形式如图

38、3-57所示。,6基本数学运算指令,(8)正弦函数指令sin 正弦函数指令sin用于计算角度的正弦值,结果存储到dest中。 (9)余弦函数指令cos 余弦函数指令cos用于计算角度的余弦值,结果存储到dest中。 (10)综合计算指令cpt 综合计算指令cpt用于计算表达式中指定的算术运算。指令表达式的长度没有限制,如果表达式比较复杂,可以使用圆括号。,6基本数学运算指令,例如,当指令使能时,用cpt指令计算(value13)/(value2/5)的值,如图3-58所示。,7传输指令和逻辑指令,(1)传输指令mov 传输指令mov复制输入数值到dest,源输入数值保持不变。 (2)位域分配指

39、令btd 位域分配指令btd复制输入数值中的指定位,传送到指定位置,实现数据单元的移动。如果传输位字段超出目标长度,不保存超出位。 例如,当指令使能时,用btd指令传输source值到dest,如图3-59所示。,7传输指令和逻辑指令,指令将source的值从第3位开始的10个位传输到dest,如图3-60中,阴影部分表示被改变的值。,8数组综合指令,(1)文件算术与逻辑指令fal 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示fal指令被使能。 完成位(.dn):bool数据类型,该位置位表示指令已经处理完最后的元素(.pos=.len)。 错误位(.er):bool数据

40、类型,置位该位表示计算表达式时发生溢出。 长度值(.len):dint数据类型,指定fal指令操作的数组内元素的数量。 位置值(.pos):dint数据类型,指定指令正在访问的当前元素的位置。,8数组综合指令, 整体模式。 整体模式是在继续执行下一条指令前对数组内所有的指定元素进行的操作。这个操作从指令所在梯级的输入条件由假变换为真时开始。该模式一般用于数组对数组的操作,如图3-61所示。,8数组综合指令,结构体寻址状态位和操作指令之间的时序关系如图3-62所示,当指令完成时,完成位(.dn)被置位。,8数组综合指令,执行过程如图3-63所示。,8数组综合指令, 数值模式。 数值模式把对数组的

41、操作分配给多个扫描周期。这个操作从指令所在梯级的输入条件由假变换为真时开始。一旦被触发,则指令每次被扫描都执行,且经过多次扫描指令才能完成对整个数组的操作。 该模式一般用于数据量较大的操作或对时间要求不是很严格的应用,如图3-64所示。,8数组综合指令,结构体寻址状态位和操作指令之间的时序关系如图3-65所示,当指令完成时,完成位(.dn)被置位。,8数组综合指令,执行过程如图3-66所示。,8数组综合指令, 增量模式。 增量模式是当每次指令所在梯级输入条件由假变为真时,只处理数组内的一个元素,一般用于数组对元素的操作,如图3-67所示。,8数组综合指令,结构体寻址状态位和操作指令之间的时序关

42、系如图3-68所示,只有当梯级的输入条件由假变为真时,指令才执行一次,每执行一次,只处理数组内的一个元素。,8数组综合指令,执行过程如图3-69所示。,8数组综合指令,(2)文件搜索与比较指令fsc 文件搜索与比较指令fsc用于逐个比较数组内的元素。 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示fsc指令被使能。 完成位(.dn):bool数据类型,该位置位表示指令已经处理完最后的元素(.pos=.len)。 错误位(.er):bool数据类型,表示出现错误。 禁止位(.in):bool数据类型,表示检测到一个为真的比较,必须清零该位,才能继续比较。 发现位(.fd):b

43、ool数据类型,表示检测到一个为真的比较。 长度值(.len):dint数据类型,指定fal指令操作的数组内元素的数量。 位置值(.pos):dint数据类型,指定指令正在访问的当前元素的位置。,8数组综合指令,(3)文件复制指令cop与文件同步复制指令cps 文件复制指令cop与文件同步复制指令cps复制源数据值到目标值,源数据值保持不变。 文件复制指令cop与文件同步复制指令cps分别如图3-70和图3-71所示。,8数组综合指令,图3-70和图3-71中,输入参数source表示输入值,dest存储输出结果,length表示被复制到目的标签的元素个数。,8数组综合指令,(4)平均值指令a

44、ve 平均值指令ave可以计算一组数值的平均值。 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示ave指令被使能。 完成位(.dn):bool数据类型,该位置位表示指令已经处理完最后的元素(.pos=.len)。 错误位(.er):bool数据类型,置位该位表示指令执行时发生溢出。 长度值(.len):dint数据类型,指定ave指令操作的数组内元素的数量。 位置值(.pos):dint数据类型,指定指令正在访问的当前元素的位置。,8数组综合指令,例如,array_dint是二维数组dint3,4,如图3-72所示,计算array_dint平均值。 指令如图3-73所示。,

45、8数组综合指令,(5)排序指令srt 排序指令srt可以对数组内的一维数据按照升序进行排序。 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示srt指令被使能。 完成位(.dn):bool数据类型,置位该位表示指定的数据已经排序。 错误位(.er):bool数据类型,置位该位表示长度值(.len)0或位置值(.pos)0。 长度值(.len):dint数据类型,指定srt指令操作的数组内元素的数量。 位置值(.pos):dint数据类型,指定指令正在访问的当前元素的位置。,8数组综合指令,例如,array_dint是二维数组dint3,4,如图3-72所示,对array_di

46、nt排序,排序指令srt如图3-74所示。,8数组综合指令,排序指令srt执行后,数组排序如图3-75所示。,8数组综合指令,(6)元素尺寸指令size 元素尺寸指令size用于统计数组中指定维数内元素的数量,并将统计结果存放在操作数size内。 (7)左移位指令bsl和右移位指令bsr 移位指令用于改变数组内数据的位置,是对存储器本身内容进行调整,操作对象是存储器内的连续区域,且必须是双整数类型。 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示移位指令被使能。 完成位(.dn):bool数据类型,置位该位表示数组中的位已经移动。 卸载位(.ul):bool数据类型,存储移

47、出数组位的状态。 错误位(.er):bool数据类型,置位该位表示长度值(.len)0。 长度值(.len):dint数据类型,指定数组内被移动元素的数量。,8数组综合指令,例如,用bsl指令将数组array_dint的位0开始的10个元素左移一位,如图3-76所示。,8数组综合指令,指令执行如图3-77所示。,8数组综合指令,(8)堆栈操作指令lfl、lfu 堆栈操作指令lfl、lfu按照先进后出的顺序存取数据,必须成对使用,且共用同一个结构体控制文件,对内存中的连续区域进行操作。 结构体的寻址状态位如下。 使能位(.en):bool数据类型,表示堆栈操作指令被使能。 完成位(.dn):bo

48、ol数据类型,置位该位表示堆栈已满。 栈空位(.em):bool数据类型,表示堆栈空。 长度值(.len):dint数据类型,表示可容纳的最多元素数量。 位置值(.pos):dint数据类型,指示装载的下一个数据。,9输入/输出指令,(1)数据通信指令msg 数据通信指令msg主要用于控制器以异步的方式读取网络上另一个模块的数据块。 结构体的主要寻址状态位如下: 状态标记(.flags):int数据类型,在16位字内存储状态位,如图3-78所示。,9输入/输出指令,时序关系如图3-79所示。,9输入/输出指令,msg指令执行过程如图3-80所示。,9输入/输出指令,msg指令执行过程的主要错误

49、代码如表3-8所示。 主要扩展错误代码分别如表3-9和表3-10所示。,9输入/输出指令,(2)读取系统值gsv指令/设置系统值ssv指令 读取系统值gsv指令如图3-81所示。,9输入/输出指令,设置系统值ssv指令如图3-82所示。,9输入/输出指令,读取系统值gsv指令/设置系统值ssv指令可以访问以下对象: controller,控制器用于通信管理的cpu比值信息; controllerdevice,控制器模块产品及状态信息; cst,协调系统时间的状态及当前值信息; df1,串口df1通信协议信息; faultlog,控制器主要故障和次要故障信息; message,msg指令执行状态

50、信息; module,模块的状态信息; motiongroup,伺服模块信息; program,程序执行信息; routine,例程执行状态信息; serialport,串口通信组态信息; task,任务执行状态和组态信息; wallclocktime,控制器系统日期信息。,9输入/输出指令,例如,使用读取系统值gsv指令、设置系统值ssv指令访问message对象,通过改变connectionpath属性,将数据传输到不同的控制器中。message对象可以建立和触发对等通信。message对象属性如表3-11所示。,9输入/输出指令,当msg_path为导通状态时,将msg_t信息的路径值设

51、置为msg_t_path,以将数据发送到不同的控制器。 msg_t为要改变属性的数据信息; msg_t_type为信息类型属性值; tag_ex用于存储一个0值; msg_t_path用于存储信息新连接路径的数组。 if msg_path then gsv(message, msg_t,messagetype, msg_t_type); ssv(message, msg_t,messagetype, tag_ex); ssv(message, msg_t,connectionpath, msg_t_path0); ssv(message, msg_t,messagetype, msg_t_ty

52、pe); end_if; if not msg_t.en then msg(msg_t); end_if;,9输入/输出指令,(3)立即输出iot指令 立即输出iot指令用于立即更新特定的输出数据(生产者标签或i/o模块的输出标签),指令如图3-83所示。,10用户自定义指令,(1)用户自定义指令aoi 用户自定义指令aoi(add on instruction)是由用户自己创建的指令,可以多次调用,且可以带入/带出用户自定义的参数。aoi指令是使用标准的指令集或其他aoi指令,按照用户特定的要求进行代码的开发,封装为新的指令,可以独立使用的特殊指令。,10用户自定义指令,(2)aoi指令的优

53、点 通过创建通用的用户指令集,可以节省项目开发时间; 可以实现多个项目的一致性,不用每次都编制通用的控制算法; 支持多种编程语言创建aoi指令ld、fbd、st; 支持多种编程语言调用aoi指令ld、fbd、st、sfc; 可以实现源代码密码保护,防止源代码密码被修改; 源代码锁定,对关键代码进行锁定,防止意外修改,但是可以查看和编译; 原始输入和输出参数类型可以自动转换,减少指令代码和编译; 基于实例(instance)的查看功能; 调用实例(instance)标签时,自动生成指令调用的描述,减少输入工作; 易于维护。,10用户自定义指令,(3)创建aoi指令 控制器结构中包含“add-on

54、 instruction”文件夹; aoi指令只需定义一次,指令可以被多个程序调用; 指令的数量仅受限于控制器的内存。 例如,在controller管理器中,右键单击“add-on自定义指令”,如图3-84所示,即可创建aoi指令。,10用户自定义指令,(4)定义指令数据 用户配置指令的参数,支持原始数据类型; 将参数名字和定义保存在控制器中,描述保存在项目文件中; 数据类型自动转换。指令被调用之前,输入值进行转换;指令执行之后,输出值进行转换。 新建aoi指令的页面如图3-85所示。,10用户自定义指令,单击“确定”按钮,进入aoi指令参数设置页面,如图3-86所示。,10用户自定义指令,(

55、5)定义本地标签 指令可以定义本地标签。 本地标签在指令范围内被使用。 进入aoi指令的本地标签页面,如图3-87所示。,10用户自定义指令,(6)aoi扫描模式 进入aoi指令的扫描模式页面,如图3-88所示。,10用户自定义指令,至此,新创建了一条名为aoi_us的用户自定义指令,如图3-89所示。,10用户自定义指令,创建的指令参数和本地标签都存储在aoi_us的数据库里,如图3-90所示。,10用户自定义指令,(7)aoi指令的使用 一次定义,在fbd、ld、st中直接使用; 每个aoi实例(instance)都拥有独立的数据实例(data instance),实现数据的自动隔离; 允

56、许每个指令工作于定制的一套数据。,10用户自定义指令,(8)导出aoi指令 可以将编写好的aoi指令导出,以文件形式保存,如图3-91所示。,10用户自定义指令,(9)aoi指令和子程序的比较 aoi指令和子程序的比较如表3-12所示。,11程序设计举例,【例3.2】 置位、复位语句在时序图中的使用。 实现电动机故障报警,在电动机控制回路和主回路中,有3个故障信号,分别是控制回路电源跳闸信号(kt)、主回路电源跳闸信号(zt)、电动机过热保护信号(bh)。信号如表3-13所示。,11程序设计举例,控制回路故障报警时序图如图3-92所示。,11程序设计举例,梯形图实现过程如图3-93所示。,11

57、程序设计举例,全部梯形图如图3-94所示。,11程序设计举例,【例3.3】 单按键启停一台电动机。 用一个按键实现电动机的启动/停止。要求按动一下启动,再按一下停止。 输入:输入端p,为自动复位式按键。 输出:输出端q,为1时启动,为0时停止。 如图3-95所示。,11程序设计举例,梯形图如图3-96所示。,11程序设计举例,【例3.4】 水厂有3个水泵,工作顺序是:a水泵先启动,然后b水泵启动,最后c水泵启动。3个水泵各自启动后即开始运行工作。停止时,执行顺序与启动时相反,即c水泵先停止工作,然后b水泵停止工作,最后a水泵停止工作。 水泵a、b、c的启动完成反馈分别为a_end_start、b_end_start、c_end_start,水泵a、b、c的停止完成反馈分别为a_end_stop、b_

温馨提示

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

评论

0/150

提交评论