Danfossbb变频器 MODBUS通讯问题总汇
问题1:Modbus RTU通讯需要设置的变频器参数?
回答:FC系列变频器需要设置的参数:
8-01,控制地点,选择【2】控制字,或者【0】数字和控制字;
8-02,控制来源,选择【1】RS 485;
8-03,控制字超时时间;
8-04,控制字超时功能,选择当控制字丢失,变频器采取的动作;
8-30,【2】选择为Modbus RTU通讯协议;
8-31,变频器的通讯地址,1-126范围内地址有效;
8-32,设置通讯速度,各站速度要求一致;
8-33,奇偶校验方式,各站要求设置一致;
8-50,惯性停车的实现方式,当8-01选择为【0】时,请注意该参数。
问题2: Modbus批量读写非连续寄存器的方法?
回答:在新版本的FC102、FC202、FC300系列产品中,添加了参数组8-42 PCD
写配置,以及参数组8-43 PCD读配置。
将要读写的内容,配置在这两组参数中,可以实现批量读写非连续地址的寄存器数据。
PCD写配置格式:
改。
例:参数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,写入多个寄存器数值.报文格式如下:
字的个数,从2812开始写入4个数字
字节数 = 字的个数*2
字的值:3-02转换指数为0.001HZ,设置10HZ,则写入的数值为10000,十六进制为2710,32位数据为0000 2710;3-41转换指数为0.01秒,设置5秒,则写入的数值为5000,十六进制为01F4,32位数据为0000 01F4;
PCD读配置
例:读取参数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,读取保存寄存器
报文格式如下
字的个数,从2912开始读取3个数字
正常通信的情况下,返回的信息
001D 转换为十进制为29,散热片的温度为29度。
问题3:如何读取变频器的参数?
回答:例如,当要读取3-41,加速时间时,需要写的报文:
03为功能码,功能为读取寄存器的信息;
0D51为寄存器地址,该地址内存储着3-41加速时间;
参数3-41寄存器地址的计算方法,3-41 → 341*10-1=3409 → 0D51(十六进制);
参数3-41为双字存储数据,因此读取字的个数应该为 2 ;
通讯成功的情况下,变频器返回的报文为,
为3秒。
例如,当要读取3-11,点动速度(HZ),需要写的报文:
03功能码,代表读取寄存器的信息;
0C25为存储器地址,该地址内存储着3-11点动速度(HZ);
参数3-11寄存器地址的计算方法,3-11 → 311*10-1=3109 → 0C25(十六进制);
参数3-11为单字存储数据,因此读取字的个数为1 ;
通讯成功的情况下,变频器返回的报文为,
速度为10.0HZ。
问题4:怎样正转启动变频器?
回答:发送以下报文可以正向启动变频器,
其中 01 为变频器的站号,可以从变频器参数8-31中得知变频器的站号;
06 为寄存器写入功能码;
C34F为存储器地址,该地址内存储着对变频器的控制字;
047C为变频器的控制字,控制字的构成如下
问题5:如何更改变频器的参数?
回答:通过查看”编程指南”-“参数列表”,可以得到参数的数据长度和转换类型。
如点动速度3-11,为单字参数,转换类型为0.1,即写入到寄存器的数据最后会乘以0.1作为执行数据。
将点动速度设置为6HZ,写入的报文如下
01 为变频器的站号,可以从参数8-31中得知变频器的站号;
06功能码,功能写入单字;
0C25为参数3-11的存储器地址,该地址内存储着3-11点动速度;
参数3-11寄存器地址的计算方法址, 3-11 → 311*10-1=3109 → 0C25(十六进制);
003C,写入到3-11的数值。
003C十进制数为60,乘以0.1的转换指数后得到点动速度为6HZ。
如果要更改的参数为双字长度,如加速时间3-41,转换类型为0.01,即写入到寄存器的数据最后会乘以0.01作为执行数据。
需要写入的报文如下:
其中:
01 为变频器的站号,可以从参数8-31中得知变频器的站号;
10功能码,功能为写入多个字;
0D51为参数3-41的存储器地址,该地址内存储着3-41加速时间;参数3-41寄存器地址的计算方法,3-41 → 341*10-1=3409 → 0D51(十六进制);0002,写入字的个数为2 ;
04,写入的字节数为4;
000003E8,因为写入2个字,所以这里给出的数值为2个字的长度,为写入到3-41的数值。
000003E8十进制为1000,乘以0.01的转换类型后得到加速时间为10S。
问题6:如何给定参考值?
回答:写入以下16进制形式的报文可以给定变频器的参考值,
06 为寄存器写入功能码;
C359为变频器的存储器地址,该地址内存储着变频器的参考值;
20 00 给定变频器的参考值为50%*变频器的最大参考值(参数3-03);
写入信息同参考值的对应关系:
十进制数16384对应100%,如果要给定50%,写入的数值为16384*50%=8192,转换为十六进制数即为 2000;
负方向的参考值,为正方向参考值二进制数的补数。
4000H对应100%,4000H二进制数的补数,8000H 对应-100%参考值的给定;1000H对应25%,1000H二进制数的补数,F000H 对应-25%参考值的给定。
问题7:怎样反转启动变频器
回答:发送以下报文可以反向启动变频器
06 为寄存器写入功能码
C34F为存储器地址,该地址内存储着对变频器的控制字;
847C为变频器的控制字,控制字的构成如下
问题8:位数据的读写?
回答:单独更改位信息,可以使用“0F”功能代码
,如果将该位置“1”,则写入的信息为“FF00”;如果将该位置“0”,则写入的信息为“0000”。
读取位数据时,可以发送“01”位读取请求,
功能码“01”的功能为读位信息,后跟位起始地址和读取位数,通讯正常的情况下,可以从返回的报文获知读取的位状态,
字节内容可以表明8个位的状态,字节01,二进制数为0000 0001 ,即要读取的“0”位状态为“1”。
字节个数和字节内容,根据读取位数变化。
如果读取9个位,则返回的字节个数为"2",返回内容“0F 01”二进制数为 0000 1111 0000 0001,从最右边开始,表示起始位开始的9个位状态。
位0-31位,为主站给从站的命令位;32-63位,为从站给主站的状态位。