BeckHoff <--> Festo Cmmt AS驱动器 EtherCat通讯
目录
一、 设备介绍
1、Festo驱动器设备
2、应用场景
3、Festo驱动器描述
性能方面
功能方面
二、PLC通讯接配置
1、硬件配置(在etherCat系统中)
2、PDO配置
三、设备通讯接口数据类型定义
1、配置 轴IO数据类型
编辑 2、IN 结构体数据
3、out 结构体
四、通讯功能块变量声明
1、轴实例与PLC变量的映射
2、轴通讯功能块变量声明
五、通讯功能块程序
1、通讯程序调用的主要功能块 AXIS_REF_CiA402_ETC_CMMT_AS
2、通讯程序调用的主要功能块 MC_ReadAxisInfo_Festo
3、通讯程序调用的主要功能块 MC_Power_Festo
4、通讯程序调用的主要功能块 MC_Stop_Festo
5、通讯程序调用的主要功能块 ac_position
6、通讯程序调用的主要功能块 MC_ReadStatus_Festo
7、通讯程序调用的主要功能块 ac_Jog
六、通讯功能块程序分析
1、AXIS_REF_CiA402_ETC_CMMT_AS 功能块
输入接口(_In 后缀 )
输出接口(_Out 后缀 )
2、MC_ReadAxisInfo_Festo (轴状态诊断)
1. 功能块与核心作用
2. 输入接口(左侧 )
3. 输出接口(右侧 )
4. 应用场景与价值
3、MC_Power_Festo
1. 核心功能块:MC_Power_Festo (轴使能控制功能块)
2. 接口与信号含义
输入接口(左侧 )
输出接口(右侧 )
3. 逻辑控制:AND 与使能条件
4. 应用场景与作用
4、MC_Halt_Festo 和 MC_Stop_Festo 功能块
4.1、暂停控制(MC_Halt_Festo)
1. 功能块作用
2. 接口与信号
4.2 停止控制(MC_Stop_Festo)
1. 功能块作用
2. 接口与信号
4.3 核心逻辑与应用场景
1. 暂停(MC_Halt_Festo)
2. 停止(MC_Stop_Festo)
4.4 总结
一、 设备介绍
1、Festo驱动器设备
2、应用场景
Festo 驱动器(以文中 Servo drive CMMT - AS 为例 )具备紧凑设计、精准控制、多协议兼容等特性,其应用场景广泛且多元:
- 工业自动化产线:在电子、汽车等行业自动化生产线里,用于点 - 点运动、插补运动控制,像电子元件精密组装,通过精准位置、速度控制,把微小元件准确安装到电路板;汽车零部件生产中,控制机械臂搬运、装配部件,提升产线自动化程度与生产效率。
- 机械制造设备:数控机床、加工中心等设备,借助它实现刀具、工作台的精准运动控制,保证加工精度,比如复杂曲面加工时,通过插补运动控制,让刀具沿精确轨迹运行;还可用于自动化折弯机、冲压机等,控制模具运动,完成金属板材加工。
- 智能仓储与物流:自动化立体仓库中,堆垛机的升降、横移、货叉伸缩等运动,由驱动器精准控制,实现货物快速存取;物流分拣系统里,控制分拣装置运动,根据货物信息快速、准确分拣,适配电商、快递等行业大规模货物分拣需求。
- 食品与包装行业:食品灌装、包装设备,如高速灌装机,控制灌装头运动与流量,实现精准定量灌装;包装机械的封切、贴标等动作,通过驱动器控制,保证包装质量与效率,且因能适配不同控制厂商系统,可灵活集成到各类食品包装产线。
- 医疗设备制造:部分医疗设备,如自动化检测设备、药品生产设备,利用其精准控制特性,实现样本输送、试剂分配等精准操作;在一些康复医疗设备里,控制运动机构,辅助患者进行康复训练,按预设轨迹和速度运行,保障康复效果。
- 新能源领域:太阳能电池生产设备中,控制硅片搬运、切割、焊接等运动,提升电池生产精度与效率;风力发电设备的变桨系统,通过驱动器控制叶片角度调整,优化风能捕获,提高发电效率,保障设备稳定运行 。
3、Festo驱动器描述
Festo 驱动器(以 CMMT - AS 等为代表 )驱动器描述:
性能方面
- 紧凑设计:属市场上最紧凑的伺服驱动器之一,节省安装空间,适配小型化、集成化设备布局需求。
- 精准控制:实现精准的力、速度和位置控制,像直线电缸重复精度可达 ±15μm ,部分摆动驱动器定位重复精度可达 ±0.1° ,保障运动控制高精度,满足电子、精密机械加工等对精度要求严苛场景。
- 多协议兼容:新多协议版本(如 CMMT - … - MP )集成 Profinet、EtherCAT®、Ethernet/IP、Modbus 等现场总线,能适配不同控制厂商系统,灵活融入各类自动化网络。
- 环境适应强:部分型号可在极端温度(如 DFPD 系列可 - 50… + 150°C )、高湿度、粉尘等复杂工况稳定运行,适配化工、制药、户外设备等场景。
- 高效节能:运行中可能量回收,提升能源利用率,契合可持续生产需求。
功能方面
- 运动控制:支持点对点和插补运动,用于复杂轨迹控制,如机械加工中曲线、曲面加工,自动化产线中多轴联动搬运、装配等。
- 自优化与调试:具备自动调谐功能,简化调试流程,自动优化旋转和直线运动控制特性,降低调试技术门槛与时间成本。
- 安全功能:配置标准安全功能(如安全扭矩关闭等 ),无需额外软件即可设置,保障设备运行及人员安全,满足工业安全标准。
- 模块化与适配:模块化程度高,如 DFPD 摆动驱动器有多种派生型,先导阀孔型标准化,兼容多外围元件,还能与同品牌伺服电机(如 EMMT - AS )等优化适配,也可作为单独执行器单元自动化现有过程阀。
- 智能诊断与维护:部分可通过软件工具(如 FST )实时监测磨损状态、故障诊断,提前预警潜在问题,内置自润滑设计等减少维护频率,提升设备运维效率。
二、PLC通讯接配置
1、硬件配置(在etherCat系统中)
2、PDO配置
三、设备通讯接口数据类型定义
1、配置 轴IO数据类型
2、IN 结构体数据
TYPE ST_AI_FROM_AXIS :STRUCTIn_Position :BOOL; (* Axes is in position *)Ready :BOOL; (* axes is ready *)IsMoving :BOOL; (* axes is moving *)StandStill :BOOL; (* axes is NOT moving *)JogMode :BOOL; (* Jog Mode *)PositionControl :BOOL; (* Mode AUTO => position control *)Error :BOOL; (* Common Axes Error, see local axes for more details *)HasReference :BOOL; (* Axes has reference *)ACT_POS :REAL; (* mm *)MaxSpeed :REAL; (* mm/sec *)Diagnose :WORD; (* axes specific diagnose*)arState :ARRAY[1..10] OF BOOL;END_STRUCT
END_TYPE
3、out 结构体
TYPE ST_AI_TO_AXIS :STRUCTPowerOn :BOOL; (* HighPower ON *)ControlRelease :BOOL; (* Release all movement / controller release *)JogMode :BOOL; (* jog mode active (Option) *)PositionControl:BOOL; (* position control (Option) *)CMD_START_POS :BOOL; (* start poitioning *)CMD_JOG_P :BOOL; (* jog (+) *)CMD_JOG_N :BOOL; (* jogn (-) *)QuittError :BOOL; (* error reset *)NewPosition :BOOL; (* SET BY Rob RES BY Axes *)SetReference :BOOL; (* set reverence position *)CMD_POS :REAL; (* set position *)rSpeed :REAL; (* override % 0-100 *)iACCEL :INT; (* % 0-100 *)iDECEL :INT; (* % 0-100 *)Reference_Value :REAL; (* Referenz Wert *)PosWindow :REAL; (* *)arCmd :ARRAY[1..10] OF BOOL;END_STRUCT
END_TYPE
四、通讯功能块变量声明
1、轴实例与PLC变量的映射
2、轴通讯功能块变量声明
FUNCTION_BLOCK FB_DRIVER_061_Festo_CMMT_Ethercat_V3_9_0(*---------------------------------------------*)
(*IN Variablen*)
(*---------------------------------------------*)
VAR_INPUTiIn_idxElement :INT := 0;(*!!!UNIQUE!!! Element identification for usage with multiaxis*)rINMaxSpeed :REAL := 1.0 ; (* mm/ sec Factor Group in Amplifier = 10^-3*)rInMaxAcceleration :REAL := 20000 ; (* mm / sec^2 Factor Group in Amplifier = 10^-3*)rInMaxJerk :REAL := 50000 ; (* mm / Sec^3 Factor Group in Amplifier = 10^-3*)bInswitch_reference :BOOL := FALSE; (* physikal reference switch *)rInReferenceValue :REAL := 0.0; (* Reference Value for axis. Position to be set when reference is true*)bInReleaseSetReferenceValue :BOOL := FALSE; (* Secure Release to overwrite Reference Position for absolut axis *)bIn_Limitswitch_minus_OK :BOOL := TRUE; (* Signal has to be true when axis is not on switch *)bIn_Limitswitch_plus_OK :BOOL := TRUE;bIn_Safety_OK :BOOL;bIn_Release_Homing :BOOL :=FALSE; (* Release the Homing Switch to TRUE if Homing is required*)tIN_MaxtimePositioning :TIME:=T#10S;bIN_Setup_mode :BOOL;rIN_SetupVelocity :REAL := 3.5; END_VAR(*---------------------------------------------*)
(*OUT Variables*)
(*---------------------------------------------*)
VAR_OUTPUTqOut_Release_Axis :BOOL;stOUT_AxisState : AXIS_STATE; END_VAR(*---------------------------------------------*)
(*IN/OUT Variables*)
(*---------------------------------------------*)
VAR_IN_OUTAI :ST_AXIS_INTERFACE; (* Axis Interface used for other systems eg. robot *)
END_VAR(*---------------------------------------------*)
(*lokal constants*)
(*---------------------------------------------*)
VAR CONSTANT
END_VAR(*---------------------------------------------*)
(*lokal variables*)
(*---------------------------------------------*)
VARfbSE_Error :TON; (*Delay Error*)(* Requests *)bVar_REQ_WP :BOOL; (*Request --> WP*)bVar_REQ_HP :BOOL; (*Request --> HP*)bVar_REQ_INIT :BOOL; (*Request --> INIT*)bVar_REQ_POSITION :BOOL; (*Request --> Position*)(* Outputs *)bVar_OUT_WP : BOOL ; (*Output WP*)bVar_OUT_HP : BOOL ; (*Output HP*)bVar_OUT_INIT : BOOL ; (*Output INIT*)bVar_OUT_POSITION : BOOL ; (*Output POSITION*)(* MC POU InstnacesTcMC_v2) *)fbVar_Power : MC_Power_Festo;(* MC_Power *)fbVar_Home : MC_Home_Festo;(* MC_Home *)fbVar_MoveAbsolut : MC_MoveAbsolute_Festo;(* MC_MoveAbsolute *)fbVar_Stop : MC_Stop_Festo;(* MC_Stop *)fbVar_Reset : MC_Reset_Festo;(* MC_Reset NC-Axis in TC Systemmanager // Maybe another Reset of Axis controller ist necessary*)fbVar_Jog : MC_Jog_Festo;(* MC_Jog *)(*fbVar_SetPos : MC_SetPosition_Festo;(* MC_SetPosition*)*)fbVar_ReadActPos : MC_ReadActualPosition_Festo;(* MC_ReadActualPosition*)fbVar_ReadStatus : MC_ReadStatus_Festo;(* MC_ReadStatus*)fbVar_WriteParam : MC_WriteParameter_Festo;(* MC_WriteParameter Attetntion: Writes only parameter to Na-Axis in system manager and not to physical drive!*)fbVar_AxesError : MC_ReadAxisError_Festo;fbVar_Halt : MC_Halt_Festo; fbVar_AxisInfo