AXY:PLS Software Specification/zh-hans
语言: | English |
---|
NEW PLS ARTICLE - Programmable Limit Switch
Contents
参考
介绍
可编程限位开关(PLS)是在达到指定轴位置时触发系统输出的机构。softMC中的PLS实现具有以下特点:
- 多位置规格
- PLS模式重复
- 位置滞后
- 启用和禁用PLS
- 输出可以是数字或模拟的
本文详细说明在softMC中PLS实现的功能。 描述功能并定义支持的命令。
定义
PLS – 可编程限位开关
PLS – 在PLS命令中指定的位置,其输出状态被切换。
Digital output – 可以映射到位于运动总线上的设备,驱动器输出中的任一个或 EtherCAT/CAN I/O模块。
(固件版本5.0及更高版本不支持本地; 它只支持传统的SERCOS II运动控制器。)
Soft output – 32个虚拟输出之一
PLS位置在数组中定义,允许您更改PLS位置的各个值。这个数组必须单调增加。 定义的位置数量和PLS数量没有限制。初始输出极性由Pls Polarity 指定。当PLS被使能时,输出状态被设置。
PLS功能描述
PLS极性
输出极性由PLS的极性决定。该属性确定PLS位置表的第一条目的输出极性,即在第一和第二条目之间的段中。如果轴的实际位置在别处,则相应地确定输出极性,因此当轴将到达第一段时,极性将如图所示。
例如: 考虑以下PLS,其位置为10,25,30,50,65,极性为0,如图所示。
可以看出,第一段的极性(在10-25之间)如极性(1)所示。 在任何其他段中启用PLS将导致输出如图所示。
输出状态
当达到指定的轴位置时,PLS会触发输出(数字或模拟)。输出的初始状态将由PLS极性属性决定。当达到位置时,输出的状态被触发。每当达到位置时也会切换状态,而不考虑电机的转动方向。
可以指定多个位置,在这种情况下,当达到每个位置时,数字输出的状态将被触发。例如,注意以下PLS规范:指定位置为100和200,启用后数字输出的初始状态为0.下表说明了输出状态如何随位置变化而变化。
Position | Output State |
0 | 0 |
100 | 1 (触发) |
150 | 1 (没有变化) |
200 | 0 (触发) |
210 | 0 (还没有变化) |
200 | 1 (再次触发) |
150 | 1 (没有变化) |
100 | 0 (再次触发) |
如果轴位置围绕指定的PLS位置振荡,则每当指定位置被越过时,输出将被触发。
初始输出状态由用户隐式指定。 当PLS启用时,输出设置为此状态。
PLS位置数据
PLS位置数据存储在属于PLS机制的数据结构中。 使用CreatePlsData命令显式创建此数据结构。
PLS数据具有读/写访问权限。 用户必须确保PLS位置数据是单调的(以允许启用PLS)。
滞后
如果轴在指定的PLS位置停止,则由于实际轴位置的轻微不稳定性,数字输出的状态可能会持续触发。在这种情况下,可以选择指定滞后值。当并通过滞后值达到PLS位置时,输出状态将被触发。如在本示例中,如果滞后值为10,则输出将在位置110处从低电平变为高电平。当位置下降至90时,将返回到低电平。
重复间隔
可以以指定的间隔持续重复PLS位置。因此如果PLS位置指定为100,例如,重复间隔为2000,则在正方向上,输出状态在100位置上触发,再次在2100,4100,等位置上触发。并且在负方向上,在 -1900, -3900等位置上触发。
重复间隔必须为正,并且必须大于最小和最大PLS位置值之间的绝对值差. 即:
Repetition Interval > abs(PLS_Pos_Max - PLS_Pos_Min)
示例:
- PLS Position values: -300, 100, 200
- Repetition Interval: 2000
- Polarity: 0
输出状态在-300, 100, 200触发,同样在1700 (-300 + 2000), 2100 (100+2000), 2200, 和 3700 (-300 + 2000 + 2000) 等位置触发。 在负方向上输出状态在-1800 (200 - 2000), -1900 (100 - 2000), -2300 (-300 - 2000), -3800等位置触发。
PLS 约束
- PLS的数量不受系统限制。 可以理解为定义的PLS数量与系统性能之间存在直接的权衡。
- 每个PLS定义的PLS位置的数量不受限制。
- 每个轴可以定义多个PLS。
- PLSes以运动总线循环速率扫描
启用和禁用
定义后,禁用PLS(不生成输出模式)。 当PLS被使能时,输出被设置。 输出设置为定义的初始状态。只有当PLS被禁用时,才能更改PLS属性。每个启用的PLS都需要CPU资源。通过禁用未使用的PLS(s)来节省这些资源。 PLSEnable 控制PLS的状态。
MyPLS.PlsEnable = ON | OFF
PLSENABLE查询PLS的状态:
?MyPls.PlsEnable if(MyPLS.PlsEnable = OFF) . . .
或驱动事件:
EventOn MyEvent MyPLS.PlsOutput = ON
PLS 输出状态
查询与PLS关联的数字输出,以查询PLS输出的状态。
例如,假设PLS输出被分配给SYSTEM.DOUT.1。 要确定PLS的输出状态,请查询SYSTEM.DOUT.1的状态:
-->?Sys.Dout.1 0 | 1
示例
Step 1
在Config.Prg或终端中使用COMMON SHARED <PLS name> AS PLS声明PLS。您必须命名PLS,指定驱动PLS的轴,并命名要由PLS控制的输出。例如:
Common Shared MyPLS as PLS A1 System.Dout.1
将MyPLS设置为由连接到SYSTEM.DOUT.1的轴A1驱动的PLS。 输出可以是数字输出(SYSTEM.DOUT.1到DOUT.20)或者可以是模拟输出之一(SYSTEM.VOUT.1到VOUT.32). 在Common Shared as PLS执行后, PLS禁用。 PLS的属性设置为:
- 单个PLS位置存在于0
- 初始输出极性为1
- PLSREPEAT设置为0.
- 滞后设置为0.
只要PLS保持禁用,可以明确设置这些属性。 您可以使用PLSOUTPUT来检查与给定PLS相关联的输出。
Step 2
创建PLS数据结构并定义PLS位置。定义的位置的数量没有明确限制。调用CreatePlsData 创建一个存储n个位置位置数据的数组。该数组的索引从1开始,如果您尝试访问数组边界之外的索引,则会生成错误,例如:
CreatePLSData 4 MyPLS MyPLS.PLSPosition[1] = 1000 MyPLS.PLSPosition[2] = 1100
作为一种简短的形式,您可以使用PPOS代替PlsPosition :
MyPLS.Ppos[3] = 2000 MyPLS.Ppos[4] = 2200
当PLS启用时,您无法更改PLS位置。 位置值必须单调增加。
Step 3
设置极性. PLSPOLARITY默认为OFF, 表示PLS状态在第一个位置后应为OFF 更改PlsPolarity 为ON以反转状态。
MyPLS.PLSPolarity = ON
只有当PLS被禁用时才改变PlsPolarity
Step 4
设置PlsRepeat 。 如果要使PLS重复,请将PLSREPEAT的值设置为非零正数。 例如,要使PLS每10,000个位置单位重复,请输入:
MyPLS.PLSRepeat = 10000
PLSREPEAT默认为0,表示没有重复。 仅在PLS禁用时更改PLSREPEAT。
Step 5
设置PlsHysteresis,如果应用程序需要它。 仅当系统在PLS位置或其附近停止时才需要滞后。 通常,5或10个编码器(转换为位置单位)或2或3个解算器分辨率的PLSHYSTERESIS就足够了。
MyPLS.PLSHysteresis = 0.01
Step 6
启用PLS输入:
MyPLS.PLSEnable = ON
还有一些其他可能需要的PLS功能:
- 改变极性
PLS的默认输出状态为0.通过修改PLSPOLARITY更改此初始状态。
MyPLS.PLSPolarity = 1
更改此设置时必须禁用PLS。
- 查询名称
查询驱动PLS的轴的名称: ? MyPLS.PLSAxisName
返回与PLS(A1)相关联的轴。
- 禁用PLS
禁用PLS,例如: MyPLS.PLSEnable = OFF
您必须禁用PLS才能更改PLS属性。 禁用PLS也有助于节省CPU资源。
- 删除PLS
删除PLS,只有当PLS被禁用且内存中没有任务时才将其从系统中删除。 例如:
DeletePLS MyPLS
命令集
使用变量声明的语法定义PLS。 定义了以下PLS属性:
- PLS 名称
- 轴
- 输出名称
- 一个或多个PLS位置
- 可选的初始输出状态
- 可选重复间隔
- 可选滞后设定