AM600用户程序编写与调试过程

一个基本的伺服控制程序,是由 CPU 模块、IS620N 伺服系统、RTU-ETC 及 0016ERN 扩展模块组成:
要求编写一个简单的程序,让 AM600CPU 控制器实现如下功能:
①让伺服马达 1 能够点动运行;
②每触发一次命令标志,伺服马达 2 运转 2 圈后停止,用于测试系统是否运行正常;
③让扩展机架上的 IO 输出端口,进行跑马灯输出,每 0.5 秒由低向高移动 1 位,在 16bit 范围内循环移动。
例程的编程方法与步骤如下:
伺服的运动控制,需要放在高实时 EtherCAT 任务周期中处理;跑马灯的控制实时性要求不高,放在 20ms 的任务循环中处理;

一、新建工程

运行 AM600 编程软件 InoProShop,新建一个用户工程,在如下图的画面中,双击左侧 Network
Configuration,添加 EtherCAT 网络总线:
根据实际系统的设备接线顺序,在网络中依次添加 2 个 IS620N 伺服、1 个 RTU-ETC 远程模块(扩展机架), 如下图:
双击上图中的 RTU-ECT 模块,进入扩展机架的配置画面,在该画面中,按实际接线顺序,依次添加扩展 IO 模块, 如下图:

 至此,在用户工程中与 AM600 实际应用的接线相同的硬件配置完成。

二、编程功能处理的POU

先看一下 InoProShop 编程环境中的默认任务配置,默认有一个 MainTask 任务,点击查看其包含 EHERCAT. EtherCAT_Task 项目,因此这是一个 EtherCAT 任务,该任务下还有一个名称为 PLC_PRG 的 POU,在新建 工程的同时创建了,我们希望的伺服控制程序代码就可以在 PLC_PRG 中来编写。
双击上图左侧的 PLC_PRG,进入该 POU 的编辑画面,输入如下图的内容,为了简练,MC 功能块实例中没有用到的变量没有显示:
上面的就是要编写的 2 个伺服试运行代码,可令伺服 1 点动运行,每次置位 RUNF1 标志,可令伺服 2 旋转 2 圈。 为了达到这个目标,还需根据伺服驱动器作相应的配置,对 EtherCAT 主站通信 PDO 进行配置,如下图中被 勾选的配置项,将来是每次 EtherCAT 通信中,都要进行交互的数据内容;
还有一些只需要 AM600 对伺服功能码进行改写操作的内容,就放在 SDO 配置中,如电子齿轮比、原点回归 模式等,这些通信操作的是伺服的功能码,且只在上电后进行一次改写操作:
上图中,是将伺服的运行模式设置为“周期同步位置模式”,简单的讲,就是 AM600 控制器,在每次 EtherCAT 任务执行中,计算下一个周期点要求到达的位置(TargetPosition),发送给伺服驱动器,而伺服 将根据这个距离 / 时间命令,完成到达下一个到达目标点的运动。

三、电机参数设置

为了精确地控制运动位置,控制器必需准确计算伺服电机的位置,根据应用系统的运转特性、行程特点,选择“轴 类型与限制”,以便控制器内部对读电机编码器反馈信息进行计算,得到准确位置,避免编码器脉冲数累积溢出造成的错误,如下图:
对于丝杆类型的往复运行机构,其行程是有限的,我们往往需要知道其在丝杆行程范围内的绝对位置,此时 选择“线性模式”比较好;
若是单方向运转类型的转轴,采用线性模式容易出现位置计数溢出,导致位置计算错误,则选择“周期模式” 比较好;
电机的编码器参数(如分辨率),应用系统的机械减速比可能各不相同,在编程时也需要根据实际情况进行设定, 如下图:
IS620N 伺服配套的电机有两种典型分辨率,普通增量式编码器为 20bit 分辨率,即每圈有 1048576 个脉冲数;
而绝对编码器为 23bit 分辨率,每圈 8388608 个脉冲数。实际运行时,控制器以 EtherCAT 通信方式向伺服 驱动器发送所需要运行的脉冲数,来控制伺服运行,因此编码器分辨率,需要根据实际情况准确设定,如上图。
例如上图中为 20bit 编码器,没有减速机的情况,当命令伺服运行 1 个单位时,伺服将会选择 1 圈(轴运动 360°)。
如果将上图中圆圈内“应用的单元”参数输入栏填写为 360,当命令伺服运行 1 个单位时,伺服将会选择 1/360 圈(轴运动 1°)。依此类推,按照实际机械结构的设定对应参数(俗称电子齿轮比)之后,就可以按 照应用系统的运动距离物理单位输入 distance 命令了,使控制参数直观易懂。
另外还需注意,上图中圆圈内的参数输入栏中只能输入整形数,因左右两边对应行中的参数之比为有效比例值,可以通过在左右两边对应行输入合适的整数值。例如伺服电机经过变比为 4:1 机械减速机构后,驱动导程为5.6mm 的丝杆(即丝杆转动 1 圈,丝杆滑块运动 5.6mm)运动,设定如下图:
图中圆圈栏中参数的量纲,后续就可以作为 MC 控制命令中 distance 的参数量纲了。
上面说明的伺服驱动器、电机设置内容,在 Axis、Axis_1 两个轴的对应项中均需设置和核实,否则不会按所希望的特性运转。

 四、跑马灯逻辑流程编写

相对于伺服轴的运动控制,跑马灯的逻辑控制程序执行需要的实时性就可以低许多,只要按每秒 2 次的 DO 端口变化即可,可以另外设置一个普通任务,每 20ms 执行一次对应的 POU,来进行移位刷新处理。先增加一个 POU,如下:
在 POU 中编写一个如下的程序,另外再增加一个任务:

上图的程序采用 ST 语言编写,因 POU 每 20ms 执行一次,用变量 A 为计算执行的次数,每执行 25 次(即程序中的 500/20),把变量 b 扩大 2 倍,即将其二进制数由低向高移位 1 次,我们将变量 b 送给跑马灯输出端口,就可以实现跑马灯效果了。

五、将变量与硬件输出端口关联

根据前面的要求,将刚才编写的 POU 程序中变量 b 与扩展 RTU-ETC 机架中 IO 模块端口关联,操作方法是 先选择应用系统网络中 IO 的模块,再选择 IO 端口,在其 I/O 映射中,指明 POU 程序的变量。用户编写的程 序变量都是在 Application\ 下面对应 POU 中选择的,如下图:

 然后将跑马灯 POU 分配给新任务 Task 中,同时配置 Task 的任务执行,将其优先级设为普通优先级,比如15;执行时间间隔设为 20ms:

 六、用户程序编译排错

若有编写错误,上图中会列出错误类型与原因,双击其中的错误描述,光标会跳转到对应的程序编辑窗口,便于修订;逐一处理后,再进行编译,直到所有编译问题排除。

最后将用户程序下载到 AM600CPU 模块中

 七、监控用户程序的运行

在监控画面,可以直观看到程序在执行情况,比如将变量 JF1 置 1,使得轴 1 点动运行,将之清 0 则轴 1 停止; 每次强制变量 RUNF1 置 1,轴 2 就会运转 2 圈。 切换到 RTU-ETC 扩展模块画面,就可以看到所要求的 IO 输出端口呈跑马灯切换状态:

 至此,编程所需的伺服点动、触发运行 2 圈的功能都已实现,一个简单的编程过程就完成了。

八、典型步骤总结

从上面的举例来看,编写具有 MC 运动控制功能的用户程序,一般需要有如下的内容处理,
应用系统硬件配置:根据所使用的主控制器、扩展模块、网络类型、伺服从站等,进行网络配置;
用户程序编写:根据所需实现的控制功能,将运动控制用一个 POU 编写(如 POU1),将普通逻辑控制用 POU 编写(如 POU2);
伺服驱动器参数配置:根据硬件配置中的伺服名称,伺服的运行模式,来配置 SDO、PDO 的对象,保证用户 程序的 MC 功能块与伺服之间所需的通讯对象都填在配置表中;
伺服电机参数配置:要准确填写伺服电机的编码器分辨率、机械结构的传动比、轴运动范围特点等,使得控 制对象的位移指令与实际位移的准确对应;
任务安排:按控制的实时性要求,将运动控制功能 POU1 放在 EtherCAT 任务中执行,周期可设为 2ms,优 先级为 0;将普通逻辑控制 POU2 放在普通任务下,周期可设为 20ms,优先级为 16;
在线调试:将 AM600 控制器通过 LAN 网络与 PC 相连接,接线无误后上电,下载调试用户程序,排除用户程 序 Bug;若有条件,可将伺服驱动系统接入 AM600 控制器,再进行调试。若手头没有伺服系统,可以将伺服 设为虚轴;若手头没有 AM600 控制器,还可以在 PC 上仿真调试用户程序,先排除用户程序中可能的错误, 直达满意为止。
  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EVMAM437x是一款基于AM437x处理器的开发板,它支持运行Linux操作系统。在该开发板上进行软件开发时,需要编写源程序来实现各种功能和应用。 与AM437x处理器相关的源程序可以分为以下几类: 1. 启动程序:启动程序负责将开发板上电后,初始化处理器和外围设备,并加载操作系统。这些源程序包括Bootloader和U-Boot。 2. Linux内核源程序:Linux内核是操作系统的核心,负责管理硬件资源和提供各种系统服务。编写Linux内核源程序可以实现对不同的外设的驱动,例如串口、网卡、存储器等。 3. 设备驱动程序:设备驱动程序是用于控制和管理外围设备的模块。开发者可以编写设备驱动程序来访问和控制各种外设,以实现特定功能。例如,可以编写一个驱动程序来控制LCD显示屏。 4. 用户空间应用程序:用户空间应用程序是直接与用户交互的程序,也是实现具体功能的地方。可以编写各种应用程序,如图形界面应用、网络应用、嵌入式系统应用等。 编写EVMAM437x的源程序需要使用一些开发工具和编程语言。通常使用C/C++来编写驱动程序和应用程序,使用汇编语言来编写启动程序。开发工具方面,可以使用GCC等编译器、Makefile等构建工具进行开发和调试。 在编写源程序时,需要了解AM437x处理器的体系架构和相关的硬件资源。可以参考官方提供的文档和开发板的原理图、用户手册等资料来进行开发。此外,可以借助开源社区和论坛上的资源与其他开发者交流和获取支持。 总的来说,EVMAM437x的源程序编写是一个较为复杂的过程,需要深入理解硬件和软件的运作原理,并具备一定的开发经验和技术。只有通过不断学习和实践,才能编写出高效、稳定的源程序,实现所需的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值