丹佛斯用Modbus批量读写非连续寄存器的方法 点击:1431 | 回复:0



青岛黄工

    
发表于:2012-02-10 13:05:08
楼主
  • 在新版本的FC102FC202FC300系列产品中,添加了参数组8-42 PCD写配置,以及参数组8-43 PCD读配置。将要读写的内容,配置在这两组参数中,可以实现批量读写非连续地址的寄存器数据。

PCD写配置格式

地址

2810

2811

2812

2813

2814

2873

作用

PCD 0

CTW

PCD1

REF

PCD2

PCD3

PCD4

PCD63

参数

8-420

8-421

8-422

8-423

8-424

8-4263

其中PCD0的功能固定为控制字写入,PCD1的功能固定为参考值的给定,不能更改。

例:参数3-02,最小参考值设置为10HZ;参数3-41,加速时间设置为5秒。

由于参数3-0232位长度,需要两个寄存器,参数8-422】设置为302,参数8-423】设置为302,使用寄存器28122813来写入数据。

由于参数3-4132位长度,需要两个寄存器,参数8-424】设置为341,参数8-425】设置为341,使用寄存器28122813来写入数据。

注意,采用两个连续的寄存器(2N2N+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,十六进制为271032位数据为0000 27103-41转换指数为0.01秒,设置5秒,则写入的数值为5000,十六进制为01F432位数据为0000 01F4

PCD读配置

地址

2910

2911

2912

2913

2914

2973

作用

PCD 0

STW

PCD1

MAV

PCD2

PCD3

PCD4

PCD63

参数

8-430

8-431

8-432

8-433

8-434

8-4363

其中PCD0的功能固定为状态字读取,PCD1的功能固定为实际输出频率的读取。

例:读取参数16-30,直流回路电压,和参数16-34,散热片温度的数值。

由于参数16-3032位长度,需要两个寄存器,参数8-432】设置为1630,参数8-433】设置为1630,使用寄存器29122913来读取数据。

参数16-348位长度,参数8-434】设置为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度。

 

 



楼主最近还看过

SSI ļʱ