最近在做一个项目:要求S7200(或SMART)PLC与11台台达EL(施耐德ATV310)系列变频器MODBUS RTU通讯。在触摸屏上能一键启动/停止变频器,并能修改频率。以前没做过这种项目,所以在论坛求助了不少朋友,看似简单,由于第一次做,做了一天多才做出来。现特将过程分享出来,让论坛里面和我一样的朋友少走一点弯路。
一、材料:西门子CPU226CN一台、台达VFD-EL变频器3台(手上只有3台,11台延迟应该相差不很大)、D型485通讯线一条、RJ45网线3条(一头带水晶头,另一头不要)、常开按钮3个、笔记本电脑,USB-PPI电缆等。
二、如下图将各硬件连接:(特别是485通讯线一定要接好,由于是实验所以没有接电阻之类的,短距离影响不大)。
三、写程序:
一开始我也是在网上找了例子,照搬,但是好多次都没成功。特意总结了下经验:
1.写程序之前指定MODBUS 指令284个字节的V库存储区,在文件选项里面,然后默认分配就行了,后期程序里面就不要用到这些存储器来了,不指定的话程序编译会报N个错误。
2.接下来就是调用MODBUS RTU指令了,大同小异。我会把程序作为附件上传。
3.需要注意的是MSG指令框,COUNT管脚(传输数据个数)这个其实你填1,4,8,10(有些说要8的倍数,我实际操作,不需要),我都写的1,如果报错我感觉跟这个没多大的关系,如果你写的10,那么下一个管脚Dataptr,寄存器地址最好隔大点,比如第一条MSG指令,GOUNT和Dataptr分别填的10和&VB1000那么下一个MSG指令DataPtr就最好填&VB1020或者&VB1100。
4.还有MSG指令框里面,每一个从站站号一定要唯一,不管你定义1也好,3也好,和变频器设定的站号一样就行。
5.每一个MSG指令完成后,可以用完成位来复位使能位,不要一直接通MSG指令,不然容易报6号错误。
6.一般最常见的错误是代码3,这是很烦人的,报3的话,主要检查通讯口初始化通讯参数(波特率,校验),还有变频器参数,变频器通讯协议寄存器地址。
四、变频器参数设定:
台达EL参数设定:09.00位站号设定(自定义,和程序一样),09.01-1(9600),09.04(8,n,1 for rtu)
02.00-3(有RS485设定频率),02.01-3(由RS485运转),其他的默认就行了。
写好程序,通电试机,一开始可能有些障碍,认真琢磨,肯定能解决。
希望能帮到一些朋友!
楼主最近还看过