发表于:2006-10-10 11:14:00
2楼
好的控制器,应该有与位置相关的输出开关量。以TRIO控制器为例:当输出8从OFF到ON时,对应的实际位置就是180度。用我们的硬件PSWITCH,捕捉时间可控制在1微秒内,对应的实际位置可以非常精确。
PSWITCH(1,ON,2,8,ON,180,181)
就可在180到181之间把输出8设为ON(开关1与之对应)有了PSWITCH,你可在任何实际位置触发一输出信号。下面把PSWITCH定义介绍一下。
类型:
命令
语法:
PSWITCH(sw,en,[,axis,opno,opst,setpos,rspos])
说明:
通过PSWITCH命令设置,可以根据预先设定的起点位置和终点位置自动触发一个开关量点的输出。总共有16个这样的位置触发功能开关,它们可以分配到任意的轴,也可以任意设定ON/OFF位置和实际的输出点。
多个PSWITCH可以分配给同一个输出点(通道)。这些位置触发开关或的结果以及BASIC程序中对该点操作用的OP指令合成在一起,是其输出点最终的实际效果。
该命令有两种形式,一个是有7个参数,另一种只需两个参数。采用7个参数用来使能这种功能,采用两个参数的形式用来取消PSWITCH功能。
参数:
sw:
触发功能开关的序号
en:
开关的使能 -
1 或 ON 启动软件的PSWITCH
0 或 OFF 取消 PSWITCH
3 启动硬件 PSWITCH
(硬件 PSWITCH只可以用于P242子板)
axis:
轴号,提供位置参考的轴,其范围从0到最大控制器所能支持的轴的序号。对于硬件PSWITCH 应设置为该子板所对应的轴号。
opno:
物理上实际对应的输出点,其范围应该为8到31。对于一个硬件PSWITCH 它的设定值应当为0到3。
opst:
选择设定输出的状态, 如果为1则表示在位置范围内输出为ON,如果为0则表示在位置范围内输出为OFF。
setpos:
设定产生输出的起始位置,采用用户单位
rspos:
设定输出复位的位置,采用用户单位
例如:
一个旋转轴上有一个凸轮触发开关,它必须根据不同的工件改变触发时机。在轴上还有一个接近开关用来检测机器原点。当改换工件时,由于是机械装置,因此很耗费时间,现在可以通过使用PSWITCH功能实现一个软件的‘凸轮开关’。接近开关连接到输入通道7,输出点为11。轴被一个三轴系统中的一轴来控制,其电机有一个900ppr的反馈编码器。输出必须在原点检测开关动作后的80°开始,并持续120°。假设该机器从原点开始启动。
PSWITCH命令内部已实现了单位转化功能,这样在设置位置时可以采用更为便捷的单位。因此,在系统设计初期,选择并设定好轴转动的单位就十分重要。因为编码器的每个脉冲对控制器来说可以有4个计数,所以该轴每转一圈会有3600个计数,即10计数/°。现在我们将对应轴的单位转化参数units设置为10,那么接下来我们的各项工作就可以以角度作为单位了。
下面,为实现PSWITCH功能,还必须对其各个参数做出设置。
sw
功能开关的序号,可以采用0到15中的任意一个空闲的序号;在本例中设置为0。
en
该功能开关要被启动,因此该参数设置为1。
axis
此例中,该旋转轴为0轴控制,所以该项为0。
opno
此例中,作为控制的输出点为I/O的第11号通道,所以设置为11。
opst
当在区间内,其输出为ON,所以设置为1。
setpos
因为要求在原点过后的80开始输出,同时由于该轴采用角度作单位,因此设置为80。
rspos
要求输出在80°打开后持续随着轴转动120°后关闭,因此其关闭位置为200°,因此设置其复位位置为200。
综上所述,编制Trio BASIC代码用来设置PSWITCH功能点:
switch:
UNITS AXIS(0)=10' Set unit conversion factor (°)
REPDIST=360
REP_OPTION=ON
PSWITCH(0,ON,0,11,ON,80,200)
这个程序中设置了轴的重复距离为360度并且设置重复选项REP_OPTION为ON,这样做后,该轴旋转时,其位置值就会只在0到360度间自动往复。