西门子plc S7-200SMART提供了免费的MODBUS-RTU库程序,还要知道变频器的启动,停止,频率和电流对应的寄存器地址就可以编写梯形图程序了。
首先必须保证接线正确,PLC的端口3为+,8为-,如下图为PLC和V20的接线
然后是对变频器的参数进行设置,如:
P0700[0] 选择命令源
P2023[0]RS485 协议选择
P2010[0]USS/MODBUS 波特率
P2021[0]MODBUS 地址
P2022[0]MODBUS 应答超时
下面就要编程实现对变频器的控制:
1,调用Modbus RTU的主站程序,初始化Modbus Master端口:
EN:使能位,必须用SM0.0一直接通
Mode:为1 = Modbus, 0 = PPI (stop Modbus),用SM0.0一直接通
Baud:波特率,一般为9600
Parity:效验方式,0=无效验,1=奇效验,2=偶效验
Port:0=CPU集成的端口,1=通过扩展SB信号板的端口
Timeout:从站响应时间,超时时间,单位:ms毫秒
Done:完成标志位
Error:错误代码
2,控制变频器启动,读或写从站数据指令,变频器寄存器地址40100对应了变频器的启动。
EN:使能位,必须用SM0.0一直接通
First:读写请求,必须使用脉冲触发,加沿指令
Slave:从站地址(0-247)
RW:读写命令,1=写,0=读,此处要控制启动需要使用1
Addr:从站通信数据起始地址,要写Modbus地址
Count: 通信数据区地址的数量
DataPtr:主站通信数据区地址
Done:完成标志位
Error:错误代码
上图指令写入到VW0,可以控制变频器的正反转,每个变频器的对应的写入值不同。
3,读取变频器的相关参数,由上面的描述,RW为0,则为读取数据,此处为读取寄存器地址为40111的频率值,并进行转换,是否需要转换,需要看变频器的要求,其他品牌的变频器不一定需要。
需要特别注意的一边就是RS485为半双工通讯方式,每次对变频器的读写只能有一个指令在执行,所以需要进行轮询程序的编写。一般可以使用Done和Error做为下一个读写指令的启动指令。