做一个项目,plc用S7-1200,S-1200串口连接5个ABB 510变频器,上位机用WINCC
硬件组态S7-1200用PU1214,RS485用CM1241, ABB 510变频器用自带的内置通讯协议,S7-1200通过NET opc和WINCC通讯。
开始编程,在OB100中调用MB_COMM_LOAD快,初始化MODBUS通讯,在主程序中,调用MB_MASER块,完成对变频器读写功能。
在主程序中,编写5台变频器轮询程序,利用DONE位,完成位做下一个读写变频器的条件,程序编完后,开始调试,WINCC读写不到变频器的参数,监视S7-1200程序,看STATUS显示8200,现象端口忙于处理发送请求,程序编的不对。
既然程序不对,冷静下来,换个思路,用一个定时器,1S接通1S关断,再用比较指令,对每一个变频器读写,通电实验,在WINCC中能读到变频器频率和电流,写变频器频率,也能写了,程序可以使用了。
过了不久,又接到同样的项目,用原程序,做一下修改,不费力,就完成任务了,MODBUS通讯即可爱,又可恨,只有全面理解MODBUS通讯原理,才能用得手。