因工程须要,须要了解三菱PLC编程口通信协议,觉得后续的上位机串口通信打下相关基础……html
毕竟首次接触此类通信,对其原理不甚了解,致使走了很多弯路,故记下之,以避免忘记。编程
须要工具与资料:ide
能找到此文章的,软件各位应该都是备齐了,若没有,请自行查找;工具
通信协议 下载地址(放两个,以避免失效):学习
通信实战连接:https://baijiahao.baidu.com/s?id=1580866577419831498&wfr=spider&for=pc测试
下述图文为小子理解时的一些细节。.net
下述图片为通信协议中最重要的两面截图:3d
从上看出,全部发出的命令都为11个两位数(如:02 30 31 30 31 34 30 32 03 35 41,数与数之间有一个空格),而且这些两位数必须为16进制(H)的ASCII码(在串口调试软件中,发送与接收最好都设置为16进制状态)……调试
若是要读取 D10的值,那命令以下(下图与协议中有细微区别,为方便理解):htm
请求:02 规定如此,不管读取仍是写入,此都为02
命令:30 30为从PLC读取数据,31为写入数据;0的ASCII码16进制表示为30,1的ASCII码为31,见下图
元件首地址:31 30 31 34 D10查表可得其地址的首地址为1014(行为1010,列4,1010+4=1014 16进制的加法),详见下图,1位数字对应1位ASCII码的16进制表示,1014即为31 30 31 34(1为31,0为30,4为34,注意中间的空格,在串口调试时必定不要忘记了中间的空格)
BYTE数:30 32 即02 因在三菱PLC中数据寄存器D为两个字节的存储,因此读取时必须为2个字节,即02,0对应30,2对应32,即30 32
结束:03 协议如此,不管读写都如此
校验和:35 42 按照前述照片协议校验和为 30+31+30+31+34+30+32+03=15B(16进制加法),取15B后边两位即5B,5对应ASCII中对应16进制为35,B为42
将“02 30 31 30 31 34 30 32 03 35 42” 填入发送区文本框,点击发送后,在接收区接收到 “02 33 30 37 35 03 44 32 ”
02:开始符,即请求开始
33 30 37 35:这四位为D10存储数据 前两位为数据为37 35 ,37对应的ASC码对应16进制为7,35为5,即75;后两位数据为 33 30 ,33为3,30为0,即30 (必定注意,此处的数据顺序) 33 30 37 35 转化为ASCII中16进制为7530,10进制为30000
在PLC中经过监视,D10确实为30000
03:命令结束符
44 32 :校验和 33+30+37+35+03=D2 D的ASCII 16进制为44,2为32
以上为D10读取测试详情(写与此相似,详细参考手册),其余软元件与此相似并注意如下事项:
源码下载地址:https://www.haolizi.net/example/view_18794.html