面对一台ZMC600E运动控制器与多台伺服电机,我们该怎样让它工作起来?本文带你了解PLCOPen,并详细讲解如何使用AWStudio控制电机运动。
在自动化领域,运动控制是一件很复杂的事情,包含了上位机通讯,工业现场总线通信协议,运动控制算法,伺服电机控制等领域知识。致远电子自主研发的AWStudio 的 AWPLC 解决方案可以快速实现运动控制编程。
AWStudio 的逻辑组态提供了符合 IEC61131-3 标准的 ST 语言编程环境,该开发环境和运行时均是由 ZLG 致远电子自主研发,提供了带智能提示的代码编辑器,以及多种程序调试手段,让用户可以轻松开发 PLC 程序。AWPLC 提供了 PLC 的运行时环境,可以运行用户开发的 PLC 程序(开发环境生成的二进制文件),进而控制硬件 IO 或电机伺服器等按程序逻辑进行工作。
AWPLC 运行时环境是一个软 PLC 的引擎,需要在一个硬件载体上运行,比如 ZLG 致远电子的运动控制器,或者 PC 机等。PLCOPen 是总部在欧洲的 IEC61131-3 推广团体,目的是为了使得不同 PLC 厂家的产品应用编程通用化,消除产品技术差异和壁垒,在用户选用不同品牌 PLC 时,不必另外学习相应的编程方法。PLCOPen 对运动控制功能块 MC 的技术规格进行了约定,包括 MC 功能模块的命名、具体功能、输入输出变量定义、相关时序逻辑等,最大限度地保证用户编程技术的互通。
AWStudio提供了支持PLCOPen规范的运动控制接口,包含了 MC_Power、MC_MoveAbsolute、MC_MoveRelative、MC_Reset等单轴功能块。接下来,我们介绍如何通过 AWStudio 快速地创建ZMC600E应用示例:控制 ZMC600E 打印字符,通过EtherCAT控制电机转动。
编译环境搭建
首先需要搭建编译环境,准备硬件和软件。
1. 必备硬件
x86架构Windows系统的个人电脑;
ZMC600E运动控制器;
支持EtherCAT 协议的电机驱动器和伺服电机。
2. 软件工具
电脑端安装 AWStudio 软件 ;
ZMC600E端安装 awplc运行时。
配置电脑与ZMC600E设备的连接:使用网线连接windows10 电脑端网络端口与ZMC600E 运动控制器的NET2网络端口, 在电脑上配置在同一个网络子网。配置ZMC600E设备与从站的连接,使用网线连接ZMC600E运动控制器的ECAT网络端口与从站网络端口。
新建工程
双击AWStudio图标启动程序。
图1 AWstudio界面图接下来创建运动控制器解决方案。
图2 新建解决方案对话框图
- 单击工具栏的【新建】按钮。选择【运动控制器】-【AWPLC编程】解决方案。修改解决方案名称。点击【确定】按钮。
图3 新建解决方案对话框图选择控制器型号为ZMC600E,点击【确定】按钮。图4 选择运动控制器型号图打开了空白项目。
图5 打开空白控制器项目
编写简单脚本
我们尝试编写一个简单的st脚本,脚本功能是打印字符串。新建一个整型变量。
- 单击 main.st 激活编辑页单击变量新建的【+】按钮输入变量名单击类型选择下拉按钮单击以选择类型点击【确定】按钮
图6 新建变量对话框
编写st脚本,包含两条语句:计数递增,打印计数。
PRINT_STR('cnt = ' + DWORD_TO_STRING(cnt));cnt := cnt + 1;
图7 代码编辑图
POU调度程序会在每个周期调用main.st程序。
仿真运行程序
AWStudio提供了仿真模式,无需连接目标设备,程序可以运行于windows系统的仿真器。
图8 工程启动过程图
- 点击界面下方的【输出】按键。选择【输出】-【启动Solution】子页。点击工具栏的【启动】按钮,【启动】按钮切换成【停止】按钮。;观察【输出】文本框,将会显示打印内容。点击电机工具栏的【停止】按钮。
可以在输出-启动区域看到打印结果,计数每次累加1并打印到屏幕。
在目标设备运行
连接ZMC600E设备运行。
- 点击设备下拉按钮。电机刷新搜索设备按钮。单击选择设备。
图9 设备连接示意图
输入管理密码,登录到设备。
图10 登录对话框图登录成功时,下方状态栏会显示连接设备和对应的MAC地址。
在设备端运行st脚本。
图11 设备端启动过程图
点击工具栏的【启动】按钮,【启动】按钮切换成【停止】按钮。
观察【输出】文本框,将会显示打印内容。
点击电机工具栏的【停止】按钮。
可以在输出文本框区域看到打印结果,计数每次累加1并打印到屏幕。
在电脑端编写代码,单击一个按钮就能编译程序并在设备端运行程序,非常方便。实际上 AWStudio在后台做了编译相关工作,把构建好的st程序打包发送到 ZMC600E设备,并通知守护进程启动st脚本程序。
添加主站从站
ZMC600E控制器通过 EtherCAT 协议连接了从站设备(电机驱动器)。首先添加一个 EtherCAT 主站总线,如下图。
图12 添加总线对话框图ZMC600E充当主站控制器,需要配置总线网口。
图13 资源连接对话框图接下来添加从站设备。打开添加从站对话框。
图14 打开添加从站对话框图搜索并添加从站。图15 添加从站图从站添加成功,右边是从站详细配置页面。
图16 从站详细配置图从站编辑页可以配置从站子页,变量子页,FMMU/SM子页,邮箱子页,初始化命令子页,分布时钟子页。变量页包含了PDO详细信息,是从站的核心配置。AWStudio提供了自动映射机制,可以自动拆包解析PDO变量,避免了用户直接处理繁琐又容易出错的PDO。这里我们跳过配置流程,直接使用默认配置。如果有多个从站设备,需要重复上述流程添加从站。
电机配置
打开电机配置页面。
图17 Cia402电机配置图映射关系页面,可以查看或修改绑定的变量名。第一个从机的电机变量名称默认为 “CiA402_AXIS_0”,该电机变量就是 PLCOPen 中的轴对象,后续我们写代码需要用到该变量。
图18 电机映射关系配置页面通用页面,可以编辑轴安全配置。
图19 电机通用配置页面轴的虚拟模式开关,支持在仿真模式下模拟轴运行,虚拟电机的控制模式和位置。仿真模式下能模拟EtherCAT主站和从站电机,便于用户不连接设备也能调试脚本。
切换到缩放/映射页面。默认脉冲比是1:1,不需要特别配置。
图20 电机缩放/映射配置页面如果缩放比分子调的比较大,则后面的代码中的运动功能块的位置和速度和加速度就需要调小。
电机编程
由于AWStudio提供了PDO映射,所以我们可以免于管理主站和解析变量。此外AWStudio提供了PLCOPen运动接口,用户可以方便地控制电机运动,避免直接管理电机控制和状态的字典变量。接下来我们使用PLCOPen接口编写电机使能代码和电机运动代码。
轴是对伺服电机的高级抽象,避免了直接处理从站电机的状态字、控制字、指令位置等对象字典项,支持轴使能、发布运动、轴状态查询等功能。
以下是轴控制功能块常用接口的简单介绍:
MC_Power 控制轴使能(核心功能块)。
MC_Reset 清除轴错误。
MC_ReadStatus 查询轴状态。
MC_ReadActualPosition 查询轴实际位置。
MC_MoveAbsolute 轴运动到指定的绝对位置。
MC_MoveRelative 轴基于当前位置按照偏移量运动。
操作要点:轴要先使能,才能驱动电机运动。电机存在错误时,要先清除错误,才能使能轴。
电机使能
首先添加多个功能块:轴状态查询,轴位置查询,轴错误复位,轴使能功能块。
然后编写一个简单的脚本,执行上述的功能块。
程序每运行200个周期,打印一次当前计数、实际位置、轴使能状态标志。
图21 代码编辑框图脚本代码如下:
rdst(Axis:=CiA402_AXIS_0,Enable := true);rdActPos(Axis:=CiA402_AXIS_0, Enable := true, Position => posAct);IF rdst.ErrorStop THENrst(Axis := CiA402_AXIS_0, Execute := TRUE);END_IF;power(Axis:=CiA402_AXIS_0, Enable := true, bRegulatorOn := true, bDriveStart := true);IF MOD(cnt, 200) = 0 THENPRINT_STR('cnt = ' + DWORD_TO_STRING(cnt) + ' pos=' + LREAL_TO_STRING(posAct));PRINT_STR( 'Status ' + BOOL_TO_STRING(power.Status) + ' RegulatorOn ' + BOOL_TO_STRING(power.bRegulatorRealState));END_IF;cnt := cnt + 1;
查看打印过程。
图22 电机使能过程打印图可以看到,轴使能标志位开始时为假,然后为真,并打印了电机实际位置。
电机运动
电机使能成功,接下来就可以实际驱动电机转动。
首先添加绝对运动功能块,相对运动功能块对应的变量。
然后编写程序:
等待轴使能状态标志为真。
轴执行绝对运动。从当前位置运动到 100 单位的位置。
绝对运动到达目标后,再执行相对运动。从当前位置,往前运动200的单位。
图23 代码编辑框图
代码中的位置,速度,加速度和减速度仅供参考,用户可以根据实际情况自行缩放。
脚本代码如下:
power(Axis:=CiA402_AXIS_0, Enable := true, bRegulatorOn := true, bDriveStart := true);if power.bRegulatorRealState THENmovAbs(Axis := CiA402_AXIS_0, Execute := TRUE, Position := 100, Velocity := 50, Acceleration := 100, Deceleration := 100, Jerk := 0);if movAbs.Done THENmoveRel(Axis := CiA402_AXIS_0, Execute := TRUE, Distance := 200, Velocity := 50, Acceleration := 100, Deceleration := 100, Jerk := 0);END_IFEND_IFIF MOD(cnt, 50) = 0 THENPRINT_STR('cnt = ' + DWORD_TO_STRING(cnt) + ' pos=' + LREAL_TO_STRING(posAct));END_IF;cnt := cnt + 1;
查看打印过程。
图24 运动轮廓打印图查看打印过程,可以得到大概的运动轮廓:初始时轴在300单位位置,然后轴从300单位运动到100单位位置,再从100单位位置运动到300单位位置,然后停留不动。
ZMC600E运动控制器
ZMC600E 是广州致远电子股份有限公司开发的最新一代高性能智能总线型控制器,是面向工厂智能化时代的机器人控制器。ZMC600E采用多核异构应用处理器为核心,其内核包括2个64位的Arm®Cortex®-A53核,主频1.0GHz;4个Cortex®-R5F内核,主频800MHz,同时板载1GB DDR4、4GB eMMC以及32KB FRAM。
ZMC600E 示意图及接口图如下所示:
图1 产品示意图图2 ZMC600E接口图
ZMC600E EtherCAT主站控制器为设备制造商提供多轴数、多IO点数控制的新一代可靠智能的运动控制解决方案,提供空间直线、圆弧插补算法,可以广泛应用于注塑行业、冲压行业、车床行业、搬运码垛、关节机器人、喷涂、玻璃机、压铸机、包装设备、3C设备、锂电池设备、纺织、流水线工作站、非标自动化装备、特种机床等高端设备应用。
1427
