一、
通讯参数包括数据位,停止位,波特率、校验方式。
数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”中相关部分。
二、
格式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 | 校验错误 |
以上协议若有不妥之处,可协商改动。
最后
以上就是诚心时光最近收集整理的关于单片机与组态王通信协议的全部内容,更多相关单片机与组态王通信协议内容请搜索靠谱客的其他文章。
发表评论 取消回复