原创 虹科Automation softPLC | 虹科KPA MoDK运行环境与搭建步骤(3)——MoDK例程测试

2022-4-27 14:03 1268 5 5 分类: MCU/ 嵌入式 文集: 虹科干货分享

本系列文章旨在帮助读者对虹科KPA Automation体系进行一个简要的理解,并且能使用MoDK进行快速的上手操作包括:虹科KPA Automation、虹科KPA MoDK简介,虹科KPA MoDK的运行环境搭建与例程测试。本文档搭建虹科KPA MoDK运行环境,是基于Win10,并且是以C/C++为开发语言进行的。


虹科KPA Automation是一个自动化解决方案开发平台,适用于工厂自动化和过程控制应用。经过前文的相关介绍和运行环境的搭建,本部分进行部分官方例程的测试,以下例程分别对应了MoDK可以控制的3类对象:EtherCAT从站(结合MDK)、Vrep机器人仿真平台、Simulation(纯文字仿真)。最后一个例程通过Motion Configuration Utility中的设置,实现了对实际电机以及Vrep中仿真机器人的同时控制。

一、 Move_relative (EtherCAT & CiA402)

该例程的测试效果是控制一个物理电机轴进行3次相关运动,需要我们外接一个EtherCAT从站伺服和电机进行现象观察,笔者的测试环境中,选择的是maxsine的伺服。

例程测试的步骤如下:

①在虹科KPA Studio中进行网络组态

1、打开虹科KPA Studio,进入主界面后,进行maxsine伺服ESI文件的导入

使用3.2.2节提到的操作方法,导入maxsine伺服的ESI文件,如下图所示:

2、开启本地的虹科KPA Master,并在Studio中进行连接

虹科KPA MRT安装完毕后,在桌面可以找到Master启动快捷方式,可用作本地EtherCAT MasterStudio进行连接。

开启后,可以在桌面右下角任务栏里看到Master的小图标,意味着Master已经打开。

3、进行网络组态,并尝试Master和从站伺服的OP

回到EtherCAT Studio,点击界面中间“Connection settings for Master server”下“Host name”或“Port number”的可编辑区域,鼠标双击或点击回车键。若弹出了“Trying to connect”窗口后没有其他消息,并且可以从“Network card”下拉列表中看到并选取本地主机所拥有的网卡,则代表Studio连接本地Master已经成功。

 

maxsine伺服拖动至Master的位置,即实现了从站的挂载,也完成了网络组态。并在“Network card”选项中,选择将作为EtherCAT主站控制伺服电机的网卡。

或者您也可以选择好网卡后,使用网络扫描功能扫描整个网络的组态:

接下来进行OP测试。将物理接线连接好以后,依次点击Studio上方工具栏的“attach”按钮,Master的“state”选项卡,“Operational”按钮,进行主站的OP测试。

正常情况下,可以看到主站和伺服的状态机均切换成了OP状态,代表本地Master运行没有问题:

②在Motion Configuration Utility中将轴与伺服电机进行对接,并导出配置文件

接下来进行轴的配置,并导出网络组态与轴配置文件,首先在Studio中打开插件“Motion Configuration Utility”。

接下来如下操作,进行电机轴与伺服的绑定:

为了使现象更加明显,我们可以将参数页面下的位置、速度的标称值改大一点:

Motion Configuration Utility提供相当丰富的参数设置,此文档下的初步测试就不作进一步的展开了。请您关注我们后续发布的文档。

接下来进行文件的导出,如下操作:

选择导出路径,点击OK按钮后,即可在相应文件夹下面观察到导出的网络组态文件和轴配置文件:

将这两个文件拷贝至工程文件夹下面即可。

④修改程序源代码的部分参数。

例程通过读取网络配置文件和轴配置文件进行MoDK运行环境的初始化,其读取的文件名是通过宏进行设定的,要么我们进行文件名的修改去适应宏,或者是修改宏来适应文件名,或是修改代码中文件读取API的文件名参数。由于Motion Configuration Utility的文件导出功能并不支持导出文件名的修改,而修改源码又略显麻烦,因此笔者推荐修改宏来适应文件名的方法。

如下图所示,在move_relative.c中进行文件名宏的重定义,以适配导出的文件名:

另外,我们还需要修改ecatm虹科KPA15_helper.c中的选用网卡编号,使得本地Master能够通过正确的网卡进行从站伺服的控制。首先先按下“ctrl+F5”,运行一遍程序观察情况:

可以观察到由于没有选择正确的网卡,本地Master停留在了初始化阶段。上文中,笔者在Studio中设置的网卡为USB2.0 to Fast Ethernet Adapter,在控制台界面中也可以看到其编号为2。由此我们需要在ecatm虹科KPA15_helper.c更改所用的网卡编号:

至此所有配置都已完成。

⑤观察控制现象。

点击“ctrl+F5”,即可运行程序观察现象,可观察到电机被控制而运转起来:

二、 Move_path (Vrep)

这个例程不仅体现了虹科KPA MoDK的另一种被控对象(Vrep),并且也体现了另一种轴实例的初始化方式——源代码配置,即通过直接在程序中添加源码以到达修改轴配置参数的目的。相比上一个例程中的“界面配置+源码导入”的环境初始化方式,这种配置方式无疑会更加繁琐,而且会增加源代码的代码量。但是在此部分代码完成后,再次修改轴配置参数的步骤就十分简单了,直接在代码中修改相应参数即可,而另一种环境初始化方式则仍需要重新配置生成ini文件,各有千秋。

源代码配置轴初始化参数的方式更适合需要频繁变更初始化环境的情况。

例程测试的步骤如下:

①在VREP中打开官方提供的三轴线性机器人模型

MoDK提供了一个Vrep三轴线性机器人模型,在开发包的samples文件夹下,安装Vrep后,双击即可在Vrep中打开模型:

②在代码中修改VREP的端口参数

MoDK提供的Vrep模型使用3.04.00版本的Vrep开发,版本较老,而目前在官网上下载的Vrep版本已经到达了3.5.0。不过这并不需要用户进行太多的适配操作,新版本的vrep会向下兼容旧版本vrep的模型,不过vrep对外通信接口的端口号发生了变化,由19998变成了19997

而例程中的端口号设置仍然是19998,所以需要手动更改成19997,该代码位于程序71行处:

//以下几步在此例程中并不需要进行

1、在Motion Configuration Utility中将轴与VREP机器人模型进行对接

2、导出轴配置文件(ini格式)

3、使用MoDK API中的ini文件读取函数进行参数读取和初始化

//

③观察控制现象

修改完成后,即可进行例程测试,点击ctrl+F5,切换至VREP窗口,即可观察到机器人末端按照预定的轨迹点进行运动:

您也可以使用自己的算法生成所需要的轨迹在此demo中进行测试,如笔者的简易字符绘图:

三、 Simulation_move_absolute (Simulation)

①观察控制现象

此例程为纯文字仿真,不需要进行额外的操作。MoDK虹科KPA运行环境内创建了虚拟轴句柄,simulation即对这些虚拟轴句柄进行虚拟化运动,反映在读取的各轴位置、速度值发生变化。

切换启动项目,按下ctrl+F5,即可开始仿真。

可以从控制台界面获取到轴的位置、速度等数据。

四、 Move_complex_drawing (EtherCAT & CiA402 + Vrep)

对于可控制的三种被控对象,MoDK可以同时控制其中任意两种,此部分选取EtherCAT伺服电机+Vrep机器人模型这两种比较直观的被控对象进行测试。测试控制的对象是三个maxsineEtherCAT伺服电机,加上Vrep中的三轴线性机器人模型。

例程测试的步骤如下:

①在虹科KPA Studio中进行网络组态

此部分操作与4.1节的操作基本相同。

打开虹科KPA Master后,打开虹科KPA Studio,在Studio内连接上Master后,进行网络组态的扫描:

②打开Vrep中的三轴线性机器人模型

留意此处线性机器人模型的名称,后续会使用到。并且注意到,机器人的axis1使用y轴坐标表示,axis2使用x轴坐标表示。而代码的逻辑是按照xy的顺序进行扫描的。因此在初始化配置的时候需要留意轴的编号指定,即将编号1x轴)指定到axis2,编号2y轴)指定到axis1

②在Motion Configuration Utility中将轴与伺服电机进行对接

打开Motion Configuration Utility,进行如下操作,可以为一个电机轴绑定伺服:

注意需要在“Secondary profile”中选择Vrep,达到同时控制EtherCAT从站和Vrep机器人模型的效果。

③修改V-REP参数

接下来在此处进行Vrep参数的配置,在V-REP选项卡中将参数修改成如下图所示:

Port端口即Vrep的通信端口,上文提到新版本的通信端口为19997,因此此处需要修改。

Joint number即机器人模型的轴编号,我们为第一个电机轴编号为2

Use model feedback即使用反馈,机器人模型的数据可以反馈至虹科KPA motion的运行环境中来。

Model IDVrep中的机器人模型名,注意大小写需一一对应。

Scaling factor即标称值,代表机器人模型的尺寸与虹科KPA motion运行环境中轴的比例系数。举例来讲, 同样的MoDK控制代码(如轴1向前移动50个单位),这个比例系数越大,则机器人模型运动的距离就越大。我们此处设置为0,具体原因将在后文解释。

可能您注意到了,电机轴的命名为Axis_XX=0,1,2…),而Vrep中机器人模型的轴命名为axisXX=1,2,3…),这两者是否需要一一对应?

答案是不需要,Motion Configuration Utility中对于轴的命名是供虹科KPA motion运行环境内部所使用的,并不需要与外界的对象进行对应。但Model IDJoint number虹科KPA motion运行环境索引Vrep中机器人模型的轴的必要条件,因此需要与机器人模型一一对应。

④修改通用参数,克隆电机轴

打开parameter页面,将红框处修改成如下图的数值,使得EtherCAT伺服电机的运转现象明显一点。需注意,此处的Scaling factor数值,同样会影响到Vrep中机器人模型的运转,并且由于实际伺服电机的编码器数值一般来说都是以万为基本单位的。因此会陷入到这样一种怪圈:此处Scaling factor数值设置得大一点,Vrep中机器人模型的运动幅度超过了能看到现象的限定值;设置得小一点,EtherCAT伺服电机的运转现象又不明显。因此需要将V-REP页面下的Scaling factor0,虽然逻辑上看上去有硬伤(除以零),但是这样子做实际测试出来反而是最合适的。

此处为止我们已经完成了第一个电机轴的参数配置,接下来我们克隆电机轴,然后只需要为克隆出来的电机轴绑定伺服、设定Vrep机器人模型的轴编号、修改Vrep端口号即可。

注意Axis_1Joint number1Axis_2Joint number3

⑤导出文件,修改源代码部分参数。

此部分操作同4.1节,点击“导出按钮”导出文件至工程文件夹:

修改源代码的文件名宏,网卡编号宏:

运行过程中可能还会提示“axes_group_ref使用未初始化的内存”的错误,所以我们还需要在代码的271行处对其进行初始化操作,置0即可。

至此所有配置步骤已进行完毕。

⑥观察控制现象。

按下“ctrl+F5”,即可看到控制现象:Vrep中机器人模型进行圆周运动,EtherCAT伺服也在带动电机进行运动:

4.5 小结

观察MoDK的例程代码,可以发现其程序编写遵循一个比较规整的三步走模式:声明变量→创建实例→函数调用,轴控制循环则采用状态机的方式实现。但或多或少这种PLC的编程方式在计算机语言编程上有点水土不服,虽然用起来的思路比较明确,但是代码量看起来会相当庞大,可维护性相对较差。如上一节的最后一个测试例程,其中近400行代码都用作初始化配置,主循环逻辑其实才100行出头。若是想要进行轴运动的扩展,又必须在初始化代码里面进行变量声明与创建实例,再于主循环中进行函数调用,代码量将极其庞大。

因而MoDK最好的使用方式,仍是结合Straton使用PLC语言进行开发。Straton拥有独立的变量编辑器,并且PLC功能块创建与调用本身就是一体化的,可以极大减少开发的工作量,程序的维护也变得直观与简单起来。

作者: 虹科工业智能互联, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3988237.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条