一、本机相关协议细节
本数字控制系统仅支持03、06命令。系统设定使用了自定义的私有命令。具体协议细节请参见附件的国标。支持4800、9600、19200和38400波特率的通讯速度,仅支持8位无奇偶校验格式。
(一)、读保持寄存器命令(03)
共15个保持寄存器,MODBUS协议地址号0000H~000EH。细节如下:
1.0000H:实时采样电流,以百分数表示,具体使用定点数,对应0~10000;
2.0001H:实时采样电压,以百分数表示,具体使用定点数,对应0~10000;
3.0002H:安培小时计电量总累积量高位,为无符号整形;
4.0003H:总累积量低位,为无符号整形,需要与高位组合使用;
5.0004H:安培小时计当前累积量高位,为无符号整形;
6.0005H:安培小时计当前累积量低位,为无符号整形,需要与高位组合使用;
7.0006H:添加剂继电器输出控制时间;
8.0007H:当前工作状态。其中D0:0=STOP,1=RUN;D1:1=CC,0=CV;D2:0=无安培小时计功能,1=使用此功能;D3:0=AH,1=AM;D4:0=就地操作,1=远程通讯控制;D5:0=定时工作不使用,1=使用定时工作方式;D6:0=无报警,1=有;D7:0=如果使用定时功能,定时到自动关机,1=定时时间到不关机;D8:用于设定系统掉电后再上电时的工作状态。0=默认STOP,1=恢复掉电前状态;D14、D15固定=1;其它位保留。
9.0008H:电流满量程设定;
10.0009H:电压满量程设定;
11.000AH:当前输出电流给定值,以百分数表示,具体使用定点数,对应0~10000;
12.000BH:当前输出电压给定值,以百分数表示,具体使用定点数,对应0~10000;
13.000CH:安培小时计控制用电量累积设定高位,为无符号整形;
14.000DH:安培小时计控制用电量累积设定低位,为无符号整形,需要与高位组合使用;
15.000EH:定时工作设定的工作时间。
(二)、写保持寄存器命令(06)
命令必须在远程控制条件下,在STOP状态下才可以设定。仅START/STOP与电流电压给定三条命令可以在STOP状态下使用。命令寄存器与03命令寄存器地址一致。其中0000H~0005H为只读寄存器,不可写。其它如下:
1.0006H:添加剂继电器输出控制时间,单位“秒”,范围1~3600;
2.0007H:其中D0:0=STOP,1=RUN;D1:1=CC,0=CV;D2:0=无添加剂控制功能,1=使用此功能;D3:0=AH,1=AM;D4:只读,不可写;D5:0=定时工作不使用,1=使用定时工作方式;D6:只读,不可写;D7:0=如果使用定时功能,定时到自动关机,1=不关机;D8:0=上电默认STOP,1=恢复掉电前状态;D14=0为总累计量清零;D15=0为添加剂累计零清零;其它位保留。
3.0008H:电流满量程设定;
4.0009H:电压满量程设定;
5.000AH:当前输出电流给定值,可以在运行时给定,以百分数表示,具体使用定点数,对应0~10000;
6.000BH:当前输出电压给定值,可以在运行时给定,以百分数表示,具体使用定点数,对应0~10000;
7.000CH:安培小时计控制用电量累积设定高位;
8.000DH:安培小时计控制用电量累积设定低位。范围1~99999999;
9.000EH:定时工作设定的工作时间,单位“秒”,范围1~60000。
二、例程
(一)、读取保持寄存器
例1:读取当前电源板输出电流值,当前机器地址号为1号,当前电流为满量程的50%,占用0000H地址的保持寄存器。
1、命令发送信息共8个字节,细节如下:
1,3,0,0,0,1,132,10;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器;第3、4个字节为0、0,表示从保持寄存器的0000H地址开始读取;第5、6个字节为0、1,表示此次命令将读取1个寄存器(提示:寄存器为双字节);第7、8字节为132、10,为CRC16校验的高低字节。
2、1号设备应答信息共7个字节,细节如下:
1,3,2,19,136,181,18;
其中:第1个字节为1,表示呼叫对象为1号设备,设备直接返回此字节;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器,设备直接返回此字节;第3个字节为2、表示设备发送回两个字节数据(1个寄存器);第4、5个字节为19、136,为读回的第一个寄存器内容的高低字节,即当前电流值,它等于19*256+136=5000,实际为定点百分数表示的50%;6、7字节为181、18,为CRC16校验的高低字节。
例2:读取当前电源板输出电流值和电压值,当前机器地址号为1号,当前电流为满量程的50%,占用0000H地址的保持寄存器;当前电压为满量程的50%,占用0001H地址的保持寄存器。
1、命令发送信息共8个字节,细节如下:
1,3,0,0,0,2,196,11;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器;第3、4个字节为0、0,表示从保持寄存器的0000H地址开始读取;第5、6个字节为0、2,表示此次命令将读取2个寄存器(提示:寄存器为双字节);第7、8字节为196、11,为CRC16校验的高低字节。
2、1号设备应答信息共9个字节,细节如下:
1,3,4,19,136,19,136,115,203;
其中:第1个字节为1,表示呼叫对象为1号设备,设备直接返回此字节;第2个字节为3,表示发出的是3号命令,命令为读取保持寄存器,设备直接返回此字节;第3个字节为4、表示设备发送回4个字节数据(2个寄存器);第4、5个字节为19、136,为读回的第1个寄存器内容的高低字节,即当前电流值,它等于19*256+136=5000,实际为定点百分数表示的50%;第6、7个字节为19、136,为读回的第2个寄存器内容的高低字节,即当前电压值,它等于19*256+136=5000,实际为定点百分数表示的50%;8、9字节为115、203,为CRC16校验的高低字节。
(二)、写保持寄存器
例1:通过写保持寄存器000AH,更新当前电源板输出电流值到满量程的50%。当前机器地址号为1号。
1、命令发送信息共8个字节,细节如下:
1,6,0,10,19,136,164,158;
其中:第1个字节为1,表示呼叫对象为1号设备;第2个字节为6,表示发出的是6号命令,命令为写保持寄存器;第3、4个字节为0、10,表示写000AH地址的保持寄存器;第5、6个字节为19、136,表示此次命令写数据为5000,为给定电流百分数对应的定点数,为实际绝对值的50%;第7、8字节为164、158,为CRC16校验的高低字节。
2、1号设备应答信息共8个字节,命令报文原样返回,表示已经收到命令。