西门子PLC与变频器的通信

今天在网上终于找到了有关PLC与变频器通信,我要发送一个数据到变频器的参数P001,这些址和数据地址要放在哪里了,但对里面的CRC校验数据有点不明白,我要发送1到P001的话,1就是放在数据地址里,P001就是放在被写地址里,那CRC又不是我想要的,这是通信时要校验发送数据是不是正确的一个程序,这个校验码哪里来啊,还有这个被写地址的高位是P还是P0被写地址的低位是001还是01?对
 PLC内存使用说明
 西门子S7-200系列PLC的自由通讯端口编程必定会用到两个指令,即XMT(发送)指令和RCV(接收)指令。编写程序时需要为这两个指令指定数据缓冲区,一般以最低位数为0的地址作为数据缓冲区的起始地址。
     1.发送指令XMT缓冲区(写/读)
 VB100        //xmt指令要发送的字节个数
 VB101        //变频器通讯地址(01)
 VB102        //modbus功能码(06/03)
 VB103        //变频器被写地址高位/变频器被读起始地址高位
 VB104        //变频器被写地址低位/变频器被读起始地址低位
 VB105        //被写数据高位/被读数据字个数高位
 VB106        //被写数据低位/被读数据字个数低位
 VB107        //被发送数据CRC低位
 VB108        //被发送数据CRC高位
 2.接收指令RCV缓冲区
 VB200        //rcv指令要接收的字节个数
 VB201        //变频器地址(01)
 VB202        //modbus功能码(06/03)
 VB203        //变频器被写地址高位/被读数据字节个数高位
 VB204        //变频器被写地址低位/被读数据字节个数低位
 VB205        //被写数据高位/被读数据高位
 VB206        //被写数据低位/被读数据低位
 VB207        //被接收数据CRC低位
 VB208        //被接收数据CRC高位
 VB217       //被接收数据CRC验算低位
 VB218       //被接收数据CRC验算高位
 

最佳答案

既然是modbus协议,我建议你在plc编程前,先使用modscan软件测试与变频器的通讯,并可以从modscan软件中读出报文内容和格式。然后在200软件的数据块中添加已获得的规则化的报文,发送即可。注:调试modbus协议必须配有modscan软件和串口调试软件,这两软件可以使协议报文更加明郎,提高工程师工作效率。另,可加1093079077进一步详谈lcr、crc校验方式。

 modbus协议的RTU模式的校验使用CRC校验。
 生成CRC-16校验字节的步骤如下:
 ①如一个16位寄存器,所有数字均为1。
 ②该16位寄存器的低位字节与开始8位字节(报文的第一个字节)进行“异或”运算。运算结果放入这个16位寄存器。
 ③把这个16寄存器向右移一位。
 ④若向右(标记位)移出的数字是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算;若向右移出的数位是
 0,则返回③。
 ⑤重复③和④,直至移出8位。
 ⑥另外8位(报文接下来的下一个字节)与该十六位寄存器进行“异或”运算。
 ⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。
 ⑧这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。
 CRC添加到消息中时,低字节先加入,然后高字节。

 再次强调:调试modbus协议最好配有modscan软件和串口调试软件,这两软件可以使协议报文更加明郎,提高工程师工作效率。

提问者对于答案的评价:
谢谢你了,

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午10:45
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论