数控程序中的O号在大多数时候是O0000,如果数控机器里面已经存在一个这样的数控程序,那么这样的程序发送给现场使用,在程序通过传输软件传输过程中会出现错误。
如何避免这样的问题发生?
每次在编程时都提前设置好相关的程序号,这样确实可以避免这样的问题,但又有新的问题出现,如何确保每次都会输入呢,毕竟依赖人还是会出现人为的疏忽,那难道就没有其它办法吗?
有人可能会说可以在后处理中设置固定的数字,固定的固然是可以解决,但同样存在问题,那就是所有出来的程序号都是一样的,还是存在雷同。
有人可能会说做一个fq参数,每次处理程序时,都输入一遍,这样同样存在雷同,而且还是依赖人来完成,多少有些遗憾。
还有人会说,插件可以解决,确实,插件确实是一个不错的选择,但目前还没有看到有这样的小程序,那么在这种情况下,用后处理自动的随机分配就应运而生啦。
下面是随机生成的相关代码和方法。
下面是MastercamX---X+代码,V9版本的代码自行处理一下即可。
1.首先定义一个字符串的参数,用来保存随机数。
sprogn : ""
2.定义随机数的数据格式,输出位数,前导零,后置零等。
# These formats used for 'Date' & 'Time'
fs2 19 2 0 2 0t #Integer, force trailing (hour)
fs2 20 0 2 0 2lt #Integer, force leading & trailing (min)
fmt 19 hour #Hour
fmt 20 min #Minutes
3.开始最为重要的部分,随机数的获取,每次生成程序时都需要产生一个随机数,但由于mastercam后处理不支持随机函数random,所以只能通过其他方式获取,为了使数据不重复,有如下思路:
A:获取计算机当前时间的年,月,日,再组合成一个4位数。
B:获取计算机当前时间的时,分,秒,再组合成一个4位数。
C:获取计算机当前时间的年,月,日,时,分,秒,再组合成一个4位数。
以上三种方法均可实现,那么从中选取最简便捷的一种,我们下面采用时,分,秒的方式。
首先判断计算机的当前时间,以12小时为一个计算周期,是否大于12,如果大于12,则把当前时间减去12小时。
其次,对时间进行相应的换算,换算方式有加减乘除,乘方,开平方等等,这需要用户自行决定,其目的是对小时/分钟/秒钟/毫秒进行换算产生一个非零的随机自然数。
完整代码如下:
pprog_int #Random Program NO.
if time$ >= 13, time2 = (time$ - 12)
else, time2 = time$
hour = int(time2), min = frac(time2)
progno$ = int(round(min * 100 * 60))
sprogn = no2str(progno$)
result = newfs (23, progno$)
*sprogn,e$
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删