一、
通讯参数包含数据位,中止位,波特率、校验方法。
数据位、中止位、波特率由单片机决议。组态王中的设定和单片机共同即可。校验方法参照“数据传输格局”中相关部分。
二、
格局1、组态王发送地址恳求格局:(此刻检验位为1)
ENQ |
Sta |
EOT |
CRC |
格局2、单片机应对地址格局:(此刻检验位为0)
ACK |
Sta |
ETX |
CRC |
格局3、组态王读数据恳求格局:(此刻检验位为0)
ENQ |
R |
DataType |
DataAddr |
DataNum |
EOT |
CRC |
格局4、单片机应对读数据格局(正确):(此刻检验位为0)
ACK |
DataLong |
Data…. |
ETX |
CRC |
格局5、单片机应对读数据格局(过错):(此刻检验位为0)
NAK |
ErrorCode |
ETX |
CRC |
格局6、组态王写数据恳求格局:(此刻检验位为0)
ENQ |
W |
DataType |
DataAddr |
|||
Data…. |
EOT |
CRC |
|
|||
格局7、单片机应对写数据格局(正确):(此刻检验位为0)
ACK |
ErrorCode |
ETX |
CRC |
三、时序:
读数据:
组态王 |
单片机 |
第一步:格局1 |
|
|
第二步:格局2 |
第三步:格局3 |
|
|
第四步:格局4或格局5 |
第五步:假如第四步单片机履行格局4,完毕。不然,履行格局1。 |
|
|
第六步:格局2 |
第七步:格局3 |
|
|
第八步:格局4或格局5 |
写数据:
组态王 |
单片机 |
第一步:格局1 |
|
|
第二步:格局2 |
第三步:格局6 |
|
|
第四步:格局7 |
第五步:假如第四步单片机履行格局7的ErrorCode=0,完毕。不然,履行格局1。 |
|
|
第六步:格局2 |
第七步:格局6 |
|
|
第八步:格局7 |
四、协议阐明:
数据传输:一切数据均为16进制数
ENQ(头) |
H05 |
问询 |
恳求帧的开端代码 |
ACK(头) |
H06 |
承认 |
ACK应对帧的开端代码 |
NAK(头) |
H15 |
否定 |
NAK应对帧的开端代码 |
EOT(尾) |
H04 |
正文的完毕 |
恳求帧的完毕ASCII代码 |
ETX(尾) |
H03 |
完毕正文 |
应对帧的完毕ASCII代码 |
Sta:: 设备地址1字节
R:
W:
DataType;需求交流的数据类型,1字节。1,字节;2,字,3,浮点型。
DataType的值 |
意义 |
1 |
字节 |
2 |
字 |
3 |
浮点数 |
DataNum:要读取的数据的数量,1字节。
DataAddr;为数据偏移地址2字节,低字节在前,高字节在后
Data: 实践传输的数据,低字节在前,高字节在后
DataLong:
CRC: 为从第一个字节 至CRC前的一切字节的异或值,1字节
ErrorCode:
ErrorCode数值 |
意义 |
0 |
正确应对 |
1 |
数据类型过错 |
2 |
数据规模超限 |
3 |
指令无法辨认,应为R或W。 |
4 |
校验过错 |
以上协议若有不当之处,可洽谈改动。