资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Micro800,控制器的编程指令,1.,*,罗克韦尔,PLC,控制系统的编程,1,、了解,编程器的工作方式,2,、,了解可编程控制器编程方式的特点,3,、熟练掌握功能块指令、函数指令和操作指令,学习目标,通常,PLC,不采用微机的编程语言,而,采用面向控制过程,(,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,),、面向实际问题的自然语言编程,。这些编程语言有,梯形图、逻辑功能图、布尔代数式,等。如,罗克韦尔自动化公司所有的,PLC,(,Micro800,、,MicroLogix,、,SLC 500,、,PLC-5,和,ControlLogix,),都支持梯形图(,LD,)的编程方式,。,Micro800,控制器支持三种编程方式:,梯形图,、,结构化文本,和,功能块编程,。其最大的特点就是每种编程方式都,支持功能块化的编程,。下面分别介绍这三种方式。,Micro800,控制器编程语言,1,、定义:,梯形图一般由多个不同的梯级(,RUNG,)组成,每一梯级又由输入及输出指令组成。在一个梯级中,输出指令应出现在梯级的最右边,而输入指令则出现在输出指令的左边,如,图,所示。,Micro800,控制器编程语言,一、梯形图,Micro800,控制器编程语言,一、梯形图,梯形图的编程特点,2,、,PLC,控制器的编程方式:梯形图编程,输入(条件),指令,输出指令,(),梯级,(RUNG),(),梯形图程序的组成:,指令:,输入/输出指令,梯级:,由一组输入和一个输出指令组成,程序:,由多个不同的梯级组成,梯形图程序的工作原理:,从第一级程序扫描到最后一级(从上到下),扫描特定梯级的输入指令,决定输出指令的动作(从左到右),Micro800,控制器编程语言,一、梯形图,(可没有),3,、,PLC,控制器的指令系统,标准指令,Micro800,控制器编程语言,一、梯形图,继电器(软继电器)类指令,常开,常闭,输出,锁存,(),(),L,计时器/计数器指令,TON,(EN),(DN),TIME BASE,PRE,ACC,Micro800,控制器编程语言,一、梯形图,图,5-5,选择变量名,Micro800,控制器编程语言,在,Micro800,控制器中可以用,功能块,(,FBD,,,Function Block Diagram,)编程语言,编写一个控制系统中输入和输出之间的控制关系,图示。用户也可以使用现有的功能块组合,编辑成需要的用户自定义功能块。,每个功能块都有固定的输入连接点和输出连接点,,输入和输出都有固定的数据类型规定,。输入点一般在功能块的左边,输出点在右侧。,二、功能块,Micro800,控制器编程语言,1,、功能块简介,在,FBD,中同样可以使用梯形图(,LD,)编程语言中的元素,,如线圈、连接开关按钮、跳转、标签和返回等。,与梯形图编程语言不同的是,在功能块编程中所使用的元素放置位置没有过多限制,,不像在梯形图中对每个元素有严格规定的位置。且在,FBD,编程语言中同样支持使用功能块操作,如操作指令、函数等大类功能块以及用户自定义的功能块等(只在,Connected Components Workbench,中)。,二、功能块,Micro800,控制器编程语言,1,、功能块简介,当使用功能块,可以从工具箱拖出功能块元素到编辑框里,并编辑它。,输入和输出变量与功能块的输入和输出用连接线连接。,信号连接线可以连接如下块的两类逻辑点,:,输入变量和功能块的输入点,;,功能块的输出和另一功能块的输入点,;,功能块的输出和输出变量,。,连接的方向,表示连接线带着得到的数据,从左边传送到右边,。,连接线的左右两边必须有相同的数据类型,。功能块多重的右边连接分支也叫做分支结构,可以用于从左边扩展信息至右边。,注意数据类型的一致性,。,二、功能块,Micro800,控制器编程语言,2,、功能块执行顺序,二、功能块,Micro800,控制器编程语言,2,、功能块执行顺序,二、功能块,Micro800,控制器编程语言,3,、功能块的调试,结构文本(,ST,,,Structured Text,)类似于,BASIC,语言,,利用它可以很方便地建立、编辑和实现复杂的算法,特别是在数据处理、计算存储、决策判断、优化算法等涉及描述多种数据类型的变量应用中非常有效。采用类似,BASIC,高级语言的编程方法,比较容易完成复杂的算法。,三、结构文本,Micro800,控制器编程语言,IF(xxx)THEN YYY,ELSE ZZZ,END IF,三、结构文本,Micro800,控制器编程语言,1,、结构化文本(,ST,)主要语法,三、结构文本,Micro800,控制器编程语言,1,、结构化文本(,ST,)主要语法,行结束符(可以放在程序中的任何位置)使用不活动分隔符时,需要遵循以下规则:,每行编写的语句不能多于一条,;,使用,Tab,来缩进复杂语句,;,插入注释以提高行或段落的可读性。,Micro800,控制器编程语言,三、结构文本,Micro800,控制器编程语言,2,、表达式和括号,ST,编程语言可以调用函数。可以在任何表达式中使用函数调用。函数调用包含的属性见下表。,三、结构文本,Micro800,控制器编程语言,3,、调用函数和功能块,当在函数主体中设置返回参数的值时,可以为返回参数赋予与该函数相同的名称:,FunctionName,:,=FunctionName(,);,三、结构文本,Micro800,控制器编程语言,3,、调用函数和功能块,ST,编程语言调用功能块。可以在任何表达式中使用功能块调用。功能块调用属性见表,5-2,。,当在功能块主体中设置返回参数的值时,可以通过将返回参数的名称与功能块名称相连来分配返回参数:,三、结构文本,Micro800,控制器编程语言,3,、调用函数和功能块,FunctionBlockName.OutputParaName,:,=;,三、结构文本,Micro800,控制器编程语言,3,、调用函数和功能块,Micro800,控制器的内存可以分为两大部分:,数据文件(变量),和,程序文件(程序),。,Micro800,控制器的内存组织,Micro800,控制器的变量分为,全局变量,和,本地变量,,其中,I/O,变量默认为全局变量,。全局变量在项目的任何一个程序或功能块中都可以使用,而本地变量只能在它所在的程序中使用。不同类型的控制器,I/O,变量的类型和个数不同,,I/O,变量可以在,CCW,软件中的全局变量中查看。,I/O,变量的名字是固定的,。,_IO_EM_DI_00,Micro800,控制器的内存组织,一、数据文件,除了,I/O,变量以外,为了编程的需要还要建立一些中间变量,变量的类型用户可以自己选择,常用的变量类型见。,Micro800,控制器的内存组织,一、数据文件,Micro800,控制器的内存组织,一、数据文件,Micro800,控制器的内存组织,一、数据文件,控制器的程序文件分为两部分内容:,程序,(,Program,)部分(相当于通常的主程序部分)和,功能块,(,Function Block,)部分,这里所说的,功能块,(,Function Block,),除了系统自身的函数和功能块(,Function Block,)指令以外,主要是指用户根据功能需要,自己用梯形图语言编写的具有一定功能的功能块(,Function Block,),可以在程序(,Program,)或者功能块,(Function Block),中调用,,相当于常用的子程序,。每个功能块(,Function Block,),最多有,20,个输入和,20,个输出,。,Micro810,控制器最多可以有,2000,条含一个操作数的梯级。,Micro800,控制器的内存组织,一、程序文件,在一个项目中可以有,多个程序(,Program,)和多个功能块,(,Function Block,)程序。,多个程序(,Program,)可以在一个控制器中同时运行,但执行顺序由编程人员设定,,设定程序(,Program,)的执行顺序时,在项目组织器中右键单击程序图标,选择属性,打开程序(,Program,)属性对话框。在,Order,后面写下要执行顺序,,1,为第一个执行,,2,为第二个执行,例如:一个项目中有,8,个程序(,Program,),可以把第,8,个程序(,Program,)设定为第一个执行,其他程序(,Program,)会在原来执行的顺序上,依次后推。原来排在第一个执行的程序(,Program,)将自动变为第二个执行。,Micro800,控制器的内存组织,一、程序文件,在,Order,后面写下要执行顺序,,1,为第一个执行,,2,为第二个执行。,罗克韦尔自动化的可编程序控制器编程指令,非常丰富,,不同系列可编程序控制器所支持的指令稍有差异,但基本指令都是大家所共有的,。对于编程指令的理解程度,将直接关系到工作的效率。可以这样认为,对编程指令的理解,直接决定了对可编程序控制器的掌握程度。下面将详细介绍它的指令类型。,Micro800,控制器的指令系统,编辑梯形图程序时,可以从工具箱拖拽需要的指令符号到编辑窗口中使用。可以添加以下梯形图指令元素:,一、梯形图指令,Micro800,控制器的指令系统,1,、梯级,一、梯形图指令,Micro800,控制器的指令系统,2,、线圈(,Coils,),直接输出(,Direct Coil,),Micro800,控制器的指令系统,2,、线圈(,Coils,),直接输出(,Direct Coil,),2,、线圈(,Coils,),Micro800,控制器的指令系统,反向输出(,Reverse Coil,),2,、线圈(,Coils,),Micro800,控制器的指令系统,上升沿(正沿)输出(,Pulse Rising Edge Coil,),2,、线圈(,Coils,),Micro800,控制器的指令系统,下降沿(负沿)输出(,Pulse Falling Edge Coil,),2,、线圈(,Coils,),Micro800,控制器的指令系统,置位输出(,Set Coil,),2,、线圈(,Coils,),Micro800,控制器的指令系统,置位输出(,Set Coil,),当左连接件的布尔状态变为,“,真,”,时,输出变量将被置,“,真,”,。该输出变量将一直保持该状态直到复位输出(,Reset coil,)发出复位命令,如,图,所示。,2,、线圈(,Coils,),Micro800,控制器的指令系统,复位输出(,Reset Coil,),一、梯形图指令,Micro800,控制器的指令系统,3,、接触器(,Contacts,),直接连接(,Direct Contact,),3,、接触器(,Contacts,),Micro800,控制器的指令系统,反向连接(,Reverse Contact,),3,、接触器(,Contacts,),Micro800,控制器的指令系统,上升沿连接(,Pulse Rising Edge Contact,),3,、接触器(,Contacts,),Micro800,控制器的指令系统,下降沿连接(,Pulse Falling Edge Contact,),继电控制互锁,Micro800,控制器的指令系统,PLC,实现,互锁指令梯级逻辑,对于,互锁,执行的操作动作,,采用锁存解锁指令对其控制是最有效和可靠的,。,此例中有,4,个互锁的控制,每当满足其中之一的控制条件,便锁存自己的控制,解锁其他控制,不管其他控制当前的状态如何,这样可以确保只有一个控制在执行。,梯级一、二,梯级三、四,块(,Block,)元素指的是指令块,也可以是,位操作指令块,、,函数指令块,或者是,功能块指令块,。在梯形图编辑中,可以添加指令块到布尔梯级中,(Block,拖拽,),。加到梯级后可以随时用指令块选择器设置指令块的类型,随后相关参数将会自动陈列出来。,在使用指令块时请牢记以下两点:,(,1,)当一个指令块添加到梯形图中后,,EN,和,ENO,参数将会添加到某些指令块的接口列表中,。,(,2,)当指令块是单布尔变量输入、单布尔变量输出或是无布尔变量输入、无布尔变量输出时,可以强制,EN,和,ENO,参数。,可以在梯形图操作中激活允许,EN,和,ENO,参数,(,Enable EN/ENO,)。,一、梯形图指令,Micro800,控制器的指令系统,4,、指令块(,Instruction blocks,),项目,组织器,梯形图,界面,驱动,工具箱,指令,工具箱,4,、指令块(,Instruction blocks,),Micro800,控制器的指令系统,EN,输入,4,、指令块(,Instruction blocks,),Micro800,控制器的指令系统,ENO,输出,4,、指令块(,Instruction blocks,),Micro800,控制器的指令系统,EN,和,ENO,参数,4,、指令块(,Instruction blocks,),Micro800,控制器的指令系统,EN,和,ENO,参数,功能块使能(,Enable,)参数,Micro800,控制器的指令系统,EN,和,ENO,参数,返回(,Returns,)参数,一、梯形图指令,Micro800,控制器的指令系统,5,、跳转(,Jumps,),一、梯形图指令,Micro800,控制器的指令系统,6,、分支(,Branches,),分支元件能产生一个替代梯级。可以使用分支元件在原来梯级基础上添加一个平行的分支。,二、功能块指令,Micro800,控制器的指令系统,功能块指令是,Micro800,控制器编程中的重要指令,它包含了实际应用中的大多数编程功能。功能块指令种类及说明见表。,二、功能块指令,Micro800,控制器的指令系统,1,、报警(,Alarms,),二、功能块指令,Micro800,控制器的指令系统,1,、报警(,Alarms,),二、功能块指令,Micro800,控制器的指令系统,1,、报警(,Alarms,),二、功能块指令,Micro800,控制器的指令系统,2,、布尔操作(,Boolean Operations,),二、功能块指令,Micro800,控制器的指令系统,2,、布尔操作(,Boolean Operations,),二、功能块指令,Micro800,控制器的指令系统,2,、布尔操作(,Boolean Operations,),二、功能块指令,Micro800,控制器的指令系统,(,2,)重置,SET,RESET,Q1,ResultQ1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,重置功能块真值表,Micro800,控制器的指令系统,3,、通信(,Communications,),通信类功能块主要负责与外部设备通信,以及自身的各部件之间的联系。通信类功能块主要指令见下表。,功能块,描述,ABL,(测试缓冲区数据列),统计缓冲区中的字符个数(直到并且包括结束字符),ACB,(缓冲区字符数),统计缓冲区中的总字符个数(不包括结束终止字符),ACL,(,ASCII,清除缓存寄存器),清除接收,传输缓冲区内容,AHL,(,ASCII,握手数据列),设置或重置,RS232,请求发送(,RTS,)握手信号控制字,ARD,(,ASCII,字符读),从输入缓冲区中读取字符并把它们放到某个字符串中,ARL,(,ASCII,数据列表),从输入缓冲区中读取一行字符并把它们放到某个字符串中,包括终止字符,AWA,(,ASCII,带附加字符写),写一个带用户配置字符的字符串到外部设备中,AWT,(,ASCII,字符写出),从源字符串中写一个字符到外部设备中,MSG_MODBUS,网络通信协议信息传输,,发送,Modbus,信息,Micro800,控制器的指令系统,(,1,)测试缓冲区数据列(,ABL,,,ASCII Test For Line,),测试缓冲区数据列功能块指令可以用于,统计输入缓冲区里的字符个数(一直到并且包括结束字符),参数列表见下表。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行统计,ABLInput,Input,ABLACB,(见,ABLACB,数据类型),将要执行统计的通道,Q,Output,BOOL,假:统计指令不执行;真:统计指令已执行,Characters,Output,UINT,字符的个数,Error,Output,BOOL,假:无错误;,真:检测到一个错误,ErrorID,Output,UINT,见,ABL,错误代码,Micro800,控制器的指令系统,(,1,)测试缓冲区数据列(,ABL,,,ASCII Test For Line,),ABLACB,数据类型见下表。,参数,数据类型,描述,Channel,UINT,串行通道号;,2,代表本地串行通道口,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,TriggerType,USINT,(无符号短整型),代表以下情况中的一种:,0,:,Msg,触发一次(当,IN,从假变为真);,1,:,Msg,持续触发,即,IN,一直为真;其他值:保留,Cancel,BOOL,当该输入被置为真时,统计功能快指令不执行,Micro800,控制器的指令系统,(,1,)测试缓冲区数据列(,ABL,,,ASCII Test For Line,),ABL,错误代码见下表。,错误代码,描述,0 x02,由于数据模式离线,操作无法完成,0 x03,由于准备传输信号(,Clear-to-Send,)丢失,导致传送无法完成,0 x04,由于通信通道被设置为系统模式,导致,ASCII,码接收无法完成,0 x05,当尝试完成一个,ASCII,码传送时,检测到系统模式(,DF1,)通信,0 x06,检测到不合理参数,0 x07,由于通过通道配置对话框停止了通道配置导致不能完成,ASCII,码的发送或接收,0 x08,由于一个,ASCII,码传送正在执行,导致不能完成,ASCII,码写入,Micro800,控制器的指令系统,错误代码,描述,0 x09,现行通道配置不支持,ASCII,码通信请求,0 x0a,取消(,Cancel,)操作被配置,所以停止执行指令,没有要求动作,0 x0b,要求的字符串长度无效或者是一个负数,或者大于,82,或,0,。功能块,ARD,和,ARL,中也一样,0 x0c,源字符串的长度无效或者是一个负数或者大于,82,或,0,。对于,AWA,和,AWT,一样,0 x0d,在控制块中的要求的数是一个负数或是一个大于存储于源字符串中字符串长度的数。对于,AWA,和,AWT,指令一样,0 x0e,ACL,功能块被停止,0 x0f,通道配置改变,说明:,“,0 x,”,前缀表示十六进制数。,Micro800,控制器的指令系统,(,2,),ASCII,清除缓存寄存器(,ACL,,,ASCII Clear Buffers,),ASCII,清除缓存,寄存器功能,块指令用于,清除缓冲区里的接收和传输的数据,也可用于移除,ASCII,队列里的指令,参数列表见下表。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行该功能块,ACLInput,Input,ACL,(见,ACL,数据类型),传送和接收缓冲区的状态,Q,Output,BOOL,假:该功能块不执行;真:该功能块已执行,Error,Output,BOOL,假:无错误;,真:检测到一个错误,ErrorID,Output,UINT,见,ABL,错误代码,Micro800,控制器的指令系统,ACL,数据类型见下表。,参数,数据类型,描述,Channel,UINT,串行通道号;,2,代表本地串行通道口,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,RXBuffer,BOOL,当置为真时,清除接收缓冲区里的内容,并把接收,ACSII,功能块指令(,ARL,和,ARD,)从,ASCII,队列中移除,TXBuffer,BOOL,当置为真时,清除传送缓冲区里的内容,并把传送,ASCII,功能块指令(,AWA,和,AWT,)从,ASCII,队列中移除,(,2,),ASCII,清楚缓存寄存器(,ACL,,,ASCII Clear Buffers,),Micro800,控制器的指令系统,(,3,),ASCII,握手数据列(,AHL,,,ASCII Handshake Lines,),ASCII,握手数据列功能,块指令用于,设置或重置,RS-232,请求发送(,Request to Send RTS,)握手控制信号控制行,参数列表见下表。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行该功能块,AHLInput,Input,AHL,(见,AHLI,数据类型),设置或重置当前模式的,RTS,控制字,Q,Output,BOOL,假:该功能块不执行;真:该功能块已执行,ChannelSts,Output,Word,(见,AHLChan nnelSts,数据类型),显示当前通道规定的握手行状态(,0000001F,),Error,Output,BOOL,假:无错误;,真:检测到一个错误,ErrorID,Output,UINT,见,ABL,错误代码,Micro800,控制器的指令系统,AHLI,数据类型见下表。,参数,数据类型,描述,Channel,UINT,串行通道号;,2,代表本地串行通道口,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,ClrRts,BOOL,用于重置,RTS,控制字,SetRts,BOOL,用于设置,RTS,控制字,Cancel,BOOL,当输入为真时,该功能块不执行,(,3,),ASCII,握手数据列(,AHL,,,ASCII Handshake Lines,),Micro800,控制器的指令系统,AHL ChannnelSts,数据类型见下表。,参数,数据类型,描述,DTRstatus,UINT,用于,DTR,信号(保留),DCDstatus,UINT,用于,DCD,信号(控制字的第,3,位),,1,表示激活,DSRstatus,UINT,用于,DSR,信号(保留),RTSstatus,UINT,用于,RTS,信号(控制字的第,1,位),,1,表示激活,CTSstatus,UINT,用于,CTS,信号(控制字的第,0,位),,1,表示激活,(,3,),ASCII,握手数据列(,AHL,,,ASCII Handshake Lines,),Micro800,控制器的指令系统,(,4,),ASCII,字符读(,ARS,,,ASCII Read,),ASCII,字符读功能,块指令用于,从缓冲区中读取字符,并把字符存入一个字符串中,参数列表见下表。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行该功能块,ARDInput,Input,ARDARL,(见,AR,DARL,数据类型),从缓冲区中读取字符,最多,82,个,Done,Output,BOOL,假:该功能块不执行;,真:该功能块已执行,Destination,Output,ASCIILoc,存储字符的字符串位置,Numchar,Output,UINT,字符个数,Error,Output,BOOL,假:无错误;,真:检测到一个错误,ErrorID,Output,UINT,见,ABL,错误代码,Micro800,控制器的指令系统,ARDARL,数据类型见下表。,参数,数据类型,描述,Channel,UINT,串行通道号;,2,代表本地串行通道口,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,Length,UINT,希望从缓冲区里读取的字符个数(最多,82,个),Cancel,BOOL,当输入为真时,该功能块不执行,如果正在执行,在操作停止,(,4,),ASCII,字符读(,ARS,,,ASCII Read,),Micro800,控制器的指令系统,(,5,),ASCII,带附加字符写(,AWA,,,ASCII Write Append,),该功能块指令,用于从源字符串向外部设备写入字符,且附加编程人员在设置对话框里设置的两个字符,参数列表见下表。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行该功能块,AWAInput,Input,AWAAWT,(见,AWAAWT,数据类型),将要操作的通道和长度,Source,Input,ASCIILoc,源字符串,字符阵列,Q,Output,BOOL,假:该功能块不执行;,真:该功能块已执行,Numchar,Output,UINT,字符个数,Error,Output,BOOL,假:无错误;,真:检测到一个错误,ErrorID,Output,UINT,见,ABL,错误代码,Micro800,控制器的指令系统,AWAAWT,数,据类型见下表。,参数,数据类型,描述,Channel,UINT,串行通道号;,2,代表本地串行通道口,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,Length,UINT,希望写入缓冲区里的字符个数(最多,82,个)。提示:如果设置为,0,,,AWA,将会传送,0,个用户数据字节和两个附加字符到缓冲区,Cancel,BOOL,当输入为真时,该功能块不执行,如果正在执行,在操作停止,(,5,),ASCII,带附加字符写(,AWA,,,ASCII Write Append,),Micro800,控制器的指令系统,(,6,)网络通信协议信息传输(,MSG_MODBUS,),该功能块指令用于,传送网络通信协议(,Modbus,)信息,,例如读写目标设备的寄存器中的信息。,Modbus,是由,Modicon,(现为施耐德电气公司的一个品牌)在,1979,年发明的,是全球第一个真正,用于工业现场的总线,协议。,参数,参数类型,数据类型,描述,IN,Input,BOOL,上升沿(,IN,由假变真),执行该功能块,Cancel,Input,BOOL,真:取消执行功能块,LocalCfg,Input,MODBUSLOCPARA,(见,MODBUSLOCPARA,数据类型),确定结构化输入信息,(本地设备),TargetCfg,Input,确定结构化输入信息,(目标设备),Micro800,控制器的指令系统,(,6,)网络通信协议信息传输(,MSG_MODBUS,),参数,参数类型,数据类型,描述,LocalAddr,Input,MODBUSLOCADDR,确定本地存入或写出信息的地址(,125,字),MODBU,SLOCADDR,数据类型是一个大小为,125,个字的数组,由读取命令用来存储,Modbus,从站返回的数据(,1125,个字),并由写入命令用来缓冲要发送到,Modbus,从站的数据(,1125,个字),Q,Output,BOOL,假:指令未完成;,真:,MSG,指令完成,Error,Output,BOOL,假:无错误;,真:出现错误,ErrorID,Output,UINT,当信息传送错误时,显示错误代码,见,MSG MODBUS,错误代码,Micro800,控制器的指令系统,MODBUSLOCPARA,数据类型见下表。,参数,数据类型,描述,Channel,UINT,Micro800 PLC,串行端口号;,2,代表本地串行端口,,59,代表安装在插槽,15,的嵌入式模块串行通道口:,5,表示在插槽,1,;,6,表示在插槽,2,;,7,表示在插槽,3,;,8,表示在插槽,4,;,9,表示在插槽,5,TriggerType,USINT,0,:,Msg,触发一次(,IN,从假变为真),1,:,MSG,持续触发,当,IN,为真;其他情况,保留,Cmd,USINT,MSG,指令的操作命令:,01,:读取线圈状态;,02,:读取输入状态;,03,:读取保持寄存器;,04,:读取输入寄存器;,05,:写单一线圈;,06,:写单一寄存器;,15,:写多个线圈;,16,:写多个寄存器,ElementCnt,UINT,读写数据个数的限制:对于读取线圈或开关量输入最多,2000bits,;对于读寄存器最多,125words,;对于写线圈最多,1968bits,;对于写寄存器最多,123words,。,Micro800,控制器的指令系统,MODBUSTARPARA,数据类型见下表。,参数,数据类型,描述,Addr,UDINT,目标数据(,165536,);,传送后减,1,Node,USINT,默认从机节点号为,1,。节点范围,0247,,,0,是,Modbus,广播节点号,且当,Modbus,处于写命令时有效(如,5,,,6,,,15,,,16,),注:由于目标数据地址传送后会自动减,1,,所以给,MSG,指令读写地址时,需要在要读写的实际地址基础上加,1,后给到,Addr,上,这样才能使,MSG,指令读写到正确的地址。,Micro800,控制器的指令系统,MSG_MODBUS,错误代码见下表。,错误代码,描述,错误代码,描述,3,TriggerType,的类型已经非法改为,2255,130,非法数据地址,20,本地通信设备与,MSG,指令不兼容,131,非法数据值,21,本地通道配置参数存在错误,132,从机连接失败,22,目标或本地节点号大于最大允许的节点号,133,响应,33,存在一个损坏的,MSG,文件参数,134,从机忙,54,丢失调制解调设备信息,135,否定响应,55,本地处理器中信息传输超时,链接层超时,136,存储器奇偶校验错误,217,用户取消信息,137,非标准回应,129,非法函数,255,通道被关闭,Micro800,控制器的指令系统,4,、计数器(,Counter,),计数器功能块指令主要用于增减计数,主要指令见下表。,功能块,描述,CTD,(减计数),减计数,CTU,(增计数),增计数,CTUD,(给定加减计数),增减计数,Micro800,控制器的指令系统,4,、计数器(,Counter,),给定加减计数(,CTUD,),参数,参数类型,数据类型,描述,CU,Input,BOOL,加计数(当,CU,上升沿时,开始计数),CD,Input,BOOL,减计数(当,CD,上升沿时,开始计数),RESET,Input,BOOL,重置命令(高级)(,RESET,为真时,,CV=0,),LOAD,Input,BOOL,加载命令(高级)(当,LOAD,为真时,,CV=PV,),PV,Input,DINT,程序最大值,QU,Output,BOOL,上限,当,CV PV,时为真,QD,Output,BOOL,下限,当,CV 0,时为真,CV,Oytput,DINT,计数结果,Micro800,控制器的指令系统,4,、计数器(,Counter,),给定加减计数(,CTUD,),这个程序要实现的功能是加减计数,梯级一是一个字出发计时器,,TON_1.Q,每,3,秒输出一个动作脉冲,并复位计数器,重新计时。梯级二使能加减计数器模块。梯级三通过,decrease,位使能减计数,这时当,TON_1.Q,位输出一个脉冲时,,PV,值减,1,。同理,梯级四用来使能加计数。梯级五用来复位加减计数。这样便实现了加减计数功能。,Micro800,控制器的指令系统,5,、计时器(,Counter,),计时器功能块指令主要有以下,4,种,见下表。,功能块,描述,TOF,(延时断增计时),延时断计时,TON,(延时通增计时),延时通计时,TONOFF,(延时通延时断),在为真的梯级延时通,在为假的梯级延时断,TP,(上升沿计时),脉冲计时,Micro800,控制器的指令系统,(,1,)延时断增计时(,TOF,),增大内部计时器至给定值。,功能块,参数类型,数据类型,描述,IN,Input,BOOL,下降沿,,开始增大内部计时器;,上升沿,,停止且复位内部计时器,PT,Input,TIME,最大编程时间,见,Time,数据类型,Q,Output,BOOL,真:编程的时间没有消耗完,ET,Output,TIME,已消耗的时间,范围,01193h2m47s294ms,。,注:如果在功能块使用,EN,参数,当,EN,置真时,计时器开始增计时,且一直持续下去(即使,EN,变为假),Micro800,控制器的指令系统,(,1,)延时断增计时(,TOF,),功能块,参数类型,数据类型,描述,IN,Input,BOOL,下降沿,,开始增大内部计时器;,上升沿,,停止且复位内部计时器,PT,Input,TIME,最大编程时间,见,Time,数据类型,Q,Output,BOOL,真:编程的时间没有消耗完,ET,Output,TIME,已消耗的时间,范围,01193h2m47s294ms,。,注:如果在功能块使用,EN,参数,当,EN,置真时,计时器开始增计时,且一直持续下去(即使,EN,变为假),延时断增计时功能块时序图,Micro800,控制器的指令系统,(,1,)延时断增计时(,TOF,),延时断增功能块,本质是输入断开(即下降沿)一段时间(达到计时值)后,功能块输出(,Q,)才从原来的通状态(,1,状态)变为断状态(,0,状态),即延时断,。从图中看,,梯级条件,IN,的下降沿才能触发计时器工作,,,且当计时未达到预置值,PT,时,如果,IN,又有下降沿,计时器将从新开始计时,。参数,ET,表示的是已消耗的时间,即从计时开始到目前为止计时器统计的时间,明显的,,ET,的取值范围是(,0,,,PT,)。,延时断增计时功能块时序图,Micro800,控制器的指令系统,(,1,)延时断增计时(,TOF,),输出,Q,的状态由两个条件控制,从时序图可以看到:当,IN,为上升沿时,,,Q,开始从,0,变为,1,,前提是原来状态为,0,如果原来的状态是,1,,即上次计时没有完成,则如果又遇到,IN,的上升沿,,Q,保持原来,1,的状态;,当计时器完成计时后,,Q,才回复到,0,状态,。所以,Q,由,IN,的状态和计时器完成情况共同控制,。,延时断增计时功能块时序图,Micro800,控制器的指令系统,(,1,)延时断增计时(,TOF,),当,delay_control_in,置,1,时,,delay_control_out,置位,此时,TOF_1.Q,位保持为,1,。当,delay_control_in,由,1,变为,0,时,断电延时计时器开始计时,计时,3s,后,,TOF_1.Q,位由,1,变为,0,,梯级二导通,,delay_control_out,复位。由此实现断电延时功能。,Micro800,控制器的指令系统,(,2,)延时通增计时(,TON,),功能块,参数类型,数据类型,描述,IN,Input,BOOL,上升沿,,开始增大内部计时器;,下降沿,,停止且复位内部计时器,PT,Input,TIME,最大编程时间,见,Time,数据类型,Q,Output,BOOL,真:编程的时间没有消耗完,
展开阅读全文