前言
本文主要介绍倍福PLC和施耐德ATV320变频器通过EtherCAT通讯完成基本监控的工控案例。
一、硬件介绍
1,倍福PLC(嵌入式和IPC均适用),编程使用TwinCAT3;
2,施耐德变频器,ATV320系列,需配置EtherCAT 通讯卡VW3A3601,通讯卡的机械适配器,VW3A3600
二、变频器参数配置
设置变频器的通讯模式为“通讯卡”
1)全部(FULL)→命令(CtL-)→(FR1-)
2)使用出厂设置,FrC数保持默认不变;
3)使用出厂设置,CHCF数保持默认不变;
三、倍福TC3配置
1、加载变频器EtherCAT通讯的XML文件(Schneider_Electric_ATV320_V116.xml)到安装目录下的文件夹位置;
2、加载XML文件后可以在TC3中扫描到组态的硬件
如果扫描不到,可以手动添加
3,扫描到硬件后,配置变频器的过程数据PDO
PLC的控制数据配置了控制字“CMD”和设定频率“LFR”;
PLC的接收数据配置了状态字“ETA”,实际频率“RFR”,实际转矩“OTR”,实际电流“LCR”等
四、建立PLC变量,关联PDO
对应PDO的数据,建立PLC变量的结构体类型。变频器的控制字和状态字比较关键,建议也创建结构体类型,把Word解析成Bit,方便程序使用。
状态字:
控制字:
五、根据状态图表,编写逻辑程序
要实现对变频器的控制,就是向第四章中,结构体实例化后建立的PLC变量写控制字和控制速度;
Step 1,给变频器控制代码16#0006,变频器变为上电准备模式;
Step 2,在上电准备模式,给变频器控制代码,16#0007,变频器变为上电状态;
Step 3,在上电准备状态,变频器停止,此时给出变频器目标频率,发送16#000F,变频器运行;
Step 4,在变频器运行状态,发送16#0007,变频器停止。
控制代码#0006,#0007,000F的含义查看参考资料如下:
控制代码参考:
状态代码参考:
附上变频器启停程序如下
PROGRAM VF_Control
VAR
AutoStart:BOOL; //自动启动
AutoStop:BOOL; //自动停止
AutoTargetVel:WORD; //自动设定频率
btnManualStart:BOOL; //手动启动
btnManualStop:BOOL; //手动停止
ManualTargetVel:WORD; //手动设定频率
ManualMode:BOOL; //选择手动模式
VF_StatusUnpack: MEM.UnpackWord; //解析状态字
VF_ControlUnpack: MEM.UnpackWord; //解析控制字
btnEnable:BOOL; //允许上电操作
END_VAR
//1.从未上电模式变为准备上电模式
IF VF_StatusUnpack.byLowByte=16#50 AND btnEnable THEN
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#0006;
END_IF
//2.从准备上电模式变为上电模式
IF VF_StatusUnpack.byLowByte=16#31 AND btnEnable THEN
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#0007;
END_IF
//3.从上电模式(停止)变为运行
IF VF_StatusUnpack.byLowByte=16#33 THEN
IF NOT ManualMode AND AutoStart THEN
GVL.VF_Rdata1.ATV_RPDO_Output2_TargetVelocity:=AutoTargetVel;
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#000F;
ELSIF ManualMode AND btnManualStart THEN
GVL.VF_Rdata1.ATV_RPDO_Output2_TargetVelocity:=ManualTargetVel;
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#000F;
END_IF
END_IF
//4.从运行变为上电模式(停止)
IF VF_StatusUnpack.byLowByte=16#37 THEN
IF NOT ManualMode AND AutoStop THEN
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#0007;
ELSIF ManualMode AND btnManualStop THEN
GVL.VF_Rdata1.ATV_RPDO_Output1_ControlWord:=16#0007;
END_IF
END_IF
总结
倍福PLC通过EtherCAT控制其它变频器可以借鉴,举一反三。