第三讲--CompactLogix的编程介绍

上传人:公**** 文档编号:491741553 上传时间:2023-06-27 格式:DOC 页数:5 大小:46KB
返回 下载 相关 举报
第三讲--CompactLogix的编程介绍_第1页
第1页 / 共5页
第三讲--CompactLogix的编程介绍_第2页
第2页 / 共5页
第三讲--CompactLogix的编程介绍_第3页
第3页 / 共5页
第三讲--CompactLogix的编程介绍_第4页
第4页 / 共5页
第三讲--CompactLogix的编程介绍_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《第三讲--CompactLogix的编程介绍》由会员分享,可在线阅读,更多相关《第三讲--CompactLogix的编程介绍(5页珍藏版)》请在金锄头文库上搜索。

1、第三讲CompactLogix的编程介绍通过前一讲我们已经初步知道了如何使用RSLinx和RSLogix5000,这一讲我们将介绍CompactLogix的程序结构、编程语言、自定义数据结构、Add-on自定义指令、模拟量模块以及一些指令的使用。一 程序结构和编程语言CompactLogix的程序结构分为任务-程序-子程序三级结构,每个CompactLogix控制器可以有多个任务,不同控制器类型的任务数是不同的,比如CompactLogix 1768系列有16个任务,而1769-L35E有8个任务。任务是CompactLogix 的第一级程序结构,任务分成三种类型,包括连续型任务、周期型任务和

2、事件型任务。当控制器的CPU没有执行其它操作时,CPU执行连续型任务,连续型任务执行完毕后,又从头开始执行。连续型任务的执行是周而复始的过程,它的执行周期是不定的优先级比周期性任务和事件型任务都低。一个CompactLogix工程项目可以没有连续型任务,最多也只能有一个连续型任务。用于工厂自动化的顺序控制系统通常都有连续型任务,而对于过程控制的系统,则可能没有连续型任务。周期型任务就如它的名字一样是按照预先设定的时间间隔执行的任务。CompactLogix控制器是个多任务的系统,但是在某一时刻只能执行一个任务。如果某一个任务正在执行,此时另一个任务要被触发执行,这时控制器就要看看这两个任务的优

3、先级,以决定是否中断正在执行的任务,转而去执行其它任务。CompactLogix具有15个优先级,数值从1-15,数值小的优先级高。优先级高的任务可以中断优先级低的任务,执行完优先级高的任务后再回头从低优先级任务中断处继续执行,连续型任务的优先级最低,它可被其它任务所中断。第三种任务类型是事件型任务,当一个指定的触发事件发生时才去执行事件型任务。在创建事件型任务时可以指定这种触发事件,触发事件有多种,比如有数字量信号发生变化时,运动控制执行某种操作时,消费者标签接收到数据时或是通过事件指令来触发等。但是,CompactLogix只支持通过事件指令来触发事件任务的执行。与周期性任务一样,事件型任

4、务也有优先级。RSLogix5000编辑软件包括四种编程语言,除了常用的梯形图编程以外,还有功能块、结构化文本和顺序流程图。一般来说,原来是做顺序控制的更习惯使用梯形图编程,用于过程控制则更适合使用功能块编程,而如果是批次控制,使用顺序功能图则更有优势,如果需要编写一些数学算法可以使用结构化文本。二延时开指令TON和计算指令CPT介绍现在我们来看看CompactLogix控制器的指令。CompactLogix指令系统非常丰富,有常用的位指令、定时器和计时器指令、比较指令、数学运算指令和传输指令等,还有运动控制指令、串口通讯指令和ASCII指令等。我们这里只介绍两个指令:延时开指令TON和计算指

5、令CPT。现在编写一段小程序,当输入模块的第2点动作0.5秒后,计算a1=(b1+c1)*d1的值,其中b1和c1为双整数,a1和d1为实数。(以下部分需要屏幕抓图,视频文件:)我们首先创建程序使用的标签再编写程序。在上面项目test1中,双击左边窗口Controller Tag,打开标签编辑窗口,在最后一行的第一列即name列上输入b1,这就创建了一个类型为双整形,名称为b1的标签,按照同样的方法创建c1标签,再按照同样的方法创建a1标签,由于创建标签的默认类型为双整数DINT,我们要创建的是实数,所以在a1行Data type列上将数据类型由DINT该为REAL。按照创建a1同样的方法创建

6、d1。我们还要创建两个标签:一个是Compute,它是一个布尔量,是一个别名标签。创建后将其数据类型由DINT该为BOOL,同时由于是个别名标签,它代表的是输入模块的第2个输入点,所以在这一行的Alias for列上选择为Local:2:I.Data.2。最后一个标签是定时器标签ComputeDelay,将数据类型改为TIMER。双击连续任务下的mainroute,在梯形图编辑器中打开了test1,右键点击梯形图编辑器上的End,选择Add Rung 添加一条程序,添加一个常开点Examine On和一个延时开指令TON,常开点指令使用的标签为Compute。TON指令使用的定时器标签为Com

7、puteDelay,设定值为500,定时器指令中使用的时间单位为1ms,设定值为500,即这个定时器为Compute动作后延时500毫秒动作。上面我们创建了ComputeDelay这个定时器数据类型,定时器数据类型是个预先定义的数据结构,它包含5项数据,比如.ACC表示定时器当前计时值,.DN表示定时器延时时间到。如果我们需要取得定时器当前计时值,可以直接使用ComputeDelay.ACC这个标签,不要进行任何转换。再添加另一条程序,在这条程序上有一个常开点Examine On指令和计算指令CPT,CPT位于Compute/Math指令属性页上。Examine On指令上的标签为 Compu

8、teDelay.DN, CPT指令Dest是个标签,可以是单字节整数SINT、整数INT、双字节整数DINT或实数REAL,CPT指令的Expression是一个表达式,表达式中除了可以有加减乘除运算符以及()符号外,还可以使用数学函数,通过一条CPT指令便可以完成需要多条指令才能完成的功能,我们可以象使用高级语言那样使用一条表达式完成多步的计算。这里,我们设定Dest为标签a1,Expression为“(b1+c1)*d1”。从这个语句我们还可以看出,不同数据类型混合使用是很方便,不需要我们去编写繁琐的转换指令,数据转换是自动完成的。当然我们应该了解转换规则,比如双整数DINT转换为实数RE

9、AL时,不会丢失信息。但是如果实数转换为双整数是有可能丢失信息的,实数转换为双整数是采用四舍五入进行的。将编写好的程序下载到控制器,并使控制器处于运行状态,设置b1,c1,d1的值,看看由CPT算出a1的值。三自定义数据结构体前面我们介绍了定时器TIMER数据类型是预定义的数据结构,除了预定义的数据结构外,为了使编程更加方便,我们有时需要自己创建数据结构,这就是RSLogix5000的用户自定义结构体。下面我们创建一个简单的储油罐Tank的自定义结构体,它包含油温、油位、高油温报警等信息。(以下部分需要屏幕抓图,视频文件:)点击左边浏览器窗口上的Data Types,从弹出的菜单中选择新数据类

10、型,可以看到这时打开了自定义数据类型创建窗口,在名称栏输入结构体名称Tank,在结构体成员中输入以下3个名称Temp、Level和HighTemp,它们分别表示油温、油位和高油温报警,这3个成员数据类型分别为REAL、REAL和BOOL。Tank结构体创建好后,我们便可以创建类型为Tank的标签。双击控制器标签,打开控制器标签编辑窗口,创建一个名称为Tank1的标签类型,将其数据类型由默认的DINT类型改为Tank。点击Tank1前的加号,可以看到Tank1包括三个成员Tank1.Temp、Tank1.Level和Tank1.HighTemp,这三个成员是自动创建的,因为Tank1的数据类型是

11、Tank。自定义结构体可以包含预定义结构体,也可以包含另一个自定义结构体,也就是说结构体可以嵌套。不管是创建简单数据类型的标签还是创建自定义数据结构体的标签,都可以创建数组类型的标签,可以创建一维、二维和三维数组的标签类型。编程人员使用自定义数据结构体可以使程序更加条理清晰、容易理解,同时也能提高现场启动和系统维护的效率。四Add-on自定义指令RSLogix5000编程软件中已经包含了多种指令,这些指令是由编程软件提供的,你可以在各个项目中使用这些指令。另外,RSLogix5000也可以自己定义指令,自定义的指令可以象普通指令一样在程序中多处调用,也可以将自定义指令导出后,在其它项目中再导入

12、后使用。下面我们编写一个自定义指令MyCompare,这个指令有两个双整数输入,一个双整数输出。如果第一个数大于第二个数,则输出为1,如果第一个与第二个数相等,则输出为0,如果第一个数小于第二个数,则输出为-1。(以下部分需要屏幕抓图,视频文件:) 展开左边浏览器窗口上的Data Types项,右键点击其下的Add-on-Defined。从弹出的菜单中选择 New Add-on Instrution,创建一个自定义指令,我们把这个自定义指令命名为MyCompare,选择Type的类型为Ladder Diagram,这里的Type为要选择什么编程语言来编写这个自定义指令,点击OK后出现自定义指令

13、定义对话框。选择Parameters属性页,对MyCompare指令的输入输出参数进行定义,我们定义MyCompare指令有三个参数,两个为输入,分别为input1和input2,数据类型都为DINT,Usage列表示这个参数是输入参数还是输出参数,这里选择为input。MyMyCompare指令的第三个参数为rtn,它的数据类型也是DINT,Usage列选择为output。最后我们将这三个参数的Req列和Vis列都打上勾,表示使用这个指令时,这三个参数可见且必须输入标签作为实际参数。这样我们完成了MyCompare指令的参数定义。现在可以编写实际的逻辑操作,点击这个对话框窗左下角的Logic

14、按钮,打开Compare指令梯形图编辑器,我们这个自定义指令只有三条程序。在第一条程序上添加两条指令,分别是GRT指令和MOV指令,GRT指令位于Compare指令属性页上,GRT是大于比较,MOV指令位于Move/Logic指令属性页上,用于数据传送。选择GRT指令的Source A为input1,Source B为input2,MOV指令的Source为1,Dest为rtn。第二条程序也只包含两条指令,一个是EQU指令,另一个也是MOV。EQU是等于比较,选择这条指令的Source A为input1,Source B为input2,这条程序的MOV指令的Source为0,Dest为rtn。

15、在第三条程序上我们也添加两条指令,一个是LES,LES是小于比较,选择Source A为input1,Source B为input2,另一个指令是MOV,Source 上输入-1,Dest上输入rtn。这样我们便完成了MyCompare指令的程序代码的编写。自定义指令编写好以后,可以在编写自定义指令的项目中调用,也可以将自定义指令导出后,再将其导入到其它的项目中并进行调用。下面我们来看看如何调用自定义指令。双击MainRoutine,打开梯形图编辑,在程序的末尾处增加一条程序,选择Add-on指令属性页,我们发现Add-on指令属性页有一个指令名为MyCompare,这个指令就是我们刚才创建的

16、指令,你在这个项目中创建的或是导入的自定义指令都会在Add-on指令属性页中列出。点击MyCompare指令便将这条指令添加到程序中,右键点击MyCompare旁边的问号,创建一个数据类型为MyCompare的标签compare2, 按照同样的方法创建3个标签a2、b2和c2,这3个标签为双整数DINT,这3个标签作为实际参数分别对应MyCompare指令的input1、input2和rtn,也就是说,在调用这条指令前,a2赋值给input1,b2赋值给input2,指令执行完后,rtn的值将赋值给c2。现在我们来测试结果,将程序下载到控制器并使控制器处于运行状态,双击控制器标签打开标签编辑窗口,在标签编辑窗口的下方选择Monitor tags属性页,更改

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号