工控网首页
>

应用设计

>

S7-200程控器与英威腾变频器Modbus主站通讯程序编制体会

S7-200程控器与英威腾变频器Modbus主站通讯程序编制体会

2013/2/28 9:34:04

      与英威腾(INVT)变频器Modbus通讯时,采用自己编制主站通讯程序,参照西门子USS程序格式做成库程序。

  S7-200自由口通讯确实很自由,可以编制任何通讯。

  西门子自带的Modbus主站程序,用在变频器控制上,不方便。要求是能向USS库程序一样有多个控制的位信号输入,在速度设定值变化是发送速度值,平时要读变频器的运行状态(包括故障状态),还想读变频器运行时的电流。于是,自己根据英威腾变频器的通讯协议,编制了Modbus主站通讯程序。

Modbus通讯协议要求:

读写都是8个字节,只是功能码的不同和读是读的长度,写是写的数据值

发送

VB1600

VB1601

VB1602

VB1603

VB1604

VB1605

VB1606

VB1607

VB1608

8个字节

发送长度8

从站地址

功能码

数据地址高字节

数据地址低字节

数据字长高字节

数据字长低字节

CRC校验低字节

CRC校验高字节

从上面的通讯结构可以看出:数据地址、字长和CRC都是一个字,其中地址和长度或数据高低字节与西门子定义一致,即低地址高字节。CRC不一样,是低地址低字节,与计算机上的定义一致。这点必需注意。

变频器写返回:

接受

VB1609

VB1610

VB1611

VB1612

VB1613

VB1614

VB1615

VB1616

VB1617

8个字节

接受长度8

从站地址

功能码

数据地址高字节

数据地址低字节

数据值  高字节

数据值  低字节

CRC校验低字节

CRC校验高字节

返回与发送时一样,表示通讯数据接受成功,并已执行。

我只需读5个字的参数或1个字的状态,变频器读返回:

接受

VB1609

VB1610

VB1611

VB1612

VW1613

……

VW1621

VB1623

VB1624

N个字节

接受长度n

从站地址

功能码

数据字节字节数

数据1   数值

。。。。。

数据5   数值

CRC校验低字节

CRC校验高字节

读状态返回7个字节,读5个字返回15个字节。

程序要求:定义通讯优先级别是先写,后读。写命令(运行,停止,复位等)发送级别最高,其次是写频率设定。写通讯发送后,判断返回值,确定是否写成功,若写成功则不再写,只要控制状态或频率改变时,再次写。读为一次读变频器状态,一次读当前运行参数,轮流读取。

根据上述要求,确定了以下几个子程序和中断程序:

1.       初始化子程序:对自由口通讯配置波特率、偶校验等

2.       变频器控制子程序:输入运行、停止、复位、地址、频率设定等入口。输出变频器状态、通讯故障码、当前运行频率、电流等。程序中要根据上次通讯结果判断当前应写还是读。并发出XMT通讯指令,开通发送完成中断。

3.       CRC校验子程序:运算发送的CRC码。

4.       发送完成中断程序:根据发送的内容,确定接受的长度,关闭接受中断,开通接受完成中断。

5.       接受完成中断程序:判断接受信号是否正常,若不正常送出相应的故障码。将接收到的正确信号,送入对应暂存区内,供控制子程序输出。关闭接受中断。

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机