做一个项目,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通讯原理,才能用得手。