本文着重介绍西门子 S7-200 SMART PLC控制变频器的启停,主要通过MODBUS RTU进行通讯,以及设定变频器频率和读取变频器频率。
一.添加西门子PLC库指令
PLC和变频器Modbus RTU通讯,PLC做主站,变频器做从站,我们首先要找到PLC中的Modbus RTU Master库,我们将对应库中的指令添加到主程序中。
二.首先添加MBUS_CTRL/MB_CTRL2 指令(初始化主站)指令
我们可以通过如上图片,找到该指令中不同引脚的含义。在该项目中,通讯参数设置位波特率9600,偶校验,端口port设为1,因为我们用的是信号板上的RS-485,如果使用CPU集成的端口,该值就设为0。MODE是一直为1,表示我们启用了MODBUS协议。超时我们设置的1000ms,可以根据实际设置超时时间。
DONE是完成位,Error是存储错误代码的,当初始化错误,ERROR会显示出错误对应的代码,以便我们查找故障原因。
变频器地址位1,slave设置为1。RW等于1表示写,等于0表示读,该指令是控制变频器的启停,所以我们RW设置为1,要写数据到变频器。40100表示变频器控制字,当这个值为16#047E,变频器为停止状态,当这个值为16#047F,变频器为运行状态,我们通过改变VW1310的值,就实现了变频器的启停。
变频器地址位1,slave设置为1。RW等于1表示写,等于0表示读,该指令是设定变频器的频率,所以我们RW设置为1,要写数据到变频器。40101表示主设定值,我们通过改变VW1312的值实现了对变频器频率的控制。
但是我们的频率对应关系是-16384~+16384表示频率是-50HZ~+50HZ,我们的VW1312应该是设置成16384这样的数字量,触摸屏设置HZ,对应转换成范围内的数字,这就用到了一个转换的指令,VD776表示0-50之间浮点数,根据VD776的值,VW1312会被转换成0-16384之间的数,这就实现了转换。
变频器地址位1,slave设置为1。RW等于1表示写,等于0表示读,该指令是读取变频器的频率,所以我们RW设置为0,要读数据到PLC。40111表示速度实际值,-16384~+16384表示频率是-50HZ~+50HZ,我们通过监控VW1314的值实现了对变频器频率的读取。
我们的VW1314应该是一个0-16384这样的数字量,我们要将这个数字量转换成0-50HZ之间的数,转换指令如下所示:
上电我们通过SM0.1将通讯相关的位都复位,然后将停止信号给到控制字VW1310中,等待1S,我们启动通讯,这样就实现了上电复位通讯程序。
Modbus RTU是半双工,所以每一个扫描周期我们只能执行一个读或者写的程序,当我们有多个读多个写,我们就需要写轮询程序,也就是依次循环启动读写程序。
我给大家举一个例子,每一个指令都有一个完成位,有一个触发位,我们就通过指令的完成位去复位当前指令的触发位,同时去置位下一条指令的触发位,这样就实现了依次执行,当然,我们不能忘了把该指令的完成位也要复位。