一个基本的伺服控制程序,是由 CPU 模块、IS620N 伺服系统、RTU-ETC 及 0016ERN 扩展模块组成:
![](https://i-blog.csdnimg.cn/blog_migrate/4e8c07b7e5e70c237ae5e56f50bee5e4.png)
要求编写一个简单的程序,让 AM600CPU 控制器实现如下功能:①让伺服马达 1 能够点动运行;②每触发一次命令标志,伺服马达 2 运转 2 圈后停止,用于测试系统是否运行正常;③让扩展机架上的 IO 输出端口,进行跑马灯输出,每 0.5 秒由低向高移动 1 位,在 16bit 范围内循环移动。
例程的编程方法与步骤如下:
伺服的运动控制,需要放在高实时 EtherCAT 任务周期中处理;跑马灯的控制实时性要求不高,放在 20ms 的任务循环中处理;
一、新建工程
运行 AM600 编程软件 InoProShop,新建一个用户工程,在如下图的画面中,双击左侧 Network
Configuration,添加 EtherCAT 网络总线:
![](https://i-blog.csdnimg.cn/blog_migrate/2384a9d9f620520fd291b2c651fb745f.png)
根据实际系统的设备接线顺序,在网络中依次添加 2 个 IS620N 伺服、1 个 RTU-ETC 远程模块(扩展机架), 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/14d2f4e8e47157b5c71463708d5c75d5.png)
双击上图中的 RTU-ECT 模块,进入扩展机架的配置画面,在该画面中,按实际接线顺序,依次添加扩展 IO 模块, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/c765ab2ce3d3d1bafcfa6f85b33fe202.png)
至此,在用户工程中与 AM600 实际应用的接线相同的硬件配置完成。
二、编程功能处理的POU
先看一下 InoProShop 编程环境中的默认任务配置,默认有一个 MainTask 任务,点击查看其包含 EHERCAT. EtherCAT_Task 项目,因此这是一个 EtherCAT 任务,该任务下还有一个名称为 PLC_PRG 的 POU,在新建 工程的同时创建了,我们希望的伺服控制程序代码就可以在 PLC_PRG 中来编写。
![](https://i-blog.csdnimg.cn/blog_migrate/982a322073ed0e39aa9cc0ef3968b7b4.png)
双击上图左侧的 PLC_PRG,进入该 POU 的编辑画面,输入如下图的内容,为了简练,MC 功能块实例中没有用到的变量没有显示:
![](https://i-blog.csdnimg.cn/blog_migrate/19c3201e6fc3a2ed8973fafe8d9e35e9.png)
上面的就是要编写的 2 个伺服试运行代码,可令伺服 1 点动运行,每次置位 RUNF1 标志,可令伺服 2 旋转 2 圈。 为了达到这个目标,还需根据伺服驱动器作相应的配置,对 EtherCAT 主站通信 PDO 进行配置,如下图中被 勾选的配置项,将来是每次 EtherCAT 通信中,都要进行交互的数据内容;
![](https://i-blog.csdnimg.cn/blog_migrate/6c2c8b52a2d6f45217d60d4e36da2a91.png)
还有一些只需要 AM600 对伺服功能码进行改写操作的内容,就放在 SDO 配置中,如电子齿轮比、原点回归 模式等,这些通信操作的是伺服的功能码,且只在上电后进行一次改写操作:
![](https://i-blog.csdnimg.cn/blog_migrate/efb20c2ecb21b22c4d50f41ebe87f0fb.png)
上图中,是将伺服的运行模式设置为“周期同步位置模式”,简单的讲,就是 AM600 控制器,在每次 EtherCAT 任务执行中,计算下一个周期点要求到达的位置(TargetPosition),发送给伺服驱动器,而伺服 将根据这个距离 / 时间命令,完成到达下一个到达目标点的运动。
三、电机参数设置
为了精确地控制运动位置,控制器必需准确计算伺服电机的位置,根据应用系统的运转特性、行程特点,选择“轴 类型与限制”,以便控制器内部对读电机编码器反馈信息进行计算,得到准确位置,避免编码器脉冲数累积溢出造成的错误,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/a1195e589764e10968a35cfc5c3cff6b.png)
对于丝杆类型的往复运行机构,其行程是有限的,我们往往需要知道其在丝杆行程范围内的绝对位置,此时 选择“线性模式”比较好;
若是单方向运转类型的转轴,采用线性模式容易出现位置计数溢出,导致位置计算错误,则选择“周期模式” 比较好;
电机的编码器参数(如分辨率),应用系统的机械减速比可能各不相同,在编程时也需要根据实际情况进行设定, 如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/ad136ade74e6bb25f5aae3ff6eef54c1.png)
IS620N 伺服配套的电机有两种典型分辨率,普通增量式编码器为 20bit 分辨率,即每圈有 1048576 个脉冲数;
而绝对编码器为 23bit 分辨率,每圈 8388608 个脉冲数。实际运行时,控制器以 EtherCAT 通信方式向伺服 驱动器发送所需要运行的脉冲数,来控制伺服运行,因此编码器分辨率,需要根据实际情况准确设定,如上图。
例如上图中为 20bit 编码器,没有减速机的情况,当命令伺服运行 1 个单位时,伺服将会选择 1 圈(轴运动 360°)。
如果将上图中圆圈内“应用的单元”参数输入栏填写为 360,当命令伺服运行 1 个单位时,伺服将会选择 1/360 圈(轴运动 1°)。依此类推,按照实际机械结构的设定对应参数(俗称电子齿轮比)之后,就可以按 照应用系统的运动距离物理单位输入 distance 命令了,使控制参数直观易懂。
另外还需注意,上图中圆圈内的参数输入栏中只能输入整形数,因左右两边对应行中的参数之比为有效比例值,可以通过在左右两边对应行输入合适的整数值。例如伺服电机经过变比为 4:1 机械减速机构后,驱动导程为5.6mm 的丝杆(即丝杆转动 1 圈,丝杆滑块运动 5.6mm)运动,设定如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/cd50b067772011bebae75c832bb437f3.png)
图中圆圈栏中参数的量纲,后续就可以作为 MC 控制命令中 distance 的参数量纲了。
上面说明的伺服驱动器、电机设置内容,在 Axis、Axis_1 两个轴的对应项中均需设置和核实,否则不会按所希望的特性运转。
![](https://i-blog.csdnimg.cn/blog_migrate/85257fc60fb086152c8d21e128991dd5.png)
四、跑马灯逻辑流程编写
相对于伺服轴的运动控制,跑马灯的逻辑控制程序执行需要的实时性就可以低许多,只要按每秒 2 次的 DO 端口变化即可,可以另外设置一个普通任务,每 20ms 执行一次对应的 POU,来进行移位刷新处理。先增加一个 POU,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/08a08b6a79f2902eb371e6895039b295.png)
在 POU 中编写一个如下的程序,另外再增加一个任务:
上图的程序采用 ST 语言编写,因 POU 每 20ms 执行一次,用变量 A 为计算执行的次数,每执行 25 次(即程序中的 500/20),把变量 b 扩大 2 倍,即将其二进制数由低向高移位 1 次,我们将变量 b 送给跑马灯输出端口,就可以实现跑马灯效果了。
五、将变量与硬件输出端口关联
根据前面的要求,将刚才编写的 POU 程序中变量 b 与扩展 RTU-ETC 机架中 IO 模块端口关联,操作方法是 先选择应用系统网络中 IO 的模块,再选择 IO 端口,在其 I/O 映射中,指明 POU 程序的变量。用户编写的程 序变量都是在 Application\ 下面对应 POU 中选择的,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/22af3b25c4c20571b4f2a7d0244b92c3.png)
然后将跑马灯 POU 分配给新任务 Task 中,同时配置 Task 的任务执行,将其优先级设为普通优先级,比如15;执行时间间隔设为 20ms:
六、用户程序编译排错
若有编写错误,上图中会列出错误类型与原因,双击其中的错误描述,光标会跳转到对应的程序编辑窗口,便于修订;逐一处理后,再进行编译,直到所有编译问题排除。
最后将用户程序下载到 AM600CPU 模块中
![](https://i-blog.csdnimg.cn/blog_migrate/81a9703a4908fc41067531ccc3a5602d.png)
七、监控用户程序的运行
在监控画面,可以直观看到程序在执行情况,比如将变量 JF1 置 1,使得轴 1 点动运行,将之清 0 则轴 1 停止; 每次强制变量 RUNF1 置 1,轴 2 就会运转 2 圈。 切换到 RTU-ETC 扩展模块画面,就可以看到所要求的 IO 输出端口呈跑马灯切换状态:
![](https://i-blog.csdnimg.cn/blog_migrate/b16121440061b303d51a81ce13b6d99c.png)
至此,编程所需的伺服点动、触发运行 2 圈的功能都已实现,一个简单的编程过程就完成了。
八、典型步骤总结
从上面的举例来看,编写具有 MC 运动控制功能的用户程序,一般需要有如下的内容处理,
应用系统硬件配置:根据所使用的主控制器、扩展模块、网络类型、伺服从站等,进行网络配置;
用户程序编写:根据所需实现的控制功能,将运动控制用一个 POU 编写(如 POU1),将普通逻辑控制用 POU 编写(如 POU2);
伺服驱动器参数配置:根据硬件配置中的伺服名称,伺服的运行模式,来配置 SDO、PDO 的对象,保证用户 程序的 MC 功能块与伺服之间所需的通讯对象都填在配置表中;
伺服电机参数配置:要准确填写伺服电机的编码器分辨率、机械结构的传动比、轴运动范围特点等,使得控 制对象的位移指令与实际位移的准确对应;
任务安排:按控制的实时性要求,将运动控制功能 POU1 放在 EtherCAT 任务中执行,周期可设为 2ms,优 先级为 0;将普通逻辑控制 POU2 放在普通任务下,周期可设为 20ms,优先级为 16;
在线调试:将 AM600 控制器通过 LAN 网络与 PC 相连接,接线无误后上电,下载调试用户程序,排除用户程 序 Bug;若有条件,可将伺服驱动系统接入 AM600 控制器,再进行调试。若手头没有伺服系统,可以将伺服 设为虚轴;若手头没有 AM600 控制器,还可以在 PC 上仿真调试用户程序,先排除用户程序中可能的错误, 直达满意为止。