自定义运动学
见 PLCopenSingle2.project
示例项目和 CustomKinematics.library
安装目录下的库 CODESYS 在下面 ..\CODESYS SoftMotion\Examples.
本示例介绍如何创建具有自定义运动学变换 (Gantry3C) 的库以及如何在项目中使用该库来控制机器人。
'Gantry3C' 运动学变换由 3 个带有工具头的线性轴(X、Y 和 Z)组成。工具头由一个额外的轴组成,该轴承载一个已安装的工具。刀头可绕Z轴转动。

1.新建一个库项目
创建一个新项目 空库 模板。

2. 添加库管理器。
将库管理器添加到 点检装置 视图。添加 SM3_Transformation
, SM3_Math
, 和 SM3_Error
库到库管理器。
3. 创建 Gantry3C 功能块。
该功能块实现了接口 MC_KIN_REF_SM3
和 ISMKinematicsWithInfo2
从图书馆 SM3_Transformation
.您可以定义一个偏移量作为每个轴的输入。该偏移量在前向变换前减去,在逆向变换后加上。

示例 Gantry3C
具有两个解耦运动学和 KinCoupled
:
FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled
提供功能块 Custom_Kin_Gantry3
和 Custom_Kin_CAxis
作为功能块的输入 Kin_Coupled
在初始化期间。现在 Custom_Kin_Gantry3C
成为结合位置和方向运动学的耦合运动学。
4. 实现 MC_KIN_REF_SM3 接口和 NumAxes4 属性的方法。
AxesToCartesian
:正向运动学:根据轴值计算位置和方向。
CartesianToAxes
:反向运动学:根据位置和方向计算轴值。
NumAxes
: 运动系统的轴数



5、实现ISMKinematicsWithInfo2和ISMKinematicsWithInfo接口的方法。
GetAxisProperties
: 属性,例如轴的类型。可以定义每个轴的限制。
GetKinematicsName
: 运动学名称
IsSingularity
: 可以忽略此运动学


6. 指定项目信息。

7. 检查库中是否有编译器错误。
要检查库,请单击 建造 → 检查所有池对象。
8. 在轴组配置器中创建描述。
当 POU 具有属性时 sm_kin_libdoc
,功能块中指定的注释在轴组配置器中用作运动学的描述。为此使用重组的文本格式。



包含属性
sm_kin_libdoc
如上图所示。包括所需的项目属性 文档格式 和 文档语言 (在项目信息对话框中)与库文档相关。
结果:
确保安装目录 CODESYS 包含
libdoc.exe
可执行文件(目录:...\DocScripting\3.5.xx.0
\)。从 0.12.5 或更低版本下载 32 位 wkhtmltox 转换器 https://wkhtmltopdf.org/downloads.html.提取
wkhtmltox.dll
文件并将其复制到...\DocScripting\3.5.xx.0\bin
在里面 CODESYS 安装目录。重要
自从
wkhtmltox.dll
0.12.6 及更高版本默认不再支持图像,您必须使用 0.12.5 或更低版本。创建系统变量
LIBDOC_CODESYS
在 Windows 中。将值设置为文件路径CODESYS.exe
.确保在双引号中指定路径名和配置文件名。结果:
保存、关闭并重新打开库项目。
点击
.编译后的库将安装到使用此运动学的项目中。
在项目中使用库 (CustomKinematics_Implementation.project)
该项目演示了如何通过慢跑或命令运动来使用和控制上一节中创建的运动学。
创建一个 CODESYS 标准项目与 CODESYS SoftMotion Win 控制器。
打开库管理器并安装库
CustomKinematics.compiled-library
(在上一节中创建)包含运动学 Gantry3C。将库添加到库管理器。添加轴组对象并选择 KinCustom.Gantry3C 运动学。
结果:
将 4 个虚拟轴添加到 SoftMotion 通用轴池 设备树中的轴池。 (DriveX、Y、Z 和 C)
打开轴组配置器。在里面 映射到轴 部分,将轴映射到它们各自的字段。
结果:
该程序
Prg_Visu
是控制轴组的主程序。当应用程序启动时,Prg_Visu
启动轴组并启用它。此外,它调用所有必要的功能块来控制轴组(点动、线性和 PTP 运动)。所有这些运动都可以通过附加的可视化进行控制。结果:
功能块:
Jog
:此 FB 结合了轴空间和笛卡尔空间中的点动。它使用两个实例SMC_GroupJog2
。一个用于轴空间,另一个用于笛卡尔空间。此功能块可与可视化模板一起使用 V_RobotPosition_axes 和 V_机器人位置_cart_Jog 在笛卡尔和轴空间中点动任何运动。结果:
FB SMC_TRAFOF_Gantry3C
:此功能块将 Gantry3C 运动学的输入轴值转换为其各自的 TCP 值。此外,轴值已标准化,以便它们可以与可视化模板一起使用TRAFOF_Gantry3C_YZ
以可视化运动学的运动。结果:
编译并运行应用程序。打开可视化。您可以在轴空间和笛卡尔空间中点动机器人。还有可视化模板来命令线性或 PTP 运动。
结果:
提示
此处描述的示例讨论了公共功能块中的定位轴和定向轴。许多运动学可以包括两种分离的部分运动学:一种定位运动学(三角架、龙门架等)和一种定向运动学(C 轴、Wrist2、Wrist3 等工具)。两个运动系统在“法兰点”,即定位运动系统的 TCP 处相互连接。定向运动学的特点在于它能够计算从法兰点到耦合运动学 TCP 的矢量。计算仅使用该 TCP 的方向(意味着它独立于定位运动学或独立于法兰点的方向)。反过来,定位运动必须能够仅从法兰点的位置确定其轴位置。它不能取决于法兰点的方向。
在这种情况下,你可以使用如下接口 ISMPositionKinematics
或者 ISMOrientationKinematics
。为了实现这些接口,定义一个功能块来实现 ISMPositionKinematics
以及另一个要实现的功能块 ISMOrientationKinematics
.最后定义一个扩展功能块的功能块 Kin_Coupled
(从 SM3_Transformation
) 以先前定义的功能块作为输入。
有关更多信息,请参阅: 创建自定义运动学