组态王如何与单片机通讯? 点击:1477 | 回复:4



一枭雄

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 28回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2006年4月25日
发表于:2007-04-21 08:31:00
楼主
我是用组态王与单片机通讯,我看了亚控提供的 《通用单片机(HEX)》。不太明白,我就用串口助手观察组态王发给单片机的数据,根据所说的格式再通过串口助手发给组态王,但是组态王还是不断的发送地址查询。是不是我发送的数据有问题,请高手指点一下



一枭雄

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 28回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2006年4月25日
发表于:2007-04-21 08:32:00
1楼
一、 通讯参数:
通讯参数包括数据位,停止位,波特率、校验方式。
数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”中相关部分。
二、 数据传输格式:
格式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

一枭雄

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 28回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2006年4月25日
发表于:2007-04-21 08:33:00
2楼
四、协议说明:
数据传输:所有数据均为16进制数
ENQ(头) H05 询问 请求帧的开始代码
ACK(头) H06 确认 ACK应答帧的开始代码
NAK(头) H15 否认 NAK应答帧的开始代码
EOT(尾) H04 正文的结束  请求帧的结束ASCII代码
ETX(尾) H03 结束正文 应答帧的结束ASCII代码
Sta:: 设备地址1字节
R:    读标志1字节(0x52)
W:   写标志1字节(0x57)
DataType;需要交换的数据类型,1字节。1,字节;2,字,3,浮点型。
DataType的值 含义
1 字节
2 字
3 浮点数
DataNum:要读取的数据的数量,1字节。
DataAddr;为数据偏移地址2字节,低字节在前,高字节在后
Data: 实际传输的数据,低字节在前,高字节在后
DataLong:  单片机返回Data的 字节数 ,2字节,低字节在前,高字节在后
CRC: 为从第一个字节 至CRC前的所有字节的异或值,1字节
ErrorCode:
ErrorCode数值 含义
0 正确应答
1 数据类型错误
2 数据范围超限
3 指令无法识别,应为R或W。
4 校验错误

一枭雄

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 28回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2006年4月25日
发表于:2007-04-21 08:34:00
3楼
我用串口助手收到的数据是05000401
可我发送对应的数据 06000305

组态王还是发送地址请求。哪里出错啊?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-09-05 21:10:00
4楼
这样证明是对的 

热门招聘
相关主题

官方公众号

智造工程师