1、第7章 非周期性数据的应用第第7 7章章 非周期性数据的应用非周期性数据的应用7.1 周期性数据和非周期性数据周期性数据和非周期性数据7.2 Modbus RTU的非周期性数据的非周期性数据7.3 CANopen的非周期性数据的非周期性数据7.4 Profibus DP的非周期性数据的非周期性数据7.5 工业以太网的非周期性数据工业以太网的非周期性数据小结小结思考与习题思考与习题第7章 非周期性数据的应用知识目标知识目标(1)了解非周期性数据的特征。(2)理解不同通信协议非周期性数据的处理方法。能力目标能力目标(1)掌握各种通信协议非周期性数据功能块的使用。(2)掌握非周期性数据分析的方法。第
2、7章 非周期性数据的应用7.1 周期性数据和非周期性数据周期性数据和非周期性数据现场总线应用中,周期性数据为现场设备的控制和监视提供支持,它也是现场应用中最常见、应用最多的数据类型。非周期性数据的应用相对较少,但它可以对现场设备的参数进行读/写的操作,也是我们必须要了解的一种数据类型。第7章 非周期性数据的应用周期性数据是指设备之间根据一定的周期来反复进行的访问数据,并由控制者决定其开始及结束的时间。周期性数据通常用于现场设备的控制和监视,因为控制和监视的数据本身需要反复进行,而不是访问一次就可以的。第7章 非周期性数据的应用例如:控制变频器时的频率给定值就是需要不停地重复给定的,变频器也会根
3、据当前的频率给定值来改变自身的输出频率,这样一旦频率给定值发生变化,变频器的输出频率也会跟着立即变化;变频器的输出电流也是需要不停地重复读出的,这样我们才能知道电机运行的实时电流,并根据当前电流的大小及持续时间来判断电机是否过载或欠载。周期性数据的周期是由上位机的扫描周期、通信的速率及收发器的性能决定的,它们的响应时间通常都很短,是毫秒甚至微秒级的,用以保证周期性数据的每一帧都能准确无误地传递。周期性数据是整个通信数据中比例较大的部分,而且对速率的要求较高。第7章 非周期性数据的应用非周期性数据是指设备之间根据控制者的需求发起的一次或多次的访问数据,并在每次成功访问后结束。非周期性数据通常用于
4、现场设备的参数修改或读取,这些修改或读取通常只需要进行一次即可,因为修改或读取成功即可进行其他的工作,不需要重复进行。一旦非周期性数据需要再次或多次访问,重新申请一次或多次访问即可。第7章 非周期性数据的应用例如,将变频器的加速时间由出厂设置的3秒修改为30秒,只需要通过非周期性数据申请写入,将加速时间修改为30秒并保存即可,修改成功之后无需重复写入。非周期性数据访问需要的时间一样取决于上位机的扫描周期、通信的速率及收发器的性能,但由于非周期性数据通常对实时性的要求不是很高,所以对现场总线上设备的性能并没有很高的要求。非周期性数据是整个通信数据中比例较小的部分,只在需要的时候发起并结束,对速率
5、的要求不是特别高。第7章 非周期性数据的应用目前对现场设备的参数访问中,有DTM、webserver等手段,也有很多设备本身就具有参数切换的功能,甚至有些现场也靠尽量缩短开始和结束之间的时间间隔来把周期性数据当作非周期数据来使用。再加上很多通信协议将非周期性数据的访问定义得过于严苛和复杂,导致非周期性数据的应用越来越少。但非周期性数据的应用我们还是需要了解的,它对我们理解通信的内容和过程有很大的帮助。第7章 非周期性数据的应用7.2 Modbus RTU的非周期性数据的非周期性数据Modbus RTU通信协议中并没有定义如CANopen里的SDO、Profibus DP里的PKW这类的非周期性
6、数据,但是它也有方法可以将数据进行非周期性的读/写。我们将以施耐德M340的PLC和施耐德ATV71变频器的Modbus RTU通信为例来说明两种方法,即使用READ_VAR和WRITE_VAR功能块以及使用DATA_EXCH功能块。第7章 非周期性数据的应用7.2.1 7.2.1 使用使用READ_VARREAD_VAR和和WRITE_VARWRITE_VAR功能块功能块在第3章中,我们已经了解了使用READ_VAR和WRITE_VAR功能块来对数据进行周期性读写的方法,如图7-1所示。从这段程序中我们可以看到,在令牌触发的情况下,READ_VAR和WRITE_VAR功能块就会开始工作,进行
7、周期性数据的读和写的操作。第7章 非周期性数据的应用图7-1 Modbus中READ_VAR和WRITE_VAR第7章 非周期性数据的应用这种情况下想进行非周期性数据的读/写也很简单,只需要在READ_VAR和WRITE_VAR功能块前面再附加一个触发条件就可以了,当触发条件满足时就开始读/写,当触发条件失效时就停止读/写。例如,可以在READ_VAR功能块的EN脚前面串联一个M0的常开触点,需要READ_VAR功能块进行读操作时就让M0的触点闭合,需要READ_VAR功能块结束读操作时就让M0的触点打开。M0的闭合和打开的时机完全可以由编程者自己决定,如定时进行、其他条件触发进行、人为结束、
8、成功读取数据后结束等很多方法,这里不再赘述。第7章 非周期性数据的应用7.2.2 7.2.2 使用使用DATA_EXCHDATA_EXCH功能块功能块DATA_EXCH是一个用于数据传输的功能块,在施耐德M340的CPU上,它可以用于将Modbus的请求发送到另一个设备。与READ_VAR及WRITE_VAR功能块不同,DATA_EXCH更像是人为地传输一个或多个数据帧。在“项目浏览器”“项目”“变量和FB实例”“基本变量”中建立3个类型为INT的变量,如图7-2所示。第7章 非周期性数据的应用图7-2 新建变量的界面第7章 非周期性数据的应用REG变量用于存放即将读或写的变频器的寄存器地址;
9、FUN用于存放读或写请求的Modbus功能码;VAL用于存放读出的值或即将写入的值。在“项目浏览器”“项目”“程序”“任务”“MAST”“段”中新建一个FBD格式名为“DATA_EXCH”的程序,如图7-3所示。第7章 非周期性数据的应用图7-3 新建DATA_EXCH程序第7章 非周期性数据的应用在理解这段程序之前,我们需要先回忆一下Modbus数据帧的格式。(1)03功能码的消息格式如下:主机请求第7章 非周期性数据的应用(2)06功能码的主机请求和从机应答的消息格式是相同的。格式如下:DATA_EXCH功能块的EMIS脚输入的数据中不需要包含从站编号和CRC16校验,对应之前建立的3个变
10、量。DATA_EXCH功能块的EMIS脚输入的数据格式如下:第7章 非周期性数据的应用(1)03功能码的消息格式如下:第7章 非周期性数据的应用03功能码和06功能码对于DATA_EXCH功能块的EMIS脚来说需要处理的消息格式是一致的。格式如下:但是要注意,DATA_EXCH功能块的EMIS脚输入的要求是“低字节在前,高字节在后”,那么我们需要把刚才的消息格式按照从前到后的顺序进行高低字节的位置互换。互换之后消息格式如下:第7章 非周期性数据的应用理解了EMIS脚输入的消息格式后,我们就可以理解刚才的程序中前3个MOVE功能块的功能了,如图7-4所示。图7-4 前3个MOVE功能块第7章 非
11、周期性数据的应用在程序中,我们看到DATA_EXCH功能块的EMIS脚输入的是%MW50、%MW51、%MW52这3个由INT型数组成的数组内的数据。在经过这3个MOVE功能块的数据输入后,%MW50、%MW51、%MW52里面存储的数据如下:其中REG&16#FF00表示变量REG和十六进制的FF00相与,即保留变量REG的高字节,因为一个字和十六进制的FF00相与即和1111 1111 0000 0000相与,高字节的8位值会按原样保留,低字节的8位会变为0。第7章 非周期性数据的应用同理,VAL&16#FF00可以保留VAL的高字节,REG&16#00FF可以保留REG的低字节,VAL&
12、16#00FF可以保留VAL的低字节。也就是说,经过前面的3个MOVE功能块后,%MW50、%MW51、%MW52里面存储的数据如下:可以看到,这跟之前提到的DATA_EXCH的EMIS脚需求的输入格式是一致的,前3个MOVE功能块的作用就是把数据转化为EMIS脚需求的格式。第7章 非周期性数据的应用第4个MOVE功能块则要简单得多,是将%MW103赋值5,如图7-5所示。图7-5 第4个MOVE功能块第7章 非周期性数据的应用这一步的意义是,我们传递数据一共只使用了5个字节,第3个字的高字节没有用到,我们必须要将使用的数据长度分配给GEST脚的第4个字即%MW103内,以保证数据传输的正常进
13、行。第7章 非周期性数据的应用最后一步就是关键的DATA_EXCH功能块,如图7-6所示。图7-6 DATA_EXCH功能块第7章 非周期性数据的应用ADR对应的是需要传输的地址,我们通过一个ADDM功能块将变频器的地址“0.0.0.3”写入。TYP对应的是操作模式,对于M340我们输入的值是1,代表传输数据后等待接收。EMIS对应的是数据帧的一部分,这部分内容我们刚才已经做了详细介绍。GEST对应的是交换管理区,比较重要的就是它的第4个字。RECP对应的是数据接收区,我们使用的是从%MW80开始的连续10个字。第7章 非周期性数据的应用在“项目浏览器”“动态数据表”内新建一个动态数据表,如图
14、7-7所示。图7-7 新建动态数据表界面第7章 非周期性数据的应用在PLC和变频器正常连接后,于在线模式下,将REG修改为“3201”,VAL修改为“1”,FUN修改为“3”,如图7-8所示。图7-8 待机时的状态字界面第7章 非周期性数据的应用立即读取状态字的值,读取出来的结果显示在%MW80、%MW81内的数据是十六进制的02 03,33 00。当然,这里的数据也是低字节在前高字节在后的,我们将高低字节内的数值互换,即得到正确的反馈信息是03 02,00 33。参考之前的Modbus反馈信息的格式,我们可知它表达的意思是读到2个字节的值为0033,即变频器处于待机状态。第7章 非周期性数据
15、的应用在变频器处于RUN状态下,读取到的信息如图7-9所示。第7章 非周期性数据的应用我们再将REG修改为9001,VAL修改为600,FUN修改为6,如图7-10所示。图7-10 修改加速时间的界面第7章 非周期性数据的应用就是请求将变频器的9001即加速时间修改为600(即60秒),反馈的数据转换后为十六进制的06 23 29 02 58 00,即十进制的06 9001 600,参数修改成功。ATV71变频器的参数在修改之后,如果希望在断电并再次上电之后参数依然有效,需要对扩展控制字CMI的bit1置1,以将参数保存至变频器的EEPROM。需要注意的是,在参数成功保存之后CMI的bit1会
16、自动回零,一定不要重复地将其置1,因为EEPROM的寿命是有限的,重复的置1会导致变频器的EEPROM快速损坏。第7章 非周期性数据的应用如果希望DATA_EXCH功能块按照我们的需求只执行一次或有限次,可以按照之前在READ_VAR和WRITE_VAR里提到的方法,用一定的触发条件来触发及结束DATA_EXCH功能块即可。第7章 非周期性数据的应用7.3 CANopen的非周期性数据的非周期性数据CANopen中有定义专门用于非周期性数据的SDO类型,我们将以施耐德M340的PLC和施耐德ATV71变频器来进行实验,在M340中同样可以使用READ_VAR和WRITE_VAR功能块来实现CA
17、Nopen的SDO读/写,只是引脚的输入和Modbus略有不同。第7章 非周期性数据的应用本实验中,我们使用的是BMX P34 20102的CPU,它有一个自带的CANopen接口,将其连接至变频器的CANopen接口即可,变频器的地址设置为3,PLC的CANopen网络组态中一样将变频器的地址组态设置为3。在“项目浏览器”“变量和FB实例”“基本变量”中新建以下变量,如图7-11所示。第7章 非周期性数据的应用图7-11 新建变量界面第7章 非周期性数据的应用我们将M1和M2分别放置于READ_VAR和WRITE_VAR功能块的前端,用于触发读和写的操作,它们的变量类型为BOOL。REG1和
18、REG2在程序中用于输入读或写的变频器的寄存器地址,它们的变量类型为DINT,因为SDO的CANopen地址包含索引和子索引,需要占用两个字。第7章 非周期性数据的应用在“项目浏览器”“程序”“任务”“MAST”“段”中新建名为“READWRITE”的LD格式程序。输入读的程序如图7-12所示。图7-12 新建读程序第7章 非周期性数据的应用M1用于触发READ_VAR功能块。ADR脚对应的是CANopen从站即变频器的地址,我们需要使用一个ADDM的命令来输入“0.0.2.3”,0.0.2对应的是CPU上自带的CANopen接口,3对应的是变频器的CANopen地址。OBJ脚对应的是读取的数
19、据类型,由于我们需要读取的是SDO数据,这里输入“sdo”,这点和Modbus是不同的。NUM脚对应的是读取的寄存器地址,这里输入之前建立的变量REG1。需要注意的是,这个地址对应的是CANopen的地址即包含索引和子索引,而且它是“低字在前,高字在后”,在修改REG1的值时需要把子索引放在前面,索引放在后面。第7章 非周期性数据的应用NB脚对应的是需要读取的寄存器偏移量,这里设置为0。GEST脚对应的是数据交换管理表,这里输入一个从%MW200开始长度为4的数组来存放交换管理表。RECP脚对应的是读操作后的数据接收区,这里输入一个从%MW100开始长度为16的数组来存放接收到的数据。第7章
20、非周期性数据的应用在“READWRITE”程序中输入写的程序,如图7-13所示。图7-13 新建写程序第7章 非周期性数据的应用M2用于触发WRITE_VAR功能块。ADR脚对应的是CANopen从站即变频器的地址,输入一个和READ_VAR功能块中一样的地址ADDM(0.0.2.3)。OBJ脚对应的是写入的数据类型,由于我们需要写入的是SDO数据,这里输入“sdo”,和READ_VAR功能块中一样。NUM脚对应的是写入的寄存器地址,这里输入之前建立的变量REG2,一样是“低字在前,高字在后”,在修改REG2的值时同样需要把子索引放在前面,索引放在后面。第7章 非周期性数据的应用NB脚对应的是
21、需要写入的寄存器偏移量,这里设置为0。EMIS脚对应的是需要写入寄存器的值,这里使用了一个从%MW300开始长度为2的数组来输入要写入的值。GEST脚对应的是数据交换管理表,这里输入一个从%MW400开始长度为4的数组来存放交换管理表。需要注意的是,WRITE_VAR功能块有一点不同的地方是必须要从GEST中指定写入的数据长度,否则写操作不能正常进行。本例中,我们需要在%MW403中输入2,即数据长度为2个字节。第7章 非周期性数据的应用在“项目浏览器”“动态数据表”中新建一个数据表,如图7-14所示。图7-14 新建数据表界面第7章 非周期性数据的应用从变频器的通信地址表中查到状态字ETA的
22、CANopen地址为6041/00,即索引6041,子索引00。在数据表中将REG1的值修改为“16#0000_6041”(子索引在前,索引在后),M1的值修改为“1”,可以看到%MW100读出的值为“16#0033”,状态字显示变频器处于待机状态,如图7-15所示。第7章 非周期性数据的应用图7-15 读取状态字的界面第7章 非周期性数据的应用从变频器的地址表中查到加速时间ACC的CANopen地址为16#203C/2,即索引203C,子索引2。在数据表中将REG2的值修改为“16#0002_203C”(子索引在前,索引在后),%MW403的值修改为“2”(写入数据的长度),%MW300的值
23、修改为“600”(即60秒),M2的值修改为“1”,如图7-16所示。第7章 非周期性数据的应用图7-16 修改加速时间的界面第7章 非周期性数据的应用7.4 Profibus DP的非周期性数据的非周期性数据我们使用的实验设备是西门子S7-300的PLC和施耐德ATV340的变频器,在组态过程中将ATV340添加至Profibus DP网络后,将其PPO数据类型选择为Telegram 100(4PKW/2PZD),如图7-17所示。第7章 非周期性数据的应用图7-17 PPO数据类型选择的界面第7章 非周期性数据的应用从组态界面中我们可以看到,“I地址”和“Q地址”中的“50.57”的8个字
24、节即4个字就是PKW,而“I地址”和“Q地址”中的“58.61”的4个字节即2个字就是PZD。需要注意的是,施耐德变频器的Telegram 100是特定的报文格式,它的PKW定义及访问和其他Profidrive设备是不同的。它的输入PKW区定义如表7-1所示。第7章 非周期性数据的应用第7章 非周期性数据的应用第7章 非周期性数据的应用从它的输入和输出的PKW区定义可以看到,和PZD同自己映射的数据一一对应不同,PKW的读和写是由多个字配合完成的,每个字都有自己不同的功能。输入和输出的PKW1都用于存放需要读或写的参数所对应的Modbus地址;输入的PKW2用于存放当前操作的请求是读或写,输出
25、的PKW2用于存放请求的响应进度;输入的PKW3、PKW4用于存放需要写入的值,输出的PKW3、PKW4用于存放请求成功之后的值。第7章 非周期性数据的应用在对PKW进行访问时,需要使用西门子PLC内置的SFC58和SFC59即WR_REC写数据记录和RD_REC读数据记录这两个模块。在主程序OB1中添加程序,如图7-18所示。第7章 非周期性数据的应用图7-18 添加程序第7章 非周期性数据的应用图7-18 添加程序第7章 非周期性数据的应用程序段1中,通过MOVE指令将十六进制的值32即十进制的值50写入到寄存器%MW16中,用以对应PKW的起始地址50。程序段2中,通过WR_REC功能块
26、将寄存器%MW4中存储的参数的Modbus逻辑地址写入到PKW中。程序段3中,通过RD_REC功能块将程序段2中对应的参数的Modbus逻辑地址的值读出,并存储在%MW6中。第7章 非周期性数据的应用程序段4中,通过WR_REC功能块将寄存器%MW8中存储的值写入到程序段2中对应的参数的Modbus逻辑地址中。需要注意的是,RD_REC功能块和WR_REC功能块都是对PKW区整体操作的,其在程序中不同的位置实现的功能可能不同,具体操作值的对应关系请参考之前PKW区的定义。第7章 非周期性数据的应用在博图软件中新建监控表如图7-19所示。图7-19 新建监控表的界面第7章 非周期性数据的应用从变
27、频器的通信地址表我们得知ATV340变频器的参数“加速时间”的逻辑地址为9001,在监控表中将%MW4的修改值设置为9001刷新,并将%MW0.0强制为TRUE,将9001发送到PKW中;再将%MW0.1强制为TRUE,即可读出当前9001的值显示在%MW6中,显示为30(即3秒),如图7-20所示。第7章 非周期性数据的应用图7-20 读取加速时间的界面第7章 非周期性数据的应用再次将%MW8的修改值设置为300刷新,并将%MW0.2强制为TRUE,即可将300(即30秒)写入到9001中,从%MW6的读取值变为300可以看到修改成功,如图7-21所示。第7章 非周期性数据的应用图7-21
28、写入加速时间的界面第7章 非周期性数据的应用使用同样的方法,可以通过修改这几个寄存器的值来实现对变频器其他参数的读/写。如读取状态字3201的值,如图7-22所示。第7章 非周期性数据的应用图7-22 读取状态字的界面第7章 非周期性数据的应用当然,状态字3201的值是只读的,不可写。如果需要设置的参数在变频器断电后能够保存,和Modbus通信中的操作一样需要将扩展控制字的对应位赋值,这里不再赘述。从监控表的操作中可以看到,PKW对参数的读或写的操作是通过寄存器的一次次赋值以及将%M0.0、%M0.1、%M0.2强制为TRUE来执行的,当%M0.0、%M0.1、%M0.2强制为FALSE后即操
29、作结束,并不会跟随PLC的扫描周期反复进行,这就是非周期性数据的典型特征。第7章 非周期性数据的应用7.5 工业以太网的非周期性数据工业以太网的非周期性数据在前面的章节我们提到工业以太网和很多通信协议的应用层都是类似的,如Modbus TCP和Modbus RTU,在非周期性数据的处理上,它们也有很多是类似的。Modbus TCP和Modbus RTU类似,在处理非周期性数据时,可以使用READ_VAR和WRITE_VAR功能块,也可以使用DATA_EXCH功能块。第7章 非周期性数据的应用Ethernet IP在处理非周期性数据时,可以使用和周期性数据类似的方法再加上附加的触发条件即可,即人
30、为控制周期性数据的开始和结束,不让数据跟随着循环周期不断地刷新;也可以使用DATA_EXCH功能块。Profinet在处理非周期性数据时,和Profibus DP类似,用PKW的读/写办法即可。总而言之,工业以太网的非周期性数据的处理可以参考本章之前的一些方法,它们只是在网络组态及功能块的部分引脚定义上面有所不同,这里不再赘述。第7章 非周期性数据的应用小小 结结本章通过实验介绍了多个不同的通信协议访问非周期性数据的方法,但是不同的上位机和受控设备在非周期性数据的处理方法上也许是不同的,本章介绍的方法只能针对对应的型号。第7章 非周期性数据的应用非周期性数据通常用于受控设备参数的读/写,这种方
31、式在目前的很多上位机中都是需要通过编程来实现的,需要对数据的结构非常清楚,否则很容易出错;周期性数据则通常只需要通过网络组态来映射出地址便可直接调用。但是,周期性数据通常数量都是有限的,非周期性数据则可以通过编程来实现大量数据的读/写。在使用过程中一定要注意非周期性数据相关的功能或功能块本身是否是循环的、是否需要触发条件,因为很多非周期性数据处理的功能或功能块本身是循环的,需要人为控制其启动和停止,否则很容易导致带宽的大量占用,甚至是设备损坏。第7章 非周期性数据的应用周期性数据和非周期性数据在有的通信协议中,仅仅从程序层面看也许差别不大,但它们需要实现的目标是截然不同的。周期性数据传递的是高
32、速、实时的数据,所以被广泛应用于控制和监视;非周期性数据则对速率和实时性的要求不高,但可以大量出现,因为每个非周期性数据在自己的读/写任务完成之后就结束了,并不会占用很大的带宽。第7章 非周期性数据的应用目前,很多受控设备都在自身添加了参数切换的功能,通过逻辑输入的组合便可以切换大量的参数;或者添加了可读/写的DTM,通过对应的软件或脚本便可快速地修改参数。所以,对于通过非周期性数据来修改、读取参数的需求现在越来越少,甚至很多现场人员喜欢直接使用周期性数据和触发条件的组合来实现非周期性数据,因为这样编程的压力会更小。但是,我们还是需要掌握非周期性数据的不同使用方法的,在熟练的运用之后它的程序也
33、是可以直接套用的,而且它对我们加深数据处理的过程很有帮助。第7章 非周期性数据的应用思思考考与与习习题题1.读取流量计的实时压力、压力阈值分别需要使用哪种类型的数据?2.Modbus RTU使用哪些功能块可以实现非周期性数据的读/写?3.使用DATA_EXCH功能块时为什么数据帧内的数据要进行高、低字节位置互换?4.DATA_EXCH功能块在哪里指定传输数据的长度?第7章 非周期性数据的应用5.使用READ_VAR功能块读取SDO时NUM脚输入的是什么内容?6.本章SDO实例中,如果M2一直导通,WRITE_VAR是否会循环写入数据?7.Telegram 100中包含4个PKW,是否只能读写4个非周期性数据?8.PKW的输入和输出区的PKW2可能包含的内容是什么?9.西门子PLC用于施耐德变频器PKW读/写的内部功能块是什么?10.周期性数据和非周期性数据的典型区别是什么?
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。