PC机+I/O接口数控系统G指令和开关量指令协同方法及装置

文档序号:35955529发布日期:2023-11-08 17:07阅读:46来源:国知局
PC机+I/O接口数控系统G指令和开关量指令协同方法及装置

本发明涉及数控自动化,尤其是pc机+i/o接口数控系统g指令和开关量指令协同方法及装置。


背景技术:

1、随着制造业的不断发展,数控系统已经成为制造业中不可或缺的关键技术之一。研发开放、高性能、智能化、低成本的数控系统是数控技术领域的热点问题。目前,以通用pc机为平台的高性能、高实时性开放式数控系统备受关注。在这个领域,首要问题是必须解决数据加工nc程序中g代码和m、s、t等辅助功能指令的高效译码,以及g代码和开关量指令的协调控制问题。只有解决了这些问题,才能够实现数控系统的高效运行和优化加工效果。


技术实现思路

1、本发明提出pc机+i/o接口数控系统g指令和开关量指令协同方法及装置,能够实现数控系统的高效运行和优化加工效果。

2、本发明采用以下技术方案。

3、pc机+i/o接口数控系统g指令和开关量指令协同装置,所述控制装置包括pc机和i/o接口卡,由pc计算机完成g代码/开关量指令的译码和g代码运动轨迹的粗插补,所述开关量指令为包括m、s、t指令代码的m代码;由i/o接口卡完成运动轨迹的精插补并控制m代码执行;所述pc机设有译码预处理模块、g代码缓冲区、用于开关量指令缓冲的m代码缓冲区、粗插补模块及粗插补数据缓冲区、用于粗插补数据输出的通道b、用于开关量指令数据输入控制的通道a、用于开关量指令协调的m代码协调模块、用于m代码数据输出控制的通道c;通道a和通道b及通道c的通/闭状态均可控;

4、所述i/o接口卡设有插补数据缓冲区、精插补模块、m数据缓冲区、m代码执行模块。

5、pc机+i/o接口数控系统g指令和开关量指令协同方法,使用以上所述的pc机+i/o接口数控系统g指令和开关量指令协同装置,用于基于“pc机+i/o接口”结构的开放式数控系统的g指令和开关量指令协同控制,所述协同方法用于数据加工nc程序中g代码和m、s、t辅助功能指令的高效译码,以及g代码和开关量指令的协调控制,包括以下步骤;

6、步骤s1、首先将预处理的nc程序中的g代码和m代码通过封装成nmlmsg数据结构格式,其中数据结构包含数据类型type,再通过任务命令处理函数taskcmdhandle(),根据nmlmsg数据结构中的type类型把g代码和m代码分别存入g代码缓冲区和m缓冲区;

7、步骤s2、g代码缓冲区的数据发送到粗插补模块进行速度规划和粗插补计算,并将粗插补缓冲区的数据通过通道b发送到i/o接口卡的插补数据缓冲区,由精插补模块实现运动轨迹的控制;m代码缓冲区的数据通过通道a发送到m代码协调控制模块的缓冲区,再经通道c发送到i/o接口卡的m数据缓冲区,并由m代码执行模块执行m、s、t辅助辅助功能指令代码;

8、步骤s3、pc机通过控制通道a、通道b、通道c的通/闭状态实现g/m代码正确、有序协调译码以及控制执行。

9、所述的经过译码预处理的nc程序的m、s、t指令代码数据结构设有“前置标识”;在译码过程中,m代码数据的“前置标识”存入g代码缓冲区,用于协调g指令和m指令协同执行;所述通道b的通/闭状态可控,其状态取决于变量值b,变量值b取决于b1变量和b2变量,逻辑关系为b=b1∩b2;

10、当b=1时通道b开通,pc机粗插补模块的粗插补缓冲区的数据可以发送到i/o接口卡的插补数据缓冲区;当b=0时,通道b闭合,关闭pc机的粗插补缓冲区与i/o接口卡的插补数据缓冲区的通道,pc机无法发送粗插补数据到i/o接口卡上;

11、当出现pc机的粗插补模块的粗插补数据缓冲区要传输的数据为m指令“前置标识”时,置b1=0;当出现m代码协调控制模块要传输的数据为m指令的“结束标识”或m代码协调模块的缓冲区为空时,即意味着pc机完成了当前这条m指令的处理,置b1=1;当i/o接口卡的开关量控制相关接口准备就绪时,置b2=1,否则置b2=0。

12、所述的通道a的通/闭状态可控制,其状态取决于变量a的状态,当m代码协调模块的缓冲区数据为空时,或检测到m指令“结束标识”时,置a=1,通道a处于开通状态,m代码缓冲区可以继续向m代码协调模块发送下一条m指令,一旦m代码协调模块接受到一条新的完整的m指令数据,即置a=0即关闭通道a;所述m代码协调模块在任一时刻只接受处理一条开关量指令。

13、所述的通道c的通/闭状态可以控制,取决于变量c的状态,当c=1时,通道c开通,m代码协调模块可以向i/o接口卡的m数据缓冲区发送m指令数据,并由i/o接口卡的m代码执行模块执行该m指令;当c=0时,通道c关闭,m代码协调模块无法向i/o接口卡发送m指令数据;

14、通道c的状态由状态变量c1、c2、b2决定,其逻辑关系为c=c1∩c2∩b2,即当三个状态变量c1、c2、b2中有任一状态变量为0,则c=0,否则c=1;

15、当i/o接口卡的精插补模块已经完成精插补运动轨迹控制,即准备就绪,置c2=1,否则置c2=0;当i/o接口卡的m代码执行模块已完成开关量的执行,并以准备就绪,置b2=1,否则置b2=0;

16、当出现pc机的粗插补模块的粗插补数据缓冲区要传输的数据为m指令的“前置标识”时,置b1=0,同时置c1=1;当出现m代码协调模块要传输的数据为m指令“接受标识”,或m代码协调模块的数据缓冲区为空时,即意味着pc机完成了当前这条m指令的处理,置c1=0,同时置b1=1。

17、所述粗插补模块和m代码协调模块封装成两个不同的线程,通过互斥锁mutex对全局变量b1,c1进行上锁,同一时间只有粗插补线程或m代码协调线程能够获取互斥锁mutex并对b1、c1进行操作,另外的一个线程等待获取互斥锁mutex的线程释放锁后,才能尝试获取锁,以防止两个线程同时对b1、c1变量操作而产生错误结果。

18、所述粗插补模块和m代码协调模块封装成两个不同的线程后,线程间的同步通过使用条件变量来实现,条件变量利用线程间共享的全局变量b1、b2、c1、c2进行同步;条件变量通过允许线程阻塞和等待另一个线程发送信号的方法以弥补互斥锁的不足,使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程解开相应的互斥锁并等待条件发生变化,一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程,这些线程将重新锁定互斥锁并重新测试条件是否满足。

19、粗插补模块封装的粗插补线程要向i/o接口卡传输的数据为m指令代码的“前置标识”时,粗插补线程挂起进行休眠状态,并且只有等待b2=1,即i/o接口卡开关量控制相关端口准备好,以及c2=1,即i/o接口卡已完成精插补的时候,才通过zq_cond.notify_all()函数唤醒正在休眠的m代码协调线程;

20、当m代码协调线程检测到要传输的数据为m指令“结束标识”时,说明这条m代码指令数据传输完毕,即pc机完成了这条m代码指令的处理,此时m指令“结束标识”出现,说明m代码指令协调模块数据缓冲区数据为空,m代码协调线程挂起进行休眠状态,并只有等待b2=1,即i/o接口卡开关量控制相关端口准备好的时候,才通过zq_cond.notify_all()函数唤醒正在休眠的m代码发送线程;进而完成两个线程同步实现g/m代码正确、有序协调译码以及控制执行。

21、当所述数据加工nc程序为以g代码为首开始的nc程序时,数控程序开始运行时,先置b1=1,c1=0;当g代码数据送到粗插补模块,此时,若i/o接口卡的精插补已准备好,则置c2=1,i/o接口开关量控制相关接口端部准备好,则置b2=1,k=c2∩b2=1,使b=b1∩b2=1,c=c1∩k=0,进行g代码粗插补数据向i/o接口卡的数据传送,并进行精插补,同时禁止任何m代码传送和执行;当检测到“粗插补模块”的“数据缓冲区”要传输的数据为为m指令“前置标识”时,便触发b1=0,c1=1,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,i/o接口卡已完成“精插补信号”c2=1,k=c2∩b2=1,b=b1∩b2=0,使b=0,使c=c1∩k=1,这时在pc机的“m代码协调模块”执行1条m指令代码,并向i/o接口卡传输m指令数据,由i/o接口卡的有关模块执行该m指令,当检测到“m代码协调模块”要传输的数据为m指令“结束标识”时,说明这条m代码指令数据传输完毕,即意味着pc机完成了这条m代码指令的处理,此时m代码协调模块数据缓冲区数据为空,即置b1=1,c1=0,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,从而使b=b1∩b2=1,i/o接口卡已完成“精插补信号”c2=1,k=c2∩b2=1,使c=c1∩k=0,即开通g代码粗插补数据传向i/o接口卡的数据传送通道;同时,当“译码预处理模块”监测到“m代码协调模块”缓冲区数据为空时,检测到m指令“结束标识”,即已完成执行m指令,置a=1,此时,“译码预处理模块”的m代码数据缓冲区可以继续向“m代码指令协调模块”发送下一条m指令代码;当监测到“粗插补模块”的“数据缓冲区”要传输的新数据为新的m代码指令的“前置标识”时,即触发b1=0,c1=1,此时若i/o接口卡开关量控制相关端口准备好,则b2=1,使k=b1∩b2=1,若检测到i/o接口卡已完成精插补c2=1,k=c2∩b2=1,使c=c1∩k=1,开始在“m代码协调模块”执行新的1条m指令代码,向i/o接口卡传输m指令数据,由i/o接口卡的有关模块执行该m指令;如此重复,直到遇到m02指令,监测到“粗插补模块”的“数据缓冲区”要传输的数据为m代码“前置标识”,即m02指令时,b1=0,c1=1,使b=b1∩b2=0,等待接到已完成“精插补信号”c2=1,以及i/o接口卡开关量相关端口准备好信号b2=1,使k=b2∩c2=1,c=c1∩k=1,在“m代码协调模块”执行新的1条m02指令代码,并向i/o接口卡传输m02指令数据,由i/o接口卡的有关模块执行m02指令,完成该m02指令的执行,即发信号告知pc机。

22、当所述数据加工nc程序为以m代码为开始的nc程序时,数控程序开始运行时;先置b1=1,c1=0;首先译码预处理模块将数据送到粗插补模块的数据缓冲区,当检测到粗插补模块要向i/o接口卡传输的数据为m指令代码的“前置标识”时,即触发b1=0,c1=1,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,使b=b1∩b2=0,若检测到i/o接口卡已完成精插补的信号,即c2=1,k=c2∩b2=1,使c=c1∩k=1,开始在m代码协调模块执行1条m指令代码,并向i/o接口卡传输m指令数据,由i/o接口卡的有关模块配合执行该m指令;当检测到m代码协调模块要传输的数据为m指令“结束标识”时,说明这条m代码指令数据传输完毕,即意味着pc机完成了这条m代码指令的处理,此时m指令“结束标识”出现,说明m代码指令协调模块数据缓冲区数据为空,即置b1=1,c1=0,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,使b=b1∩b2=1,即开通g代码粗插补数据向i/o接口卡的数据传送通道b;同时,由于c1=0,使c=c1∩k=0,即关闭m代码数据向i/o接口卡的数据传送通道c;同时,当“译码预处理模块”检测到“m代码协调模块”缓冲区数据为空时,检测到m指令“结束标识”,即已完成执行m指令,置a=1,此时,译码预处理模块的m代码数据缓冲区可以继续向m代码协调模块发送下一条m指令代码;

23、当有新的g代码发送到“粗插补模块”,由“粗插补模块”进行g代码粗插补,由于此时b=1,c=0,可以将粗插补数据传送到i/o接口卡,由i/o接口卡进行精插补运动控制,并暂时禁止任何m代码向i/o接口卡的传送行;

24、当检测到“粗插补模块”的“数据缓冲区”要传输的数据为m代码“前置标识”时,即触发b1=0,c1=1,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,b=b1∩b2=0,若检测到i/o接口卡已完成精插补的信号c2=1,k=c2∩b2=1,使c=c1∩k=1,又开始在“m代码协调模块”执行新的1条m指令代码,并向i/o接口卡传输m指令数据,由i/o接口卡的有关模块执行该m指令,当检测到“m代码协调模块”要传输的数据为m指令“结束标识”时,说明这条m代码指令数据传输完毕,即意味着pc机完成了这条m代码指令的处理,此时m指令“结束标识”出现,说明m代码指令协调模块数据缓冲区数据为空,即置b1=1,c1=0,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,使b=b1∩b2=1,若检测到i/o接口卡已完成精插补的信号c2=1,k=c2∩b2=1,c=c1∩k=0,即又开通g代码粗插补数据向i/o接口卡的数据传送通道。使b=b1∩b2=1,使b=b1∩b2=1,当检测到粗插补模块的数据缓冲区传输的数据为m02指令的m指令代码“前置标识”时,即又触发b1=0,c1=1,此时,若i/o接口卡开关量控制相关端口准备好,则b2=1,b=b1∩b2=0,若检测到i/o接口卡已完成精插补的信号c2=1,k=c2∩b2=1,使c=c1∩k=1,又开始在m代码协调模块执行新的1条m指令代码,即m02指令,并向i/o接口卡传输m02指令数据,由i/o接口卡的有关模块执行该m02指令,当检测到“m代码协调模块”要传输的数据为m02指令“结束标识”时,说明pc机已将这条m代码指令数据向i/o接口卡传输完毕,直到i/o接口卡完成执行m02指令,向pc机发送完成信号则b2=1,即结束m02指令。

25、本发明能够实现数控系统的高效运行和优化加工效果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1