为了提供一种简便的多维运动控制方法,SoftMotion支持部分基于DIN66205标准的编程方式。因为整个SoftMotion是按照IEC61131标准定义的,所以只有较少的DIN66025语言会被支持,这些语言用于产生路径。
参阅相关文档:
['%' <program name>] <sentence>{<sentence>}
形如:
<sentence>::= N<sentence number> G<number> {<parameter>}]
一个 SoftMotion 的CNC程序可以以 %开始。程序的名称添加[ Space ] 或者通过[ TAB ] 。一个实际的CNC程序是由多行语句构成的
每条 语句必须要包含一些关键字。
一个字包含一个字母(字标识符)以及随后的数字(例如G01)。在任何情况下都不区分大小写并且数字0可以被省略 (G01 = g1)。
没句的第一个字符表示每句的序号 (N<number>)例如 N01。语句通过 [ Space ] 或者[ TAB ] 字符隔开。按照从左到右的顺序进行处理,从而除了配置命令外的所有关键字(G<number>),例如G02数字序号会由关键字定义的变量所决定。要定义的变量的序号。最终这个变量将会影响处理命令。
语句的序号 (N<number>)是为了做更加深入的跳转,没有更深层次的想法。
每个句子只能包含一个命令,必须遵循正确的语句序号。如果在句子中不包含一个位置命令,此句将自动的添加到最后一句。
每个定位命令可以被看做一个路径对象(例如直线,圆弧)。路径对象在进行基本的插值时其速度符合预定的速度(指令速度),加速度和减速度。插补过程中必须保证不超过限制值。
在转化过程中两个相邻的速度对象必须遵守以下规则:
此外可以通过G92 跳转的方式在CNC程序中进行位置的设定。可以定义在CNC程序的开始部分(程序开始时位置就被设定),或者在程序的中间位置,所有这些都会导致一个G92定义的位置跳转。如果一个程序中包含多个G92命令,将以最后一个为准, 之前定义的会被忽略。如果想确保之前的G92也会被处理(一个周期的长度),必须在两个跳转之间插入一个具有与跳转位置相同的G1指令。这针对对两者的中间位置没有要求,只关注目标位置,并且要求尽快到达目标位置的情况。在这种情况下模块SMC_ControlAxisByPos会检测到一个位置跳跃,进而会停止插补,以每个轴最大速度的方式到达目标位置。
示例
定位
G代码
%MyExample N10 G92 X100 Y100 (Set target position to 100/100) N20 G1 X100 Y100 (Make sure a one-time output of the position) N30 G92 X50 Y100 (Set target position to 50/100)
一个 以字符/起始的表达式在编译过程中将会被跳过,在位于 ⇘ CNC菜单中的选项 ⇘ “步骤注释” 被激活。
以( )中插入的字符串,将会被认为是注释对程序路径没有任何的影响。嵌套的注释是不支持的。
表达式的序号 (N<number>) 作为一个标记用于特殊的跳转,除此之外没有其他意义。
所有序号除了命令值 (G<number>),M功能 (M<number>) 以及选择序号 (H<number>) 之外其他值可以是一个浮点数。
G-代码字定义 |
描述 |
---|---|
A |
附加齿轮轴A的目标位置 |
B |
附加齿轮轴B的目标位置 |
C |
附加齿轮轴C的目标位置 |
D |
刀具半径(分别对应 G40-42 校正以及路径修正 G50-51)分别对应变量值 (G36/G37) |
E |
最大加速度 (>0) / 减速度 (<0) [定义单位/秒2] |
EF |
设置G0运动的加速度/减速度( ⇘ “定位”)。 |
E<axis> |
这个特殊指定给定轴的加速度和加速度值。附加的轴可以是 P,Q,U,V,W 或者 Z (Z 轴只在 2D 模式下)。如果 G-代码应用到当前附加轴上,这意味着没有运动发生在 X, Y 或者 Z (3D 模式) 只在附加轴上有指定运动,加速度和减速度的限制是由编码器检测的。由于这个原因,运动必须发生在至少一个主轴上,加速度和减速度的限制是由 ⇘ “SMC_ExtendedVelocityChecks”来定义的。这将确保轴的运动不会超过限制。 |
F |
速度 [定义单位/秒], (速度) |
FF |
速度 [定义单位/秒], (速度) |
F<axis> |
这个功能用于设定给定轴的速度值。附加轴可以是 P,Q,U,V,W 或者Z (Z 轴只适用于2D 模式)。如果 G-代码是用于一个附加轴的纯粹运动,那么这意味着在 X, Y 或者Z (在 3D 模式)下将没有运动只有在给定的轴上才有运动,速度限制的检查是通过编码器实现的。因为这个原因运动至少要针对一个主轴进行处理,速度的限制是由 ⇘ “SMC_ExtendedVelocityChecks”决定。这将确保没有超过限制。 |
G |
⇘ “定位”, (几何学) |
H |
打开 ⇘ “开关点 (H-功能)” (>0) / 关闭 (<0) |
I |
圆/椭圆的X-坐标 (G02/G03/G08/G09) 或者抛物线切线交点的 X-坐标。 |
J |
圆/椭圆的Y-坐标 (G02/G03/G08/G09) 或者抛物线切线交点的Y-坐标。 |
K |
从数学意义上定义的椭圆主轴方向 (0° O, 90° N, ...) 条件跳转 (G20) dT1 参数值 (M-功能) 或者圆心的 Z-坐标 (G02/G03 仅在 3D 模式) |
L |
绝对开关位置 (H), 分别从路径对象的起始位置 (>0) 和结束位置 (<0) 进行测量,分别表示条件跳转 (G20) 以及参数值 dT2 (M - 功能) |
M |
设备附加选项, M-选项 (M-功能), ⇘ “M-函数” |
O |
相对开关位置 (H) [0..1] 变量值改变 (G36/G37) 或者 M-参数数据结构 (M) |
P |
附加直线轴的目标位置 P |
P<axis><period> |
如果希望通过CNC旋转来控制轴,尤其是定义在附加轴 <axis> 中的周期 <0..360> 。设置周期为 0 (例如 PA0) 使轴的工作为直线。 ⇘ “G90, G91, G98, G99”。 |
Q |
附加直线轴的目标位置 Q |
R |
半径 (G02/G03) 配合I,J 或以比例变化的主要椭圆 (G08/G09) [0..1] |
S |
打开 (>0),关闭 (<0) 直线轴的 S-曲线:
|
T |
命令值具体参数 |
U |
附加线性轴U的目标位置 |
V |
附加线性轴V的目标位置 |
W |
附加线性轴W的目标位置 |
X |
目标位置的X-坐标 |
Y |
目标位置的Y-坐标 |
Z |
目标位置的Z-坐标 |
G0 |
直线运动不带刀具,定位, ⇘ “定位” |
G01 |
带刀具的线性(直线)运动, ⇘ “直线” |
G02 |
顺时针圆周(圆弧)运动, ⇘ “圆弧” |
G03 |
逆时针圆周(圆弧)运动, |
G04 |
延时时间, ⇘ “延时时间 ” |
G05 |
2D 技术样条点, ⇘ “样条曲线” |
G06 |
抛物线, ⇘ “抛物线” |
G08 |
顺时针椭圆(圆弧), ⇘ “椭圆” |
G09 |
逆时针椭圆(圆弧), ⇘ “椭圆” |
G10 |
3D 基数样条点, ⇘ “样条曲线” |
G15 |
切换到 2D, ⇘ “3D 模式” |
G16 |
通过 I/J/K方式激活3D-模式切换到3D视图, ⇘ “3D 模式” |
G17 |
激活 3D-模式下的 X/Y 平面切换到3D视图, ⇘ G17 |
G18 |
激活 3D-模式下的 Z/X 平面切换到3D视图, ⇘ “3D 模式” |
G19 |
激活 3D-模式下的 Y/Z 平面切换到3D视图, ⇘ “3D 模式” |
G20 |
条件跳转 ( 如果 K<>0跳转到L), ⇘ G20 |
G36 |
将数值 (D) 写到变量 (O), ⇘ “改变变量值 ” |
G37 |
通过值 (D)增加变量值 (O), ⇘ “跳转” |
G40 |
结束刀具补偿, ⇘ “预处理” |
G41 |
启动刀具半径校正工件的左侧区域, ⇘ “预处理” |
G42 |
启动刀具半径校正工件的右侧区域, ⇘ “预处理” |
G50 |
结束圆路径/平滑路径功能, ⇘ “预处理” |
G51 |
启动圆滑路径功能, ⇘ “预处理” |
G52 |
启动圆弧路径功能, ⇘ “预处理” |
G53 |
结束坐标偏移功能, ⇘ “坐标变换” |
G54 |
设置以下所有代码的偏移到一个特定的位置。参阅 ⇘ “坐标变换” |
G55 |
添加一个特殊位置到当前的偏移处, ⇘ “坐标变换” |
G56 |
设置当前的偏移量是其等于一个特殊位置, ⇘ “坐标变换” |
G60 |
结束避免循环功能, ⇘ “预处理” |
G61 |
启动避免循环功能, ⇘ “预处理” |
G75 |
插补的时间同步, ⇘ “时间同步插补” |
G90 |
按照以下坐标值(fo X/Y/Z/P-W/A/B/C)定义的绝对路径(默认)启动插补, ⇘ “模块” |
G91 |
按照以下坐标值(fo X/Y/Z/P-W/A/B/C)定义的相对路径(默认)启动插补, ⇘ “模块” |
G92 |
设置位置不进行偏移, ⇘ “定位” |
G98 |
按照以下代码提供的 I/J/K相对路径值启动插补, ⇘ “模块” |
G99 |
按照以下代码提供的 I/J/K相对于起点(标准点)的相对路径值启动插补, ⇘ “模块” |
函数库 ⇘ SM3_CNC必须包含一个工程的无差错编译。 |