接地棒接地极 接地极和接地装置( 三 )


注意,这里的MODBUS通信码满足PLC的IEC 61131-3编程模块要求,一般的PLC梯形图没有此功能 。梯形图满足IEC 61131-1要求,但不满足IEC 61131-3要求 。
第五,在PLC的内存中开辟专用数据区,存放从电力仪表读取到并处理后的信息,以便让更高层的总站来读取信息 。此数据区有一个名称,叫做数据点表,有时也简称通信协议 。
最后,当然就是开机测试了 。其中的内容很多,限于篇幅不再介绍 。
我们来看一个在RS485网络上用MODBUS-RTU读取数据的例子,如下:
某电力仪表,地址是01H 。在电力仪表内存第2000的位置上,放置了三相电流和三相电压等6个数据,每个数据占用两个字节,共12个字节 。
此电力仪表的通信速率是9600bps 。什么意思呢?bps表示一个0/1,也就是比特,这说明每秒钟这条总线上可以发送9600个比特 。我们已经知道一个字节有8个数据位,1个起始位,1个奇偶校验位,刚好10位或者10个比特,所以,如果电力仪表的通信速率是9600bps,那么1秒钟就可以发送:9600/10=960个字节 。
我们还知道,主站的读数据的帧结构(下行帧)中,有1个字节的地址,1个字节的功能码,2个字节的内存地址,2个字节的数据数量,2个字节的CRC校验码,总共有8个字节,所以主站发送读数据MODBUS通信帧占用的时间是:8X10/9600=8.33毫秒 。
对于本例,我们知道MODBUS-RUT读数据的命令是0X03H,也即03命令 。注意这里的写法:0X是字头,中间的03是命令,最后的H表示是16进制 。
具体通信帧的是:01 03 07 D0 00 06 C5 45,其中0X01H是地址,0X03H是命令,0X07D0H是内存地址2000,0X0006H表示读取连续6个字,也即内存中的电流和电压参数,0XC545H是01 03 07 D0 00 06的CRC校验码 。
那么电力仪表的回应帧(上行帧)的帧结构是:1个字节的地址,1个字节的功能码,1个字节的数据区字节数,12个字节的数据,2个字节的CRC校验码,总共17个字节,占用时间是:17X10/9600=17.7毫秒 。
具体的仪表回应通信帧是:01 03 0C 00 64 0064 0064 00 DC 00 DC 00 DC D6 F5,其中0X01H和0X03H的意义同前,0X0CH表示上传数据区有12个字节,0X0064H表示A相电流为100A,后面的两组为B相和C相电流,均为100A,0X00DCH表示A相电压为220V,其后两组为B相和C相电压,均为220V,最后0XD6F5H为CRC校验码 。
从主站发起下行通信帧,再等待10毫秒让从站回应,再接收到从站发还的上行通信帧,总历时为:
如果有31个相同的仪表等待主站一一访问,则主站从访问第一个仪表开始,到最后回应完毕,总历时:
这里的1.12秒就是在通信速率为9600bps下这31台仪表的读数据循环周期,且忽略了主站再次发送下行通信帧的等待时间,实际时间会略微再长一些 。
相信,看到这里,大家对MODBUS-RTU下的通信帧应当有了较为深刻的认识 。
提醒大家:一个字有两个字节 。一般地,字节只能用来表达8个开关量 。但对于模拟量,则要用字来表达 。例如电流1250A,16进制下是04E2H,要用2个字节才能表达完整 。也因此,各种电力仪表中,模拟量都是用字来表达的 。
以下是MODBUS的部分常用功能码,也即命令码:
以下是PLC在读取双投开关ASCO控制器的数据点表的下行和上行通信帧范例:
几个相关的问题解释一下:
1)有些现场总线,用令牌解决了总线的控制权问题 。
大家很容易想到,如果从站有紧急事项需要主站来服务,可是MODBUS规定了轮询规则,等到自己的时候,可能会太迟了 。于是许多现场总线就发明了一个特殊的东西,叫做令牌 。令牌很短,只有一个字节,它可以很快地在总线上传递 。令牌在各站点中传递,谁拿到令牌,谁就是主站,就可以发布信息 。如果本站没有事情需要发布,就把令牌交给下一个站点,由此解决了总线占用问题 。