雕刻机虚拟仿真及上位机设计(Labview上位机+Proteus仿真)写在前⾯:本⼈对Arduino、Labview、CNC都了解不多,如有错误,请私信指正。
需求
设计雕刻机上位机,能够向下位机发送G代码
下位机能解释G代码并控制电机⾏动
设计
设计流程图
实现流程图
实现过程如下:
操作流程图
实际情况操作流程如下:
上位机部分
设计思路:
参考了⼀些现有的雕刻机上位机软件(以下贴图来⾃奎享雕刻软件,其他也差别不⼤),发现基本功能如下:
1.建⽴连接,选择端⼝、波特率、烧录的固件,由于我使⽤的是GRBL固件,所以没有添加选择固件的功能(还有其他固件如Gcode-Interpreter,都⼤同⼩异)
2.可以确认机器状态,可以设置⼯作位置和实时显⽰机器位置,⽅便做出调整。
3.设置起点,单独设置X,Y,Z轴的起点和返回⼯作位置(原点)。
4.设置XYZ轴移动步长(由于X和Y都在⽔平⽅向所以放在⼀起,当然,如果是读⼊.nc⽂件是直接根据⽂件中的信息来设置的),设置主轴运转的速度。
5.基本的三轴移动功能。
6.开启和关闭主轴。
7.读⼊.nc⽂件并执⾏。
参考上述的功能,设计了如下基于Labview的雕刻机上位机控制系统。(关于读取G代码的部分,由于时间和精⼒的限制暂时还未能做出来,如果后续有机会实现,会贴在最后)其整体前⾯板如下:
实现了基本的开关、选择串⼝、串⼝状态提⽰、显⽰历史命令、清除历史命令、通过上位机控制XYZ轴移动、打开/关闭主轴、选择主轴正/反转、设置主轴转动速度、直接发送G命令、设置⼯作原点、返回⼯作原点、设置XYZ轴移动步长、显⽰⼯作坐标和机械坐标的功能。前⾯板的功能顾名思义,下⾯是程序内部的说明。
整个程序设计思路较为简单,主要是通过检查按钮的01状态来实现功能,所有的操作都放在⼀个if判断中,由总的开关控制,外套接⼀个while循环。
接下来,就每个功能说明实现⽅法:
显⽰及清除历史命令:
设置⼀个显⽰字符串的前⾯板控件,通过该控件来显⽰历史命令。
具体的操作为,在每个命令执⾏后(向下位机发送G代码字符串),分开⼀条⽀路连接到历史命令,通过字符串拼接完成对所有命令的显⽰。
历史命令清除,是通过将空字符串覆盖到历史命令控件中实现,较为简单。
正转、反转、关闭主轴:
查阅G代码资料发现,控制主轴运动主要由M3 M4 M5及Sxxx组成。其中,M3表⽰主轴正转,M4表⽰主轴反转,M5表⽰主轴停⽌转动。⽽Sxxx,如S500则是⽤于控制主轴转速的G代码,基于此,通过将M3/M4/M5发送⾄串⼝下位机接收完成对主轴的控制操作。
对⼯作原点的设置:
查阅G代码资料,发现G10 P0 L20然后设置X0 Y0 Z0是对⼯作原点的设置代码,同样的,发送相应的代码即可完成设置,不过需要在上位机设置相应的显⽰控件,如我这⾥选择了三个数值量来显⽰,当设置⼯作原点后,将三个数值量置0,表明设置完成,也⽅便后续查看。
单独G命令的发送:
将⽂本输⼊框控件连接到该if框架中,点击发送后串⼝传输对应的内容,还设置了⼀个⼩的发送后清零,通过发送后判断标志,如果成功发送则将命令输⼊框清空。
对XYZ轴转动的控制:
查阅G代码发现,G21G91G0X/Y/Z增量F1000,G90 G21可以完成对三轴的移动,通过选择X/Y/Z及其
步长来控制运动。由于X/Y/Z轴、正负都是相同的结构,这⾥不再赘述。
完成字符串是什么串⼝的连接检测:
通过将VISA serial的错误输出簇拆分出Status,并将其接到⼀个⼩灯来查看串⼝是否正确连接。
返回原点:
通过G90 G0+X0/Y0/Z0的命令来完成三轴步进电机返回初始位置的功能。
主轴转速控制:
使⽤⼀个滑动杆来设置主轴的转速,读取滑动杆数值后,将其向下取整并转化为字符串,在前边添加S后边添加换⾏字符即可。设置好后通过按下确定按钮操作。
其他:
由于if结构在为真时执⾏,需要将按钮的机械动作选择为:释放时触发,否则可能因为操作不当陷⼊死循环或者发送很多次。
关于读取.nc⽂件:
由于时间等原因并未实现该功能,但是基于.NC⽂件的格式,给出以下实现的思路:使⽤note pad++打开.NC⽂件查看其格式,发现前两⾏也许是类似于前缀之类的,从第三⾏开始执⾏N20,N30,N40。这些NX0代表第X步的操作。根据以上思路,可以⽤Labview打开后逐⾏读取.nc⽂件,丢掉前两⾏后开始执⾏后边的内容(如果有⽤的话则保留,我没有查阅到相关信息),逐⾏通过串⼝发送即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。