液位采集的程序

一、接口标准
RS-485(二线制)
上位机推荐使用研华PCL-745B通讯数据采集卡
二、协议
MODBUS通讯协议03功能
三、通讯控制方式
采用主从控制方式,上位机为主站,仪表为从站。主站对从站采用ASCII码进行异步半双工数据通信。
四、数据寄存器地址
40007——液面值
五、寄存器数据格式
寄存器单元 单位 数值范围 字节数 符号 符号占用位数(二进制) 数值占用位数(二进制)
液面值 mm 0-65535 2 无 0 16位
六、通讯数据格式
通讯参数:2400波特率,无奇偶校验,7位数据位,2位停止位
03功能数据格式:
上位机发送报文格式
帧首 站号 固定值 数据寄存器号高位 数据寄存器号低位 固定值 固定值 错误校验 帧尾
3A 03H 00H 01H 0D 0A

下位机应答报文格式
帧首 站号 固定值 固定值 数据寄存器值高位 数据寄存器值低位 错误校验 帧尾
3A 03H 02H 0D 0A
(1) 帧首:3A(ASCII码)
帧尾:0D,0A(ASCII码)
(2) 站号:仪表的地址号(见仪表标牌上的仪表编号)
(3) 数据寄存器号:数据寄存器号=数据寄存器地址 - 40001
例如:寄存器地址为40006,则40006-40001=0005
高位为高8位字节:00H,低位为低8位字节:05H。
(4) 数据寄存器值:高位为寄存器数据值的高8位字节,
低位为寄存器数据值的低8位字节。
(5) 错误校验:将除了帧首帧尾外的所有16进制字节相加后取反
加1。错误校验值为1个字节(16进制)
(6) 发送报文和应答报文都要将16进制码转换成ASCII码进行传
送。
例如:十六进制的1个字节03H变成2个字节的ASCII码30,
33。
七、通讯范例
以读取1号站仪表40007寄存器值为例
发送格式
帧首 站号 固定值 数据寄存器号高位 数据寄存器号低位 固定值 固定值 错误校验 帧尾
3A 01H 03H 00H 06H 00H 01H F5H 0D 0A
说明:(1)站号:01
(2)数据寄存器号=40007-40001=0006 高位:00H
低位:06H
(3)错误校验值:01H+03H+06H+01H=0BH 取反加1后为F5H
发送报文(ASCII码):3A,30,31,30,33,30,30,30,36,30,30,30,31,46,35,0D,0A
回文格式
帧首 站号 固定值 固定值 数据寄存器值高位 数据寄存器值低位 错误校验 帧尾
3A 01H 03H 02H 55H 55H 50H 0D 0A
说明:(1)站号:01
(2)数据寄存器值=5555H=21845mm
(3)错误校验值:01H+03H+02H+55H+55H=B0H 取反加1
后为50H
应答报文(ASCII码):3A,30,31,30,33,30,32,35,35,35,35,35,30,0D,0A
八、编程说明
为了得到真实的液位,需将从一次表读取的液面值和界面值进行零点调整。具体步骤方法如下:
1.求零点值
将油罐中的液面固定在某一点A,利用量油尺或其它测量手段得到该点的真实液位YA,读取一次表该点的液面值YDA,根据YA和YDA求YC(零点值),计算公式如下:
YC=YA-YDA。
YC是带符号值,若YA>YDA则YC为正, 若YA<YDA YC为负。
2.零点调整
根据零点调整公式将从一次表读取的液面值和界面值转换成实际值。该过程需编程者通过软件实现。
零点调整公式:YZ=YD+YC
YZ:实际值
YD:从一次表读取的液面值或界面值
YC:零点值
举例说明:
将油罐中的液面固定在某一点,利用量油尺或其它测量手段得到该点的真实液位YA=1000mm,读取一次表该点的液面值YDA=1543mm,YC=YA-YDA=1000-1543=-543mm(零点值)
YZ=YD-543
九、通讯接口连接
仪表 通讯卡
S- —— DATE-
S+ —— DATE+

第1个回答  2008-05-07
关注同样问题,学习