存储高速计数器和脉冲输出控制代码的特殊数据寄存器,可通过系统变量sys_wHscOrPulseControlCode访问。(系统变量sys_wHscOrPulseControlCode对应于特殊数据寄存器DT90052。)
通过脉冲输出控制代码执行的操作:
若要在接近原点位置时减速运动,请指定近原点输入,并将存储脉冲输出控制代码(sys_wHscOrPulseControlCode)的特殊数据寄存器的位4设置为TRUE,然后再次重设回FALSE。保留近原点位。将此位设置为TRUE后立即将其设置为FALSE,以便能够在原点返回时再次设置近原点输入。
通过将存储脉冲输出控制代码(sys_wHscOrPulseControlCode)的数据寄存器的位3设置为TRUE,脉冲输出将停止。应使用脉冲输出指令在每个程序中提供强制停止的可能性。将位3复位为FALSE可继续脉冲输出。
脉冲输出
经过值
1
当控制代码的第1位设置为TRUE时,禁止计数且经过值保持为其当前值。当第1位复位至FALSE时,计数继续。
脉冲输出
经过值
脉冲输出控制代码的第0位(软件复位)
当控制代码的第0位设置为TRUE时,执行软件复位且经过值设置为0。经过值保持为值0,直到第0位复位至FALSE为止。
若要取消执行脉冲输出指令,请将存储脉冲输出控制代码(sys_wHscOrPulseControlCode)的数据寄存器的第2位设置为TRUE。然后脉冲输出控制标志将变为FALSE.若要重新允许执行指令,请将位2复位为FALSE。
控制代码的第0~15位以4个为一组进行分配。每组中的位设置由十六进制数表示(例如00020000 0000 1001 = 16#2009)。
组 |
(1) |
通道编号(通道n:16#n) |
|
组 |
0(固定) |
||
组 |
(2) |
近原点输入(第4位) |
|
0: FALSE |
1: TRUE |
||
组 |
(3) |
脉冲输出(第3位) |
|
0:继续 |
1:停止 |
||
(4) |
0(第2位,固定) |
||
(5) |
计数(第1位) |
||
0:允许 |
1:禁止 |
||
(6) |
将经过值复位至0(第0位) |
||
0:否 |
1:是 |
示例:16#2009
组 |
数值 |
描述 |
|
---|---|---|---|
|
2 |
通道编号: 2 |
|
|
0 |
(固定) |
|
|
0 |
近原点输入: FALSE |
|
|
9 |
十六进制9对应于二进制1001 |
|
脉冲输出:停止(第3位) |
1 |
||
(第2位,固定) |
0 |
||
计数:允许(第1位) |
0 |
||
将经过值复位至0:是(第0位) |
1 |
组 |
(1) |
通道编号(通道n:16#n) |
|
组 |
(2) |
1(固定) |
|
组 |
(3) |
近原点输入(第4位)(参见摘要) |
|
0: FALSE |
1: TRUE |
||
组 |
(4) |
脉冲输出(第3位) |
|
0:继续 |
1:停止 |
||
(5) |
计数(第1位) |
||
0:允许 |
1:禁止 |
||
(6) |
将经过值复位至0(第0位) |
||
0:否 |
1:是 |
示例:16#2109
组 |
数值 |
描述 |
|
---|---|---|---|
|
2 |
通道编号: 2 |
|
|
1 |
(固定) |
|
|
0 |
近原点输入: FALSE |
|
|
9 |
十六进制9对应于二进制1001 |
|
脉冲输出:停止(第3位) |
1 |
||
(第2位,固定) |
0 |
||
计数:允许(第1位) |
0 |
||
将经过值复位至0:是(第0位) |
1 |
控制代码的第0~15位以4个为一组进行分配。每组中的位设置由十六进制数表示(例如00020001 0000 1001 = 16#2109)。
组 |
(1) |
通道编号(通道n:16#n) |
|
组 |
1(固定) |
||
组 |
(2) |
位置控制开始请求 |
|
0:禁用 |
1:启用 |
||
(3) |
减速停止请求 |
||
0:禁用 |
1:启用 |
||
(4) |
近原点输入(第4位)(参见摘要) |
||
0: FALSE |
1: TRUE |
||
组 |
(5) |
脉冲输出(第3位) |
|
0:继续 |
1:停止 |
||
(6) |
取消脉冲输出控制(第2位) |
||
0:继续 |
1:停止 |
||
(7) |
计数(第1位) |
||
0:允许 |
1:禁止 |
||
(8) |
将经过值复位至0(第0位) |
||
0:否 |
1:是 |
示例:16#2109
组 |
数值 |
描述 |
|
---|---|---|---|
|
2 |
通道编号: 2 |
|
|
1 |
(固定) |
|
|
0 |
位置控制开始请求:禁用 |
|
减速停止请求:禁用 |
|||
近原点输入: FALSE |
|||
|
9 |
十六进制9对应于二进制1001 |
|
脉冲输出:停止(第3位) |
1 |
||
取消脉冲输出控制(第2位) |
0 |
||
计数:允许(第1位) |
0 |
||
将经过值复位至0:是(第0位) |
1 |
控制代码的第0-15位以4个为一组分配,每个组包含一个通道的设置。每组中的位设置由十六进制数表示(例如0000 0000 1001 0000 = 16#90)。
组 |
|
|
通道 |
1 |
0 |
0:继续
1:停止
0: FALSE
1: TRUE
0:允许
1:禁止
0:否
1:是
示例:16#90
组 |
数值 |
描述 |
|
---|---|---|---|
|
9 |
通道编号: 1 十六进制9对应于二进制1001 |
|
脉冲输出:停止(第3位) |
1 |
||
近原点输入:FALSE(第2位) |
0 |
||
计数:允许(第1位) |
0 |
||
将经过值复位至0:是(第0位) |
1 |
||
|
0 |
– |
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
bEnableNearHome: BOOL:=FALSE;
END_VAR
VAR CONSTANT
PLS_CH2_ENABLE_NEAR_HOME: WORD:=16#2010;
(*Enables near home input for channel 2*)
PLS_CH2_CONTINUE: WORD:=16#2000;
(*Disables near home input for channel 2
and starts deceleration*)
END_VAR
原点返回操作期间对通道2启用近原点输入。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,PLS_CH2_ENABLE_NEAR_HOME,20,2,22,4,);
B(B_VARIN,,PLS_CH2_CONTINUE,20,6,22,8,);
B(B_F,E_MOVE!,Instance,22,0,28,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,2,30,4,);
B(B_F,E_MOVE!,Instance,22,4,28,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,6,30,8,);
B(B_CONTACT,,bEnableNearHome,4,1,6,3,R);
L(7,2,7,6);
L(1,2,4,2);
L(6,2,22,2);
L(7,6,22,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bEnableNearHome) then
PLS_CH2_ENABLE_NEAR_HOME:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。
对通道0执行脉冲输出的强制停止。
if DF(bStopPulseOutput) then
PLS_CH2_STOP_PULSE_OUTPUT:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
执行强制停止可能会导致PLC输出侧的经过值与电机输入侧的经过值不同。因此,在脉冲输出已停止后,必须执行原点返回。