主题:[讨论]VB和智能仪表的通讯
现有上海自动化仪表六厂智能仪表通讯协议如下:
1 接口标准:
可选232,485
2 通讯方式
采用主从控制方式,上位机为主站,仪表为从站.主站对从站采用二进制进行异步半双工数据通讯,最多可连接32台仪表.
3 从机地址和通讯波特率:
从机地址=仪表通讯地址(Addr)+0XA0
例:仪表通讯地址为5,则从机地址=0X05+0XA0=0XA5
波特率设置;固定为9600
4 通讯数据格式
采用10位无奇偶校验桢格式,1位起始位,8位字长,1位停止位.
格式如下:
起始位 DATA.0.1.2.3.4.5.6.7 停止位
通讯数据格式采用数据链格式,数据链包括从机地址,命令,数据,校验和,结束字等内容.
从机地址:1字节,采用压缩BCD码,地址范围为0XA0-0XFE;
命令:1字节,共有5条命令,范围为0X01-0X05;
数据:采用压缩BCD码,根据命令可有00-04个字节;
校验和:1字节16进制数,是从机地址至最后一个数据的累加和的最低字节,然后与0X7F相"与"的值;
结束字:1字节,固定为0XFF.
5 命令格式:
(0) 握手命令
该命令可检查通讯链路中有无当前地址的仪表.
主机发送桢格式:(4字节)
从机地址 0X00 校验和 0XFF
握手命令 结束字
下位机应答桢格式:(4字节)
10 00 从机地址&7F 校验和
1字节 1字节 1字节 1字节
(1)概观读命令
该命令可一次读出测量值,设定值和控制的相关参数,效率高.
主机发送桢格式:(4字节)
从机地址 0X01 校验和 0XFF
概观读命令 结束字
下位机应答桢格式:(11字节)
PV PWR SP AL AM FW 校验和
2字节 2字节 2字节 1字节 1字节 1字节 1字节
(2)读参数命令
该命令发送5字节,可读出被读地址的参数数值.
主机发送桢格式:(5字节)
从机地址 0X02 0X01 校验和 0XFF
1字节 读参数命令 参数地址 1字节 结束字
下位机应答桢格式:(3字节)
被读参数值 校验和
2字节 1字节
其中:第一字节为数据高位,第二字节为数据地位.
(3)写参数等命令略
[color=FF0000]求教怎么通过本协议和VB进行串口数据通讯?
在网上浏览了很多串口通讯资料,但是本协议和所搜索到的例子不是完全一致的,特别是校验和的计算,没有示例算法,不知道该怎么样输入的数据,以下输入不知道哪里出了问题.
我用串口调试精灵测试过,输入数据A50126FF,但是没有输出!
不知道是哪里不对,请高人指点![/color]
1 接口标准:
可选232,485
2 通讯方式
采用主从控制方式,上位机为主站,仪表为从站.主站对从站采用二进制进行异步半双工数据通讯,最多可连接32台仪表.
3 从机地址和通讯波特率:
从机地址=仪表通讯地址(Addr)+0XA0
例:仪表通讯地址为5,则从机地址=0X05+0XA0=0XA5
波特率设置;固定为9600
4 通讯数据格式
采用10位无奇偶校验桢格式,1位起始位,8位字长,1位停止位.
格式如下:
起始位 DATA.0.1.2.3.4.5.6.7 停止位
通讯数据格式采用数据链格式,数据链包括从机地址,命令,数据,校验和,结束字等内容.
从机地址:1字节,采用压缩BCD码,地址范围为0XA0-0XFE;
命令:1字节,共有5条命令,范围为0X01-0X05;
数据:采用压缩BCD码,根据命令可有00-04个字节;
校验和:1字节16进制数,是从机地址至最后一个数据的累加和的最低字节,然后与0X7F相"与"的值;
结束字:1字节,固定为0XFF.
5 命令格式:
(0) 握手命令
该命令可检查通讯链路中有无当前地址的仪表.
主机发送桢格式:(4字节)
从机地址 0X00 校验和 0XFF
握手命令 结束字
下位机应答桢格式:(4字节)
10 00 从机地址&7F 校验和
1字节 1字节 1字节 1字节
(1)概观读命令
该命令可一次读出测量值,设定值和控制的相关参数,效率高.
主机发送桢格式:(4字节)
从机地址 0X01 校验和 0XFF
概观读命令 结束字
下位机应答桢格式:(11字节)
PV PWR SP AL AM FW 校验和
2字节 2字节 2字节 1字节 1字节 1字节 1字节
(2)读参数命令
该命令发送5字节,可读出被读地址的参数数值.
主机发送桢格式:(5字节)
从机地址 0X02 0X01 校验和 0XFF
1字节 读参数命令 参数地址 1字节 结束字
下位机应答桢格式:(3字节)
被读参数值 校验和
2字节 1字节
其中:第一字节为数据高位,第二字节为数据地位.
(3)写参数等命令略
[color=FF0000]求教怎么通过本协议和VB进行串口数据通讯?
在网上浏览了很多串口通讯资料,但是本协议和所搜索到的例子不是完全一致的,特别是校验和的计算,没有示例算法,不知道该怎么样输入的数据,以下输入不知道哪里出了问题.
我用串口调试精灵测试过,输入数据A50126FF,但是没有输出!
不知道是哪里不对,请高人指点![/color]