热度 5
2022-4-27 14:03
1279 次阅读|
0 个评论
本系列文章旨在帮助读者 对虹科 KPA Automation体系进行一个简要的理解,并且能使用 MoDK 进行快速的上手操作 , 包括: 虹科 K PA A utomation、 虹科 K PA M oDK 简介, 虹科 K PA MoDK 的运行环境搭建与例程测试。本文档搭建 的 虹科 K PA M oDK 运行环境,是基于Win10,并且是以C /C++ 为开发语言进行的。 虹科 KPA A utomation是一个自动化解决方案开发平台,适用于工厂自动化和过程控制应用。 经过前文的相关介绍和运行环境的搭建, 本部分进行部分官方例程的测试,以下例程分别对应了 MoDK 可以控制的 3 类对象: Ether CAT 从站(结合 M DK )、 Vrep 机器人仿真平台、 Simulation (纯文字仿真)。最后一个例程通过 Motion Configuration Utility 中的设置,实现了对实际电机以及 Vrep 中仿真机器人的同时控制。 一、 M ove _ relative ( E therCAT & C iA 402) 该例程的测试效果是控制一个物理电机轴进行 3 次相关运动,需要我们外接一个 Ether CAT 从站伺服和电机进行现象观察,笔者的测试环境中,选择的是 maxsine 的伺服。 例程测试的步骤如下: ①在 虹科 KPA Studio 中进行网络组态 1 、打开 虹科 KPA Studio ,进入主界面后,进行 maxsine 伺服 ESI 文件的导入 使用 3.2.2 节提到的操作方法,导入 maxsine 伺服的 E SI 文件,如下图所示: 2 、开启本地的 虹科 KPA Master ,并在 Studio 中进行连接 虹科 KPA MRT 安装完毕后,在桌面可以找到 Master 启动快捷方式,可用作本地 E therCAT Master 与 Studio 进行连接。 开启后,可以在桌面右下角任务栏里看到 Master 的小图标,意味着 Master 已经打开。 3 、进行网络组态,并尝试 Master 和从站伺服的 O P 回到 E therCAT Studio ,点击界面中间“ Connection settings for Master server ”下“ H ost name ”或“ P ort number ”的可编辑区域,鼠标双击或点击回车键。若弹出了“ Trying to connect ”窗口后没有其他消息,并且可以从“ N etwork card ”下拉列表中看到并选取本地主机所拥有的网卡,则代表 Studio 连接本地 Master 已经成功。 将 maxsine 伺服拖动至 Master 的位置,即实现了从站的挂载,也完成了网络组态。并在“ Network card ”选项中,选择将作为 Ether CAT 主站控制伺服电机的网卡。 或者您也可以选择好网卡后,使用网络扫描功能扫描整个网络的组态: 接下来进行 O P 测试。将物理接线连接好以后,依次点击 Studio 上方工具栏的“ attach ”按钮, Master 的“ state ”选项卡,“ Operational ”按钮,进行主站的 O P 测试。 正常情况下,可以看到主站和伺服的状态机均切换成了 O P 状态,代表本地 Master 运行没有问题: ②在 Motion Configuration Utility 中将轴与伺服电机进行对接,并导出配置文件 接下来进行轴的配置,并导出网络组态与轴配置文件,首先在 Studio 中打开插件“ Motion Configuration Utility ”。 接下来如下操作,进行电机轴与伺服的绑定: 为了使现象更加明显,我们可以将参数页面下的位置、速度的标称值改大一点: Motion Configuration Utility 提供相当丰富的参数设置,此文档下的初步测试就不作进一步的展开了。请您关注我们后续发布的文档。 接下来进行文件的导出,如下操作: 选择导出路径,点击 O K 按钮后,即可在相应文件夹下面观察到导出的网络组态文件和轴配置文件: 将这两个文件拷贝至工程文件夹下面即可。 ④修改程序源代码的部分参数。 例程通过读取网络配置文件和轴配置文件进行 MoDK 运行环境的初始化,其读取的文件名是通过宏进行设定的,要么我们进行文件名的修改去适应宏,或者是修改宏来适应文件名,或是修改代码中文件读取 A PI 的文件名参数。由于 Motion Configuration Utility 的文件导出功能并不支持导出文件名的修改,而修改源码又略显麻烦,因此笔者推荐修改宏来适应文件名的方法。 如下图所示,在 move _ relative . c 中进行文件名宏的重定义,以适配导出的文件名: 另外,我们还需要修改 ecatm 虹科 KPA 15_helper.c 中的选用网卡编号,使得本地 Master 能够通过正确的网卡进行从站伺服的控制。首先先按下“ ctrl +F5 ”,运行一遍程序观察情况: 可以观察到由于没有选择正确的网卡,本地 Master 停留在了初始化阶段。上文中,笔者在 Studio 中设置的网卡为 U SB2.0 to F ast E thernet A dapter ,在控制台界面中也可以看到其编号为 2 。由此我们需要在 ecatm 虹科 KPA 15_helper.c 更改所用的网卡编号: 至此所有配置都已完成。 ⑤观察控制现象。 点击“ ctrl+F5 ”,即可运行程序观察现象,可观察到电机被控制而运转起来: 二、 M ove _path ( Vrep ) 这个例程不仅体现了 虹科 KPA M oDK 的另一种被控对象( Vrep ),并且也体现了另一种轴实例的初始化方式——源代码配置,即通过直接在程序中添加源码以到达修改轴配置参数的目的。相比上一个例程中的“界面配置 + 源码导入”的环境初始化方式,这种配置方式无疑会更加繁琐,而且会增加源代码的代码量。但是在此部分代码完成后,再次修改轴配置参数的步骤就十分简单了,直接在代码中修改相应参数即可,而另一种环境初始化方式则仍需要重新配置生成 ini 文件,各有千秋。 源代码配置轴初始化参数的方式更适合需要频繁变更初始化环境的情况。 例程测试的步骤如下: ①在 V REP 中打开官方提供的三轴线性机器人模型 M oDK 提供了一个 V rep 三轴线性机器人模型,在开发包的 samples 文件夹下,安装 V rep 后,双击即可在 V rep 中打开模型 : ②在代码中修改 V REP 的端口参数 M oDK 提供的 V rep 模型使用 3.04.00 版本的 V rep 开发,版本较老,而目前在官网上下载的 Vrep 版本已经到达了 3.5.0 。不过这并不需要用户进行太多的适配操作,新版本的 vrep 会向下兼容旧版本 vrep 的模型,不过 vrep 对外通信接口的端口号发生了变化,由 19998 变成了 19997 。 而例程中的端口号设置仍然是 19998 ,所以需要手动更改成 19997 ,该代码位于程序 71 行处: // 以下几步在此例程中并不需要进行 1 、在 Motion Configuration Utility 中将轴与 V REP 机器人模型进行对接 2 、导出轴配置文件( ini 格式) 3 、使用 MoDK API 中的 ini 文件读取函数进行参数读取和初始化 // ③观察控制现象 修改完成后,即可进行例程测试,点击 ctrl +F5 ,切换至 V REP 窗口,即可观察到机器人末端按照预定的轨迹点进行运动: 您也可以使用自己的算法生成所需要的轨迹在此 demo 中进行测试,如笔者的简易字符绘图: 三、 Simulation_move_absolute (Simulation) ①观察控制现象 此例程为纯文字仿真,不需要进行额外的操作。 MoDK 在 虹科 KPA 运行环境内创建了虚拟轴句柄, simulation 即对这些虚拟轴句柄进行虚拟化运动,反映在读取的各轴位置、速度值发生变化。 切换启动项目,按下 ctrl+ F5 ,即可开始仿真。 可以从控制台界面获取到轴的位置、速度等数据。 四、 M ove _ complex _drawing ( E therCAT & C iA 402 + Vrep ) 对于可控制的三种被控对象, MoDK 可以同时控制其中任意两种,此部分选取 Ether C AT 伺服电机 + V rep 机器人模型这两种比较直观的被控对象进行测试。测试控制的对象是三个 maxsine 的 E ther CAT 伺服电机,加上 Vrep 中的三轴线性机器人模型。 例程测试的步骤如下: ①在 虹科 KPA Studio 中进行网络组态 此部分操作与 4 .1 节的操作基本相同。 打开 虹科 KPA Master 后,打开 虹科 KPA Studio ,在 Studio 内连接上 Master 后,进行网络组态的扫描: ②打开 V rep 中的三轴线性机器人模型 留意此处线性机器人模型的名称,后续会使用到。并且注意到,机器人的 axis1 使用 y 轴坐标表示, axis2 使用 x 轴坐标表示。而代码的逻辑是按照 x 、 y 的顺序进行扫描的。因此在初始化配置的时候需要留意轴的编号指定,即将编号 1 ( x 轴)指定到 axis2 ,编号 2 ( y 轴)指定到 axis1 。 ②在 Motion Configuration Utility 中将轴与伺服电机进行对接 打开 M otion Configuration Utility ,进行如下操作,可以为一个电机轴绑定伺服: 注意需要在“ Secondary profile ”中选择 Vrep ,达到同时控制 E ther CAT 从站和 V rep 机器人模型的效果。 ③修改 V -REP 参数 接下来在此处进行 Vrep 参数的配置,在 V -REP 选项卡中将参数修改成如下图所示: P ort 端口即 Vrep 的通信端口,上文提到新版本的通信端口为 19997 ,因此此处需要修改。 J oint number 即机器人模型的轴编号,我们为第一个电机轴编号为 2 。 U se model feedback 即使用反馈,机器人模型的数据可以反馈至 虹科 KPA motion 的运行环境中来。 M odel ID 即 Vrep 中的机器人模型名,注意大小写需一一对应。 S caling factor 即标称值,代表机器人模型的尺寸与 虹科 KPA motion 运行环境中轴的比例系数。举例来讲, 同样的 MoDK 控制代码(如轴 1 向前移动 50 个单位),这个比例系数越大,则机器人模型运动的距离就越大。我们此处设置为 0 ,具体原因将在后文解释。 可能您注意到了,电机轴的命名为 Axis _X ( X =0,1,2… ),而 Vrep 中机器人模型的轴命名为 axis X ( X=1, 2,3… ),这两者是否需要一一对应? 答案是不需要, M otion Configuration Utility 中对于轴的命名是供 虹科 KPA motion 运行环境内部所使用的,并不需要与外界的对象进行对应。但 M odel ID 、 J oint number 是 虹科 KPA motion 运行环境索引 Vrep 中机器人模型的轴的必要条件,因此需要与机器人模型一一对应。 ④修改通用参数,克隆电机轴 打开 parameter 页面,将红框处修改成如下图的数值,使得 EtherCAT 伺服电机的运转现象明显一点。需注意,此处的 Scaling factor 数值,同样会影响到 Vrep 中机器人模型的运转,并且由于实际伺服电机的编码器数值一般来说都是以万为基本单位的。因此会陷入到这样一种怪圈:此处 Scaling factor 数值设置得大一点, Vrep 中机器人模型的运动幅度超过了能看到现象的限定值;设置得小一点, EtherCAT 伺服电机的运转现象又不明显。因此需要将 V -REP 页面下的 Scaling factor 置 0 ,虽然逻辑上看上去有硬伤(除以零),但是这样子做实际测试出来反而是最合适的。 此处为止我们已经完成了第一个电机轴的参数配置,接下来我们克隆电机轴,然后只需要为克隆出来的电机轴绑定伺服、设定 Vrep 机器人模型的轴编号、修改 V rep 端口号即可。 注意 A xis _1 的 Joint number 为 1 , Axis _ 2 的 Joint number 为 3 。 ⑤导出文件,修改源代码部分参数。 此部分操作同 4 .1 节,点击“导出按钮”导出文件至工程文件夹: 修改源代码的文件名宏,网卡编号宏: 运行过程中可能还会提示“ axes _group_ref 使用未初始化的内存”的错误,所以我们还需要在代码的 271 行处对其进行初始化操作,置 0 即可。 至此所有配置步骤已进行完毕。 ⑥观察控制现象。 按下“ ctrl+ F5 ”,即可看到控制现象: V rep 中机器人模型进行圆周运动, EtherCAT 伺服也在带动电机进行运动: 4 .5 小结 观察 MoDK 的例程代码,可以发现其程序编写遵循一个比较规整的三步走模式:声明变量→创建实例→函数调用, 轴控制 循环则采用状态机的方式实现。但或多或少这种 PLC 的编程方式在计算机语言编程上有点水土不服,虽然用起来的思路比较明确,但是代码量看起来会相当庞大,可维护性相对较差。如上一节的最后一个测试例程,其中近 400 行代码都用作初始化配置,主循环逻辑其实才 100 行出头。若是想要进行轴运动的扩展,又必须在初始化代码里面进行变量声明与创建实例,再于主循环中进行函数调用,代码量将极其庞大。 因而 MoDK 最好的使用方式,仍是结合 Straton 使用 PLC 语言进行开发。 Straton 拥有独立的变量编辑器,并且 P LC 功能 块创建 与调用本身就是一体化的,可以极大减少开发的工作量,程序的维护也变得直观与简单起来。