求助delphi与仪表通讯
我在工作中遇到些问题。是delphi与仪表通讯的。用mscomm控件后就不知道该怎么往下通讯了,仪表的通讯协议也看不懂。请人指教一下。下面是仪表的通讯协议。DT-6通讯协议
1.1 DT-6具有一个标准Modbus 端口(二线制的RS485接囗),在一条RS485总线上可接入出1至16台DT-6控制仪。可方便地同各种组态软件(如组态王)直接连接通讯。上微机可通过通讯查讯DT-6的运行状况、流量、累计量或控制启停。
1. 2 通讯协议:
DT-6遵从标准Modbus(RTU)通讯协议,每次通讯总是由上微机发起,DT-6(控制仪)若接收到正确的信息,则作出应答,否则不应答。上微机在通讯发起0.2秒后若末收到任何字节,则可认为DT-6未有应答。
1.3 通讯波特率
波特率9600,偶校验,一位起始位、八位数据位、一位停止位,数据都为8 位二进制(RTU)码。
1.4 DT-6的寄存器:
1.4.1
状态一
寄存器地址 0098
数据类型 USHORT
内容
状态1(高8位):
0x00-远控
0x01-手动
0x02-自动
状态2(低8位):
0x00-停止
0x01-运行
0x02-整定
0x03-去皮
组态王数据字典 I/O整数(80099)
1.4.2
状态二
寄存器地址 0098
数据类型 USHORT
内容
状态3(高8位):
0x00-故障
0x01-备妥 (低8位)
保留
组态王数据字典 I/O整数(80100)
1.4.3
启动/停止 控制
寄存器地址 0050
数据类型 BIT
内容 0x0000-停止
0xFF00-启动
组态王数据字典 I/O离散(00051)
1.4.4
当前DT-6中的流量目标值
寄存器地址 0100
数据类型 FLOAT
内容 当前DT-6中的流量目标值
(吨/小时)
组态王数据字典 I/O实数(80101)
1.4.5
当前DT-6中的实际流量
寄存器地址 0102
数据类型 FLOAT
内容 当前DT-6中的实际流量
(吨/小时)
组态王数据字典 I/O实数(80103)
1.4.5
当前DT-6中的累计量
寄存器地址 0104
数据类型 FLOAT
内容 当前DT-6中的累计量
(吨)
组态王数据字典 I/O实数(80105)
1.4.6
当前DT-6中的毛重
寄存器地址 0106
数据类型 FLOAT
内容 当前DT-6中的毛重
(公斤)
组态王数据字典 I/O实数(80107)
1.4.7
当前DT-6中的皮重
寄存器地址 0108
数据类型 FLOAT
内容 当前DT-6中的皮重
(公斤)
组态王数据字典 I/O实数(80109)
1.4.8
皮带秤的电机转速
寄存器地址 0110
数据类型 FLOAT
内容 皮带秤的电机转速
(转/分种)
组态王数据字典 I/O实数(80111)
1.4.9
上微机设定流量
寄存器地址 0200
数据类型 FLOAT
内容 上微机设定流量
(吨/小时)
组态王数据字典 I/O实数(90201)
2.2.上微机查询、命令格式
DT-6包含Modbus(RTU)的04,05,16功能码
2.2.1.查询(功能码4)
2.2.1.1 上微机读输入寄存器,共8个字节,例如:
00 04 00 62 00 0E D1 C1
说明:
A、 00,为DT-6中设定的设备地址(0—F7),一个字节。
B、 04,为读寄存器的功能码,一个字节。
C、 00 62,为读寄存器的起始地址,它的十进制为0098,二个字节。
D、 00 0E,为读寄存器的数,二个字节。这里为读14个寄存器(FLOAT数在Modbus(RTU)中占2个寄存器),可把DT-6所有信息一次读出来。
E、 D1 C1,CRC16的校验码(从第1个字节至最后1个字节,但不含CRC16本身),低位在先,高位在后,二个字节
2.2.1.1 DT-6响应,共33个字节,例如:
00 04 1C 00 02 00 00 41 45 70 A4 00 00 00 00 39 9D 49 52 3D C0 83 12 00 00 00 00 00 00 00 00 6A A4
说明:
A、 00,为DT-6中设定的设备地址(0—F7),一个字节。
B、 04,为读寄存器的功能码,一个字节。
C、 1C,为寄存器的字节数,这里为28个字节,一个字节。
D、 00 02 00 00 41 45 70 A4 00 00 00 00 39 9D 49 52 3D C0 83 12 00 00 00 00 00 00 00 00 分别为状态1(整定)、状态2(遥控)、状态3(故障)、备用、当前DT-6中的流量目标值(12.34)、当前DT-6中的实际流量(0.0)、当前DT-6中的累计量(0.0003)、当前DT-6中的毛重(0.094)、当前DT-6中的皮重(0.0)、皮带秤的电机转速(0.0)。共28个字节
E、 6A A4,CRC16的校验码(从第1个字节至最后1个字节,但不含CRC16本身),低位在先,高位在后,二个字节
2.2.2.流量设定(功能码16)
2.2.2.1上微机流量设定,共13个字节,例如:
00 10 00 C8 00 02 04 40 13 33 33 4A 45
说明:
A、 00,为DT-6中设定的设备地址(0—F7),一个字节。
B、 10,为写寄存器的功能码,一个字节。
D、 00 C8,为写寄存器的起始地址,二个字节。
E、 00 02,为写寄存器的数,这里为2个寄存器(FLOAT数在Modbus(RTU)中占2 个寄存器),二个字节。
F、 04, 为写寄存器的字节数,这里为2个寄存器(FLOAT数在Modbus(RTU)中占2 个寄存器),一个字节。
G、 40 13 33 33,为设定流量(2.3),4个字节。
H、 4A 45 , CRC16的校验码(从第1个字节至最后1个字节,但不含CRC16本身),低位在先,高位在后,二个字节
2.2.2.2 DT-6响应,共33个字节,例如:
00 10 00 C8 00 02 C1 E7
说明:
A、 00,为DT-6中设定的设备地址(0—F7),一个字节。
B、 10,为读寄存器的功能码,一个字节。
C、 00 C8,为写寄存器的起始地址,二个字节。。
D、 00 02,为写寄存器的数,这里为2个寄存器(FLOAT数在Modbus(RTU)中占2 个寄存器),二个字节
E、 C1 E7,CRC16的校验码(从第1个字节至最后1个字节,但不含CRC16本身),低位在先,高位在后,二个字节
2.2.3.启动/停止控制(功能码5)
2.2.3.1上微机命令,共8个字节,例如:
00 05 00 32 FF 00 2C 24
说明:
A、 00,为DT-6中设定的设备地址(0—F7),一个字节。
B、 05,为写寄存器的功能码,一个字节。
D、 00 32,为写寄存器的起始地址,二个字节。
E、 FF 00,为启动命令(停止命令为00 00),二个字节。
F、 2C 24,CRC16的校验码(从第1个字节至最后1个字节,但不含CRC16本身),低位在先,高位在后,二个字节。
2.2.3.2 DT-6响应,共8个字节,DT-6原值返回收到的信息,
例如:00 05 00 32 FF 00 2C 24
3. 1 编程建议
3. 1。1 DT-6遵从标准Modbus(RTU)通讯协议。与组态软件如组态王通讯可按1.3与1.4条各个 DT-6的寄存器表格设置就可通讯。按设备配置向导:PLC—>莫迪康—>Modbus(RTU)—>串行 进行配置。
3.1。2 对于自编程,请按2。2条各项说明进行编程,同时要注意遵从标准Modbus(RTU)通讯协议。