200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 三菱FX系列PLC编程口通讯协议实例

三菱FX系列PLC编程口通讯协议实例

时间:2020-04-02 23:11:30

相关推荐

三菱FX系列PLC编程口通讯协议实例

三菱FX系列PLC编程口通讯协议实例

一、协议介绍

通过编程口通讯协议,计算机可以通过串口或USB接口向PLC读写数据,以及置位或复位软元件,但PLC不能主动向计算机发送信息。具体可操作的软元件有:X/Y/M/S/T/C/D。

由于只需要PLC主机和一根编程线缆即可简单通讯,无需另外购置如232-BD等通讯板,因此编程口通讯实际上非常实用。可惜的是,三菱的官方手册《FX通讯用户手册》却根本没有介绍这个通讯协议,网络上能找到的资料也很少。仅找到的一篇如下,其中也有很多语焉不详的地方,埋了不少坑。本文通过实际操作,简单总结一下该协议的使用方法和注意点。

链接: 三菱PLC编程口协议.

二、通讯设置

必须设置为:波特率9600,偶校验,7位数据位。否则无法通讯。

三、

读写操作时数据的基本格式:

注意:

通讯协议中的所有字符是用它们的十六进制ASCII码表示。如果有十进制数据,要先转化为十六进制数,再把十六进制数的每个字符用它相应的十六进制ASCII码表示。以下有详解。

参数详解:

STX: ASCII码,含义为Start of Text,十六进制代码为02H;

CMD:读操作时为0,即十六进制代码30H;写操作时为1,即十六进制代码31H;

ADDR:要操作的软元件的起始地址,查表可得,如下。注意是起始地址,例如要查询D0、D11寄存器的数据,写入D0的地址即可。ADDR为4个十六进制ASCII码。如D0查表地址为1000,每个字符均用十六进制ASCII码表示,即为:31 30 30 30。

NUM:字节数,用两个十六进制ASCII码表示,取值范围为01H-40H。这个数据是比较tricky的地方,一定要注意。理论上它是指“要操作的所有软元件对应的字节数”,比如:

要读D0中的数据,因为D软元件是用2个字节表示的,则NUM为02,十六进制ASCII码为 30 32;

要读D0、D1两个D软元件中的数据,则NUM为04,十六进制ASCII码为 30 34;

如果是读Y0-Y7这8个位软元件的状态,因为8个位为一个字节,所以NUM为01,十六进制ASCII码为 30 31;

如果是写数据,比如写十六制数122F到D0中,则NUM一样为02,写数据到D0、D1中,则NUM为04。注意:

这里NUM和要写的数据大小或是几位数无关。比如写十进制1(十六进制0001)或写十进制65535(十六进制FFFF)到D0,NUM都是02;

写的数据是十六进制ASCII码,不能直接写十进制数;

规定写数据时NUM必须为偶数(读的时候NUM为奇数或偶数均可),所以就有例外情况:如果是写数据到Y0-Y7中,NUM数不是01,而是02。

数据DATA:读操作时无此项。写操作时该值必须以4个字符为一组,且低位2个在前,高位2个在后。比如:要写十进制10到D0中,10的十六制表示为A,要4个字符表示所以前面补0为000A;又要求低位在前高位在后,则表示为0A00,把每个字符都用十六进制ASCII码表示,即为:30 41 30 30。

ETX:ASCII码,含义为End of Text,十六进制代码为03H;

累加和SUM: SUM = CMD + ADDR + NUM + DATA1+DATA2+…+ETX,注意不包括开始字符STX. 结果超过两位数取后两位,低于两位前面补0. 注意十六进制数的累加计算方法:逢16进1.比如:35+38+45,先个位相加:5+ 8+5=18>16,进1位剩2,2即是结果的个位数;十位相加:3+3+4+1(进位)=11,十六进制表示为B,所以相加结果就是B2。再把这两个字符用十六进制ASCII码表示即为:42 32 .

四、举例

1、计算机要读PLC的D0中的值:STX为02,CMD为30,ADDR为1000即31 30 30 30,NUM为02即 30 32,ETX为03,SUM为30+31+30+30+30+30+32+03=156,取后两位56即为35 36,所以计算机向PLC发送的数据为:02 30 31 30 30 30 30 32 03 35 36

2、计算机要写十进制4660 到PLC的D0,十进制22136到D1 :STX为02,CMD为31,ADDR为1000即31 30 30 30,NUM为04即 30 34,十进制4660转为十六进制为1234,换位后即:33 34 31 32,22136转为十六进制为5678,换位后即:37 38 35 36,ETX为03,SUM=31+31+30+30+30+30+34+33+34+31+32+37+38+35+36+03=2FD,取后两位FD即为 46 44,所以计算机向PLC发送的数据为:02 31 31 30 30 30 30 34 33 34 31 32 37 38 35 36 03 46 44

五、实测结果

另外还有置位和复位指令,格式相对简单些,下次再介绍。实际同样也可以通过上述读写指令实现。以上指令在FX2N下实测通过。第一次写文,如有错误,欢迎指正;如有疑问,欢迎留言。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。