单片机与组态王通信协议
通讯参数包括数据位,停止位,波特率、校验方式。
数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”中相关部分。
二、
格式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 | 校验错误 |
以上协议若有不妥之处,可协商改动。
单片机组态王通信协 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)