通信的是什么变频器?
我用过与ACS510通信,变频器为从站,200为主站,变频器说明中说明了
modbus协议中40001寄存器为控制字,40004为状态字,并说明了其中每一位的含义,还有4000X什么的为给定值(频率)、实际值(频率、电流)。地址对应的含义是可以在变频器参数中设置的。
然后200中通信只需要在OB1中调用MBUS_CTRL初始化
modbus,然后调用MBUS_MSG进行收发数据就可以了。
但请注意MBUS_MSG收发数据是异步的,不要认为你调用完这个方法数据收发就完毕了,是否完毕需要判断输出的Done的值,譬如与1号变频器通信Done为TRUE之后再与2号变频器通信。
MBUS_CTRL参数:
Baud:波特率,请与变频器参数设置一致 我一般用9600
Parity:奇偶校验,请与变频器参数设置一致 我一般用0 无
Timeout:超时时间,如果变频器未在线,则超过此时间就返回,即超过该时间MBUS_MSG中的Done参数才会设置为TRUE并设置错误代码。我一般用1000,即1秒
MBUS_MSG参数:
First:要发送时给一个上升沿指令
Slave:从站地址,请与变频器中设置的站地址对应
RW:0为读数据 1为写数据
Addr:寄存器地址 4000X这种
Count:数据大小(字)读写Addr起始地址的Count个字
DataPtr:对应200PLC中的地址 读数据时为目的地址 写数据时为源地址
例如:
Slave:2
RW:1
Addr:40001
Count:3
DataPtr:&VW1000
含义就是往地址设置为2的变频器中写入40001、40002、40003三个寄存器,内容是VW1000写入40001、VW1002写入40002、VW1004写入40003,如果对应ABB的变频器即VW1000为控制字、VW1002为给定值1(频率)、VW1004为给定值2(未使用)写入到变频器了。
读也是一样的。
最后,通信反应慢或者不能通信,注意启用终端电阻。