为了提供一种简便的多维运动控制方法,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必须包含一个工程的无差错编译。  |