SM3_CNC,轴组,G代码解析,CNC运动控制

news/2024/11/30 2:35:32/

硬件要求:

中型PLC(汇川AM600,禾川HCQ0),且带 SM3_CNC.library 库(3.5.6支持离线仿真)

G代码标准: DIN66025 

DIN66025-1标准G0    运动定位
G1    线性插补
G2    顺圆插补
G3    逆圆插补
G4    等待
G6    抛物线插补
G8    椭圆插补

M指令块:SMC_Interpolator  插补算法(按时间节拍,截取位置)

SMC_Interpolator    //插补器(遇到M指令会暂停)bAcknM置位(继续插补)
wM输出M指令值

H点胶指令:开关量

SMC_Interpolator    //插补器(遇到H指令不停顿)
N90    G1 X20
N100   G1 X100 H2 L20  H-2 L-10  //起点加20位置点胶,终点-10位置取消// H指令不会影响运动速度

辅助轴:

插补轴:X,Y,Z
辅助轴:A,B,C,P,Q,U,V,W    // 8个辅助轴
轴排序:ALL := 16#FFFF;
X := 2#1 ;
Y := 2#10 ;
Z := 2#100 ;
A,B,C,P,Q,U,V,W,A6,ALL,

 

库的用法:解析G代码文件

SMC_Interpolator  插补算法(按时间节拍,截取位置)

SMC_OutQueue,SMC_CNC_REF,File    //位置流,带参位置流,文件流SMC_ReadNCFile        // G代码文件读取//仿真路径// C:\ProgramData\CODESYS\Simulation\PlcLogic\SMC_NCDecoder         // G代码文件解码》输出poqDataOut(位置坐标流/轨迹坐标)
SMC_ToolCorr          // 工具参数
SMC_SmoothPath  // 轨迹平滑
SMC_CheckVelocities   // 轨迹速度检查》输出的轨迹数据要给插补器 poqDataOutSMC_Interpolator      // 插补器,运算: 》输入:轨迹数据poqDataOut//               》输出:piSetPosition
SMC_TRAFO_Gantry3     // 解析出3轴坐标  》输入:pi//               》输出:dx,dy,dz分发给轴定位控制SMC_ControlAxisByPos   // X axis  轴定位 XYZABC

1读取G代码文件解析

G代码文件》保存到 _cnc文件夹内NC文件路径: STRING := '_cnc/gcode.cnc'; //PLC参考路径在本体主根目录下,G代码放在_cnc文件夹内// (后续以这个路径参考点再添加文件深度)

放该文件夹内 ,文件名例如: SouJiKe.txt     // 雕刻手机壳的G代码文件

2插补运算:SMC_Interpolator插补器,  poqDataOut轨迹

利用 SMC_CheckVelocities(轨迹速度检查)的输出做输入
poqDataOut轨迹流

SMC_Interpolator  插补算法(按时间节拍,截取位置)piSetPosition   输出以时间为节拍的坐标流SMC_TRAFO_Scara2   解析出节拍坐标位置》并发给对应的伺服电机

 库函数:POU 功能块

SM3_CNC  , ( 3.5.8.0 )
SM_CNC_POUs》SoftMotion CNC》SoftMotion Function Blocks
SM3_CNC, 3.5.8.0
Project Information        // get项目信息
SM_CNC_Data types          // SM_CNC_数据类型
SM_CNC_POUs                // CNC程序块  SMC_ReadNCFile文件  SMC_ReadNCQueue队列
SM_Trafo_Data type         // 轴组,龙门,机器人,数据类型
SM_Trafo_POUs              // 轴组转换功能块  Gantry systems龙门系统
Visu_Templates             // 模板
Visu_Templates_New         // 新模板

轴组:龙门轴组,6轴机械臂,码垛机,行架 等

添加轴组后,可以选轴组类型,龙门数控或者搬运机械臂等。。。

 

转换FB块为5轴_龙门。
5轴由:X,Y,Z,A,B 轴组成
4是A轴:是旋转轴。(垂直于Z轴旋转,比如刀片)
3是B轴:是倾斜轴。(与Z角度角度调节,如铣刀倒角)

 

刀具长度(u) :

双X轴龙门:

这里涉及到2个电机:x1轴和x2轴
x1轴为主,x2轴为从,x2轴一直去追赶x1轴的坐标位置。在齿条型的X大梁,x2轴如果与x1轴位置超差过大,会导致X大梁卡死。所以x2轴要配置成:(力矩加定位)的混合模式。函数使用:  MC_GearIN    电子齿轮功能  (注:注意从轴的追赶速度值大小)
脱开:      MC_GearOut   断开耦合另一种方案是:新建一个虚轴。x1和x2去追赶虚轴的坐标。

圆弧插补:

SMC_RoundPath

轴组状态:

 SMC_GroupPower    电源

MC_GroupEnable        使能

MC_MoveLinearAbsolute     直线绝对运动

MC_AddAxisToGroup        添加轴组


http://www.ppmy.cn/news/94023.html

相关文章

工程师是怎样对待开源

工程师如何对待开源 本文是笔者作为一个在知名科技企业内从事开源相关工作超过 20 年的工程师,亲身经历或者亲眼目睹很多工程师对待开源软件的优秀实践,也看到了很多 Bad Cases,所以想把自己的一些心得体会写在这里,供工程师进行…

MyCat|Shardingsphere-proxy:jdbc连接MySQL8.0.33的query_cache_size异常解决方案

当前版本:MySQL 8.0.33 ,Mycat-server-1.6.7.6-release-20220524173810-win,apache-shardingsphere-5.3.2-shardingsphere-proxy-bin,jdk 1.8 1. 问题的主要背景 MySQL 8.0.33版本,搭建了主从复制,需要借…

Linux的进程信号(上)

文章目录 1. 信号入门2. 技术应用角度的信号3. 信号概念4. 信号处理常见方式5. 产生信号5.1 通过终端按键产生信号5.2 调用系统函数向进程发信号5.3 由软件条件产生信号5.4 硬件异常产生信号 6. Core Dump 1. 信号入门 在生活中,比如红绿灯,铃声这些&am…

每日一题——两数之和(返回下标和返回数值两种情况)

每日一题 两数之和 题目链接 思路 注:本题只采用暴力解法,时间复杂度为O(n2),如果采用哈希表,可以将时间复杂度降到O(n),但由于笔者还未对哈希表展开学习,故不做讨论 我们直接用两层for循环来解决问题 第…

【Python】内置函数

文章目录 反射相关【4】基础数据类型相关【38】和数字相关&#xff08;14&#xff09;数据类型 <4>bool([x])int((x, base10)float([x])complex([real[, imag]]) 进制转换 <3>bin(x)oct(x)hex(x) 数学运算&#xff08;7&#xff09;abs(x)divmod(a, b)round(x [, n…

Scikit-LLM:将大语言模型整合进Sklearn的工作流

我们以前介绍过Pandas和ChaGPT整合&#xff0c;这样可以不了解Pandas的情况下对DataFrame进行操作。现在又有人开源了Scikit-LLM&#xff0c;它结合了强大的语言模型&#xff0c;如ChatGPT和scikit-learn。但这个并不是让我们自动化scikit-learn&#xff0c;而是将scikit-learn…

第三十九章 青格郎当(青衣弹灵诞生)

“巴哥奔&#xff0c;我们诚挚邀请你加入金马弹灵&#xff0c;着青衣&#xff0c;事渲染&#xff0c;你愿意么&#xff1f;” 蓝衣弹灵话音刚落&#xff0c;大家一齐睁开眼睛&#xff0c;直愣愣的盯着巴哥奔。 “唔~~~可~” 好半天&#xff0c;巴哥奔才憋出这个字&#xff0c;刚…

uCOSii任务管理

uCOSii任务管理 主要用来测试uCOSii“创建任务,挂起任务,恢复任务,发送删除任务请求,删除任务”。 在os_cfg.h中 #define OS_LOWEST_PRIO 63u //设置最低优先级为63,则空闲任务优先级OS_TASK_IDLE_PRIO就等于63 //OS_PRIO_SELF为255,因此OS_LOWEST_PRIO<255 注意&a…