在网上看到一贴,感觉写的很好,转发一下,大家共同学习!
最近弄清楚了TRIO电子凸轮CAMBOX指令的pattern mode,指令功能为可根据要求改变曲线的幅度大小。具体介绍如下
CAMBOX(start point, end point, table multiplier, link distance ,link axis<,link options><, link pos>)
link option
1. 当主轴色标信号触发时,从轴与主轴开始连结。
2. 当主轴运动到设定的绝对位置,从轴与主轴开始连结。
4.CAMBOX自动重复连续双向运行。设置REP_OPTION=1,取消此操作。
8.PATTERN模式, CAMBOX的高级用法,允许在一个CAMBOX执行周期中实现多个波动幅度值。一般与模式4一起使用。
CAMBOX 模式化方式
设定“link options”参数的第3位(值等于8)以启动CAMBOX的模式化方式。该模式可以循环使用一串不同的放大系数。一般其与自动重复模式结合使用,因此其组合后的参数值为12。下列的图表展示了一个典型的重复模式与CAMBOX模式化模式自动组合的例子:
这该模式下,其参数与标准的CAMBOX函数处理方式不同。
CAMBOX(start, end, control block pointer, link dist, link axis, options)
其第三个参数的意思不再是放大系数,而是对应模式化方式控制区的首个Table区的位置值。
起点及终点参数仅仅表示其基本的图形轮廓曲线。其模式化序列需要在其他的TABLE数据区中进行标示。因此需要定义一个新的TABLE数据块:“控制数据块(Control Block)”。在该数据块中,需要有7个TABLE数据来分别定义模式化的位置、重复控制等。该数据块必须是固定的7个数据。
因此在这种模式下,为定义所需的运动,需要有三个互相独立的Table数据区块。
图形数据块
对于任何CAMBOX指令,都直接访问该数据区.
控制数据块
由CAMBOX的第三个参数决定是否访问,只有在模式化方式时才有作用。其数据区长度为固定的7个数据。需要特别注意的是,在CAMBOX执行期间,该控制区内的数据值会被修改,所以在每次执行CAMBOX指令时,都要预先对其进行重新初始化。
模式化数据块
由CONTROL BLOCK的两个值决定其起始和终止的位置。模式化序列是一串对应图形曲线的放大系数值。
Control Block 参数
R/W
说明
0
当前位置
只读
表示对应模式化数据序列的当前位置值。该值应当被初始化为开始执行的模式化序列值所对应的序号。
1
强制位置
读/写
一般该值为-1。如果在执行的图形完成时,用户程序在该TABLE数据区的位置内写入了一个新值,则轴将运动到这个新值所对应的Table值标示的位置。到达该点后,系统软件会自动将该值重新置为-1。这个值应当在模式化数据区内,必须保证: CB(2)<=CB(1)<=CB(3)
2
模式化数据开始位置
只读
第一个模式化数据所对应的TABLE 数据区的位置值。
3
模式化数据开始位置
只读
最后一个模式化数据所对应的TABLE 数据区的位置值。
4
已重复执行的次数
读/写
当前的模式化数据块被重复执行的次数。初始化时该值为0。当被连接轴(主轴)为正向运动时,每次重复执行模式化数据时,该值将自动加1。当被连接轴(主轴)为反向运动时,每次重复执行模式化数据时,该值将自动减1。注:该计数以0为初始值开始计数: 0,1,2,3...
5
重复次数
读/写
定义模式化数据需要重复执行的次数。该值如果为-1,模式化数据将不停的执行下去。该值应当为正值。当CB(4)的值达到CB(5)所标注的值时,并且当CB(6)=-1的情况下,CAMBOX指令将完成结束。该值可以被设置为0,用来结束运行完当前模式化数据的CAMBOX指令。如果被连接轴(主轴)反向运动参见最后对REPEAT COUNT的注释。
6
下一个控制区块
读/写
如果设置为-1,则在执行到设定的重复执行次数后,运动将完成。初次之外,该值表示一个新的控制区块的起始TABLE区的位置值。
注:
标注“读/写”的项可以由用户程序在CAMBOX执行模式化过程中对其进行写操作。
例如:
一个机械循环执行一个初始化曲线1000次后,再连续执行定义好的变幅值的曲线(模式化序列)直到被要求停止为止,并停止在所定义的模式化参数定义的最后一点。
初始化和模式化过程采用同样的基准曲线,该曲线的值存储在TABLE数据区的100到150。
运行变幅值曲线所需的模式化序列的各个参数存储在TABLE数据区的1000到4999
初始化曲线采用的模式序列仅有一个值,其存储在TABLE(160)
初始化曲线采用的控制区域存储在TABLE(200)到TABLE(206)
运行变幅值曲线所需的控制区域存储在TABLE(300)到TABLE(306)
‘ Set up Initialisation control block:
TABLE(200,160,-1,160,160,0,1000,300)
‘ Set up running control block:
TABLE(300,1000,-1,1000,4999,0,-1,-1)
‘ Run whole lot with single CAMBOX:
` Third parameter is pointer to first control block
CAMBOX(100,150,200,5000,1,20)
WAIT UNTIL IN(7)=OFF
TABLE(305,0) ‘ Set zero repeats: This will stop at end of pattern
通过要求设定几个Control Block 参数,就可以直接调用该TABLE数据区,使用一系列不同的放大倍数。