丹佛斯用Modbus批量读写非连续寄存器的方法-
发布时间:2019-08-05 10:12:15来源:
丹佛斯用Modbus批量读写非连续寄存器的方法-
在新版本的FC102、FC202、FC300系列产品中,添加了参数组8-42 PCD写配置,以及参数组8-43 PCD读配置。将要读写的内容,配置在这两组参数中,可以实现批量读写非连续地址的寄存器数据。
PCD写配置格式
地址 | 2810 | 2811 | 2812 | 2813 | 2814 | … | 2873 |
作用 | PCD 0 CTW | PCD1 REF | PCD2 写 | PCD3 写 | PCD4 写 | … 写 | PCD63 写 |
参数 | 8-42【0】 | 8-42【1】 | 8-42【2】 | 8-42【3】 | 8-42【4】 | … | 8-42【63】 |
其中PCD0的功能固定为控制字写入,PCD1的功能固定为参考值的给定,不能更改。
例:参数3-02,比较小参考值设置为10HZ;参数3-41,加速时间设置为5秒。
由于参数3-02为32位长度,需要两个寄存器,参数8-42【2】设置为302,参数8-42【3】设置为302,使用寄存器2812和2813来写入数据。
由于参数3-41为32位长度,需要两个寄存器,参数8-42【4】设置为341,参数8-42【5】设置为341,使用寄存器2812和2813来写入数据。
注意,采用两个连续的寄存器(2N,2N+1)来存储32位数据,必须是偶数位地址在前
Modbus的通讯功能代码为10,写入多个寄存器数值
报文格式如下
Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | Byte7+n | |
站址 | 功能码 | 字起始地址 | 字的个数 | 字节数 | 字的值 | CRC16 | ||
01 | 10 | 0AFB | 0004 | 08 | 0000 2710 0000 01F4 | CF A9 |
字起始地址=(2812-1)转换成十六进制数字 0AFB
字的个数,从2812开始写入4个数字
字节数=字的个数*2
字的值:3-02转换指数为0.001HZ,设置10HZ,则写入的数值为10000,十六进制为2710,32位数据为0000 2710;3-41转换指数为0.01秒,设置5秒,则写入的数值为5000,十六进制为01F4,32位数据为0000 01F4;
PCD读配置
地址 | 2910 | 2911 | 2912 | 2913 | 2914 | … | 2973 |
作用 | PCD 0 STW | PCD1 MAV | PCD2 读 | PCD3 读 | PCD4 读 | … 读 | PCD63 读 |
参数 | 8-43【0】 | 8-43【1】 | 8-43【2】 | 8-43【3】 | 8-43【4】 | … | 8-43【63】 |
其中PCD0的功能固定为状态字读取,PCD1的功能固定为实际输出频率的读取。
例:读取参数16-30,直流回路电压,和参数16-34,散热片温度的数值。
由于参数16-30为32位长度,需要两个寄存器,参数8-43【2】设置为1630,参数8-43【3】设置为1630,使用寄存器2912和2913来读取数据。
参数16-34为8位长度,参数8-43【4】设置为1634,使用寄存器2914来读取数据。
使用Modbus功能码03,读取保存寄存器
报文格式如下
站址 | 功能码 | 字起始地址 | 字个数 | CRC16 |
01 | 03 | 0B 5F | 00 03 | 37 FD |
字起始地址=(2912-1)转换成十六进制数字 0B5F
字的个数,从2912开始读取3个数字
正常通信的情况下,返回的信息
站址 | 功能码 | 字节数 | 返回信息 | CRC16 |
01 | 03 | 06 | 0000 0132 001D | 41 4F |
0000 0132 转换为十进制为 306,直流回路电压为306V;
001D 转换为十进制为29,散热片的温度为29度。