想用224XP与变频器做通讯(国产 上海米兰),modbus rtu,用224XP做主站。变频器参数我设定波特率为9600 1起始位 8数据位 2 停止位,
假设要读取当前设定频率,变频器说明书上要求“主机发送” 01 01 00 01 91 D8(第一个数01为变频器地址,第二个为主机命令,第三个为辅助
索引,第四个为命令索引),然后“从机回应” 01 01 00 01 01 F4 6D DD(说明书没做说明前四位定义应该一样,第五、第六位是当前频率为
5HZ)。
我有几个问题不明白,请高手帮忙一一作答。
1、能否直接使用西门子的modbus rtu master协议库,与变频器通讯?
2、如果使用modbus rtu master协议库,子程序"MBUS_MSG"的“Addr”参数如何填写。变频器说明书没有给出从站的数据地址,请帮忙看
一下上面列出的“主机发送”,我该在“Addr”及“count”,对应什么数
3、设置的无校验,是不是“主机发送”的最后两个字节“91 D8”,不用发送
请高手指点下,在这里先谢谢了。尽量直接回答我的问题,不要粘贴资料,因为“找答案”内,有提供的资料,但我实在太笨,看好多遍看不懂。
图片说明:
最佳答案
楼上的几个不要忽悠楼主,如果楼主描述的没错的话,该通讯请求压根儿就不是标准的modbus请求格式。
modbus标准请求格式:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。
功能代码01代表:读单个线圈(0***地址)数据
而楼主说的变频器说明书上要求“主机发送” 01 01 00 01 91 D8(第一个数01为变频器地址,第二个为主机命令,第三个为辅助索引,第四个为命令索引),
1. 标准modbus协议的请求字节必须是8个,而楼主的只有6个字节,相当于没有CRC校验,如果没有CRC校验,通讯自动会把请求丢弃不处理,此时读不到任何数据。
2. 即便可能是楼主没有把CRC校验字节贴上来,但是功能代码代表读取开关量信息,读不到楼主需要的设定频率。
因此,楼主如果想与变频器通讯,根本不可能用modbus类库的功能块进行通讯,只能自己编写程序用自由口发送指令进行通讯。
楼主可以参考我以前写的《modbus通讯说明》
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=3&a_id=849645&s_id=0&num=79#anch
提问者对于答案的评价:
谢谢你,有的朋友就没有耐心看问题。我也感觉这个变频器的通讯协议不是标准的modbus,如果不是就无法采用modbus标准库,那只能自己写。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc305892.html