西门子200plc与英威腾GD变频器modbus通讯 1,读写变频器的内部参数 2,控制变频器正反转,停止,读电压电流 3,设置变频器输出频率 有详细注释,简单易懂

直接开始接线吧!西门子200PLC和英威腾GD变频器的Modbus通讯其实就三层窗户纸:接线、参数配置、程序编写。咱用S7-200的Port0口,用RS485半双工方式连接,记得A接A+,B接B-,别手抖接反了。

先上核心程序结构。需要调用西门子的Modbus主站库,这个库在Micro/WIN里得手动添加。程序结构大致长这样:

//主程序
Network1
LD SM0.0
CALL MBUS_CTRL:SBR1, 1, 9600, 0, 1000, 0 //初始化通讯口

这段每个扫描周期都得跑,重点看参数:9600波特率,无校验,超时1秒。注意SM0.0这个常开触点,保证持续初始化。

读写参数是基本功。比如要改变频器F009加速时间(地址4010),得这么玩:

Network2
LD M10.0 //触发写入
EU
CALL MBUS_MSG:SBR2, 1, 16#06, 4010, 1, &VB100, 1, 0
//16#06是写单个寄存器,4010是地址,写入值在VB100

这里有个坑:Modbus地址要减1换算。比如参数4010实际填4009,但西门子库会自动+1,所以直接填4010就行。

西门子200plc与英威腾GD变频器modbus通讯 1,读写变频器的内部参数 2,控制变频器正反转,停止,读电压电流 3,设置变频器输出频率 有详细注释,简单易懂

控制启停才是重头戏。变频器控制字在4001H,正反转用不同数值组合:

Network3
LD 正转按钮
CALL MBUS_MSG:SBR2, 1, 16#06, 4001, 1, 16#12, 1, 0 
//16#12是正转命令组合值

LD 反转按钮
CALL MBUS_MSG:SBR2, 1, 16#06, 4001, 1, 16#22, 1, 0 
//16#22是反转命令

LD 停止按钮
CALL MBUS_MSG:SBR2, 1, 16#06, 4001, 1, 16#01, 1, 0 
//急停命令

这些控制字数值得查英威腾手册,不同变频器可能有差异。重点注意每次只能执行一条MSG指令,得用状态位做排队处理。

读实时数据用03功能码。比如同时读电压(4014H)和电流(4015H):

Network4
LD SM0.5 //0.5秒脉冲触发
CALL MBUS_MSG:SBR2, 1, 16#03, 4014, 2, &VB200, 1, 0
//读取2个寄存器数据到VB200开始区域

数据回来是4字节浮点数,需要做格式转换。假设VB200开始是电压值:

MOVD &VB200, AC1 //把地址指针给AC1
MOVR *AC1, VD300 //把浮点数值转存到VD300

频率设定更简单,直接写4002H地址:

Network5
LD 频率设定使能
CALL MBUS_MSG:SBR2, 1, 16#06, 4002, 1, VW400, 1, 0
//VW400存放设定频率值(0-5000对应0.0-50.00Hz)

这里有个细节:英威腾的频率参数通常是放大100倍的整型。比如要设25Hz,实际发送2500,得先把实数转成整数。

最后提醒几个实操要点:1. MSG指令必须分时触发 2. 每个通讯周期留够时间 3. 变频器站号别冲突 4. 接地线要单独接,别偷懒省掉。遇到通讯失败先拿调试软件监Modbus报文,比瞎猜管用多了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐