目 录
1 Softmotion 概念和组件简介 .................................................................................................... 1
2 SoftMotion 驱动器接口 ........................................................................................................... 3
2.1 SoftMotion 的 PLC 配置.......................................................................................................................... 3
2.2 SM_DriveBasic.lib 和自动代码生成 ....................................................................................................... 5
2.2.1 SM_DriveBasic.lib 中的数学辅助模块 ............................................................................................ 6
2.2.2 轴组辅助模块 ..................................................................................................................................... 6
2.2.3 虚拟时间轴 ......................................................................................................................................... 6
2.2.4 数字硬件输入控制的参考点运动 ..................................................................................................... 6
2.2.5 诊断模块 ............................................................................................................................................. 8
2.2.6 可视化模板 ......................................................................................................................................... 8
2.3 AXIS_REF 结构体中的变量 .................................................................................................................... 9
3 CoDeSys 中的 CNC-编辑器 ................................................................................................... 14
3.1 简介 .......................................................................................................................................................... 14
3.2 CNC-语言 DIN66025 的支持和扩展元素 ............................................................................................. 14
3.3 CNC 程序的启动,插入和管理 ............................................................................................................. 16
3.4 CNC 文本编辑器 .................................................................................................................................... 19
3.5 CNC 图形编辑器 .................................................................................................................................... 19
3.6 CNC-编辑器中命令和选项 .................................................................................................................. 20
3.7 CNC-编辑器中的结构自动生成 .......................................................................................................... 22
4 CAM-编辑器 ............................................................................................................................ 24
4.1 简介 .......................................................................................................................................................... 24
4.2 SoftMotion 中 CAM 的定义 .................................................................................................................. 24
4.3 启动 CAM-编辑器并插入一个新的 CAM ........................................................................................... 24
4.4 编辑 CAM ............................................................................................................................................... 26
4.4.1 编辑器的总体设置 ........................................................................................................................... 26
4.4.2 编辑一个特殊的 CAM 元素的属性 ............................................................................................... 27
4.4.3 “Extras” 和 “Insert” 菜单的命令 ............................................................................................... 28
4.5 CAMs 的结构自动生成 .......................................................................................................................... 30
5 SM_CNC.lib 库 ........................................................................................................................ 31
5.1 简介 .......................................................................................................................................................... 31
5.2 模块 .......................................................................................................................................................... 31
5.3 轨迹旋转和平移的辅助模块 .................................................................................................................. 41
5.4 通过全局变量进行设置 .......................................................................................................................... 41
5.5 SM_CNC.lib 中的结构 ........................................................................................................................... 42
6 SM_PLCopen.lib 库 ................................................................................................................ 47
6.1 简介 .......................................................................................................................................................... 47
6.2 PLCopen-说明书“运动控制的功能块,1.0 版” .................................................................................. 47
6.3 单轴运动控制模块 .................................................................................................................................. 47
CoDeSys2.3 SoftMotion
i
6.4 同步运动控制模块 .................................................................................................................................. 58
6.5 SM_PLCopen.lib 的附加元素 ............................................................................................................... 62
7 SM_CNCDiagnostic.lib 库 ..................................................................................................... 64
7.1 用于 SMC_CNC_REF 数据分析的功能块 .......................................................................................... 64
7.1.1 SMC_ShowCNCREF 功能块 ......................................................................................................... 64
7.2 用于 SMC_CNC_REF 数据分析的功能块 .......................................................................................... 64
7.2.1 SMC_ShowQueue 功能块 ............................................................................................................... 64
8 SM_Trafo.lib 库 ....................................................................................................................... 65
8.1 简介 .......................................................................................................................................................... 65
8.2 ControlAxis 功能块 ................................................................................................................................ 65
8.3 变换功能块 .............................................................................................................................................. 66
8.3.1 龙门系统 ........................................................................................................................................... 66
8.3.2 2 关节 Scara 系统 ............................................................................................................................ 69
8.3.3 关节 Scara 系统 ............................................................................................................................... 70
9 SM_Error.lib 库....................................................................................................................... 73
9.1 功能块 ...................................................................................................................................................... 73
9.1.1 SMC_ErrorString ........................................................................................................................... 73
9.2 SMC_Error 枚举型变量 ........................................................................................................................ 73
10 SM_FileFBs.lib 库 ................................................................................................................. 77
10.1 简介 ........................................................................................................................................................ 77
10.2 CNC 功能块 .......................................................................................................................................... 77
10.3 CAM 功能块 ......................................................................................................................................... 79
11 编程实例 ................................................................................................................................. 81
11.1 简介 ........................................................................................................................................................ 81
11.2 实例:驱动器接口:为驱动器创建 PLC 配置 .................................................................................. 81
11.3 实例:单轴运动控制 ............................................................................................................................ 84
11.4 实例:在 CFC 中用可视化模板来控制单轴运动 .............................................................................. 85
11.5 实例:通过 CAM 和一个虚拟时间轴来控制驱动器 ........................................................................ 87
11.6 实例:改变 CAMs ................................................................................................................................ 89
11.7 实例:通过 CNC 编辑器来控制驱动器 ............................................................................................. 89
11.7.1 CNC 实例 1:直接创建 OutQueue ............................................................................................. 89
11.7.2 CNC 实例 2:用变量进行在线解码 ........................................................................................... 92
11.7.3 CNC 实例 3:在线轨迹预处理 ................................................................................................... 94
11.8 动态 SoftMotion 编程 ........................................................................................................................... 95
ii CoDeSys2.3 SoftMotion
1 Softmotion 概念和组件简介
在CoDeSys开发环境下,SoftMotion可以实现多种运动——简单的单轴运动、CAMs和复杂的多维运动。
在某些独特的应用中,除了单独的运动功能外,顺序和过程控制或辅助功能也都占了相当重要的比重。
使用Softmontion来实现这些应用是比较理想的。
SoftMotion是一种可以在实时环境下运行的工具包,在对需求的运动的细节不是十分清楚的情况下也可以
起作用。
PLC程序控制着所有程序逻辑,只有纯运动信息才会被库函数处理。
SoftMotion 能被划分成下列组件:
驱动器接口(Drive Interface)
这个组件负责与驱动器的通信。它包括Drive_Basic.lib库、驱动器和总线系统库与驱动程序。
在CoDeSys的配置编辑器(Configuration editor)中,开发人员指定驱动器结构和硬件配置。
基于CoDeSys使用驱动器接口(Drive Interface)库中的函数,可以创建IEC数据结构,它抽象地代表了驱
动器。不需要IEC程序员附加工作,驱动器接口将自动地与驱动器进行通信,并照顾到驱动器数据结构和
传输已更新数据的实时性。在这种结构的基础上,驱动器控制IEC程序在SoftMotion库
(SM_CNC.lib,SM_PLCOpen.lib)的标准模块或IEC程序员创建的特殊模块的帮助下运行。
目标值总是循环设置的,这就是说在每个IEC任务循环中,将计算出目标值(位置,速度,加速度等),
并将他们从驱动器接口传到驱动器中。这里没有提供像这样“命令”驱动器的方法(比如:设置一个目标
位置,然后驱动器就能主动运动,并且在成功指令执行后发出一个消息)。原因是:在这种情况下,多
轴的协同运动是不可能的,并且在执行指令时,中央控制器对驱动器不起作用。
CNC编辑器(CNC-Editor)
CoDeSys2.3 SoftMotion 1
CoDeSys中的CNC编辑器允许对多自由度的运动进行编程,通过与驱动器硬件通信的驱动器接口来
调动和控制。编辑器与CNC语言DIN66025紧密相关,它可同时工作在一个图形和一个文本编辑器中。最
多可以实现9维运动,但只有二维是非线性插补的。
因此在二维中,直线,圆周,抛物线,椭圆和样条曲线可被编程,其他方向则只是线性插补。对于
每条设计的轨迹,CoDeSys自动创建一个数据结构,这在IEC程序中是可用的。
CAM编辑器(CAM-Editor)
CAM编辑器是集成在CoDeSys的编程接口中的可视化程序,它服务于控制多轴驱动器的CAMs。
CodeSys隐式地为每个程序控制的CAM创建一个全局数据结构。这个结构可以被IEC程序使用。
CNC库(CNC-Libraries)
在SM_CNC.lib,SM_CNCDiagnostic.lib和SM_Trafo.lib中提供的模块,用于实现,显示和执行在CNC
编辑器中编程了的运动。它是在运行时间下创建的。
PLCopen库(PLCopen-Library)
PLCopen运动控制库”SM_PLCopem.lib” 包括其他的模块,用于帮助编程和轻松实现单轴和两轴的同
步运动运动控制。除了用于状态检查、确定参数和常规操作的库元素外,库中还有一些功能块可以实现
用不同的方法使一根轴按指定的速度和加速度移动。如果两根轴需要同步,那么根据命令,以一根轴为
主动轴(master),同时控制另一根从动轴(slave)。这个命令可以是一个在CAM编辑器中设计好的CAM,
它可以使用可用的POUs把从动轴连接到主动轴上。另外,还有一些功能模块,实现了电子齿轮或相位转
换。
文件服务库(File Service Library)
SM_FileFBs.lib库基于系统库sysLibFile.lib,因此只能用于支持这个库的目标系统。
错误库(Error Library)
SM_Error.lib库可以输出所有由其他库模块产生的错误。它还可以用于通过数字错误变量来产生德文
和英文错误信息。
小提示:
除了一些直接服务于硬件的驱动器接口的驱动程序以外,所有SoftMotion的运行时间组件都是用
IEC61131-3语言编写的。因此最大限度的达到了平台无关性。
建议学习相关实例以迅速了解SoftMotin组件。
2 CoDeSys2.3 SoftMotion
2 SoftMotion 驱动器接口
Softmotion 驱动器接口是一个标准化的接口,它允许在IEC程序中包含驱动器硬件的抽象镜像,并能
配置和为其分配地址。它照顾到控制驱动器硬件所必要的运动数据的更新和传输。它不仅仅允许驱动器
简单的改变和IEC程序的重用,还可以使驱动器的连接变得简单、方便。
驱动器接口使用以下组件:
CoDeSys PLC配置:需要控制的驱动器的结构要由编程人员在一个相应的配置文件中来描述,
并设置合适的参数。
内部库Drive_Basic.lib提供IEC数据结构和全局变量,来代表已在PLC配置器中配置好的驱动器、
轴组和总线接口。
由驱动器制造商提供的硬件和总线系统专用库Drive.lib (例如
CANDrive.lib 或 SercosDrive.lib),提供了让数据结构和硬件进行数据
交换的功能。
隐式生成代码
循环调用
2.1 SoftMotion的PLC配置
(参见第11章的编程实例)
CoDeSys PLC配置一般提供下列元素来描述驱动器硬件的结构:
BusInterface:带有域总线的板卡,可用于驱动器寻址。
Axisgroup: 一个实际连接的驱动器组
Drive:
驱动器
根据使用的配置文件和驱动器程序,某些参数会被忽略,在这种情况下,在这里的其他参数会以“MS:”
CoDeSys2.3 SoftMotion 3
开头。
总线接口、轴组和驱动器可以获得任何想要的,并且是独一无二的IEC 61131-3标识符:
对于每个元素都可以定义模块参数:
对于BusInterface:
wParam1
wParam2
dwParam1
dwParam2
对于AxisGroup:
STask
DwCycle
wParam1
...
wParam4
dwParam1
...
dwParam4
对于Drive:
Wld
WControlType
wCyclicDataS1
wCyclicDataS2
板卡专用的WORD类型的参数
板卡专用的DWORD类型的参数
与任务名一致的字符串,用于控制轴组数据的传输
在“sTask”中定义的任务的循环时间(以微秒计),(仅
在控制器不支持任务机制并自动调用PLC_PRG(默认
的任务)的情况下才定义)
板卡/驱动器专用的WORD类型的参数
板卡/驱动器专用的DWORD类型的参数
轴组中驱动器的ID(WORD)
预定义的控制和返回信息类型(WORD):
()
1.TOR->--- (Torque->---)
2.VEL->VEL Velocity->Velocity
3.VEL->POS Velocity->Position
4.POS->POS Position->Position
5.POS,VEL->POS,VEL Postion->Velocity
6.VEL->--- Velocity->---
7.CONFIGURABLE 通过wCyclicDataS1,...S2,...S3
和 wCyclicDataR1,...R2,...R3手动配置 (见下)
发送(..S..)和返回(..R..)数据的定义,如果wControlType
定义为“CONFIGURABLE”;根据驱动器的驱动程序在
4 CoDeSys2.3 SoftMotion
wCyclicDataS2
wCyclicDataR1
wCyclicDataR2
wCyclicDataR3
DwRatioTechUnitsDenom
iRatioTechUnitsNum
IMovementType
FPositionPeriod
FSWMaxVelocity
FSWMaxAcceleration
FSWMaxDeceleration
BSWLimitEnable
FSWLimitNegative
FSWLimitPositive
BHWLimitEnable
对于Encoder:
wEncoderId
dwRatioTechUnitsDenom
iRatioTechUnitsNum
iMovementType
fPositionPeriod
bSWLimitEnable
fSWLimitNegative
fSWLimitPositive
如下基本选项中进行选择:
Act/SetPosition 定义位置
Act/SetVelocity 定义速度
Act/SetTorque 定义扭矩
Act/SetCurrent 定义电流
Act/SetUserDef 用户定义的
分母和分子,用于将总线数据转换成技术单位[u]
(DWORD, INT)的转换因子
运动类型的两种选择:直线/旋转(linear/rotary)
旋转轴周期;决定于转换因子
“dwRatioTechUnitsDenom”和“iRatioTechUnitsNum”(见
上)
软件能探测到的最大速度
软件能探测到的最大的加速度
软件能探测到的最大的减速度
切换到软件位置探测(仅限直线驱动器),这样,当轴
偏离允许位置区域后,它马上会被设置成错误状态。
负位置极限(仅限于直线驱动器)
正位置极限(仅限于直线驱动器)
切换到硬件位置探测(仅限直线驱动器),这样,当轴
偏离允许位置区域后,它马上会被设置成错误状态。
Encoder 的ID号(WORD)
总线数据工程单位[u]变换因子的分母和分子(DWORD或INT)
Encoder类型;可选项:linear 或rotary(直线或旋转)
旋转轴的旋转周期; 决定于'dwRatioTechUnitsDenom' 和
'iRatioTechUnitsNum'
开启软件位置检查(仅对直线电机),随后,如果轴离开窗口位置,
相应的SMC_Encoder将被设置成error(错误)状态
负向最大值(仅用于直线编码器)
正向最大值(仅用于直线编码器)
2.2 SM_DriveBasic.lib和自动代码生成
若CoDeSys的IEC1131应用程序中包含了SM_DrivBasic.lib库,CoDeSys将根据PLC配置编辑器中配置
的驱动器镜像来自动生成结构体对象。这些结构体能被IEC程序访问。
除此之外,IEC1131应用程序必须根据所使用的硬件,与硬件制造商的专用库相连。这个库的名字应
该是这样的:<总线接口名>Drive.lib。它支持硬件专用驱动器接口的功能。“总线接口名”是从PLC配置的
总线接口模块参数中得到的(见输入项“接口类型”)。“总线接口名”的命名使用该参数左起第一个空格
以左的字符串。(例如:“CAN (Peak)”->”CAN”->制造商专用库将命名为“CANDrive.lib”)。
在应用程序启动时,在任务的开头隐式地调用函数DriveExecute_Start 和
CoDeSys2.3 SoftMotion 5
DriveInit 在任务结束时隐式地调用 DriveExecute_End,则会对
AXIS_REF结构体变量的传输与维护。若初始化驱动器出现错误,drive.lib.库会产生
一条错误描述信息,该信息将被存储在g_strBootupError变量中。
作为主函数的补充,SM_DriverBasic.lib还包含一些辅助模块。
2.2.1 SM_DriveBasic.lib中的数学辅助模块
函数SMC_sgn返回输入值的符号;如果输入为负取-1,若输入为正取+1,若输入为0则取0。
函数SMC_fmcd计算输入以m为模的x模值。返回值总是在[0,m]范围内。
函数SMC_atan2计算并返回角度,它解出了下面的方程:
与普通ATAN函数相比,这种情况下返回值的范围较大,为[0,2pi]。
sin(alpha) * f = Sinus und cos(alpha) * f = Cosinus
2.2.2 轴组辅助模块
函数SMC_IsAxisGroupReady返回布尔类型值,若轴组的隐式启动已中止,以使得组内的轴可操作,
则返回TRUE;若启动仍在进行或出现错误,则返回FALSE。
2.2.3 虚拟时间轴
这个功能模块创建一个时间轴,并由输出轴(AXIS_REF)发出。
在输入bExecute的一个上升沿,时间轴目标位置从零开始读秒。如果输入bPeriodic被置位了,那么一旦达
到fPeriod设定的时间,它会立即重新从0开始。
输入fOverride给出一个时间乘数,缺省之为1。如果为“2”,那么时间将以两倍速率运行。
输入fRampInTime定义了,当新目标被读取后,功能块将花费多长时间才能以新的越程值来运行。
输入TaskCycle定义了调用功能块的任务的循环时间(秒)。
2.2.4 数字硬件输入控制的参考点运动
6 CoDeSys2.3 SoftMotion