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做为下一个读写指令的启动指令。