离散 3 态设备 (Discrete 3-State Device, D3SD)

此信息适用于
CompactLogix
5370、
ControlLogix
5570、
Compact GuardLogix
5370、
GuardLogix
5570、
Compact GuardLogix
5380、
CompactLogix
5380、
ControlLogix
5580、
GuardLogix
5580 和 ControlLogix 5590 控制器。
离散 3 态设备 (D3SD) 指令控制有三种可能状态(如快/慢/停或正向/停止/反向)的离散设备。
可用语言
梯形图
此指令不可用于梯形图逻辑中。
功能块
D3SD_FB_avail_V31
结构化文本
D3SD(D3SD_tag)
操作数
结构化文本
操作数
类型
格式
说明
D3SD 标签 (tag)
DISCRETE_3STATE
结构
D3SD 结构
有关结构化文本中表达式语法的详细信息,请参见
结构化文本语法
部分。
功能块
操作数
类型
格式
说明
D3SD 标签 (tag)
DISCRETE_3STATE
结构
D3SD 结构
DISCRETE_3STATE 结构
输入参数
数据类型
说明
EnableIn
BOOL
启用输入。如果为假,指令不会执行,也不会更新输出。
默认值为真。
Prog0Command
BOOL
程序状态 0 命令。此输入用于确定设备处于程序控制模式时的设备状态。如果为真,设备受控进入状态 0。
默认值为假。
Prog1Command
BOOL
程序状态 1 命令。此输入用于确定设备处于程序控制模式时的设备状态。如果为真,设备受控进入状态 1。
默认值为假。
Prog2Command
BOOL
程序状态 2 命令。此输入用于确定设备处于程序控制模式时的设备状态。如果为真,设备受控进入状态 2。
默认值为假。
Oper0Req
BOOL
操作员状态 0 请求。设备处于操作员控制模式时,通过操作员界面设置为真,将设备置为状态 0。
默认值为假。
Oper1Req
BOOL
操作员状态 1 请求。设备处于操作员控制模式时,通过操作员界面设置为真,将设备置为状态 1。
默认值为假。
Oper2Req
BOOL
操作员状态 2 请求。设备处于操作员控制模式时,通过操作员界面设置为真,将设备置为状态 2。
默认值为假。
State0Perm
BOOL
状态 0 选通。除非在手控或超控模式下,否则此输入必须为真才能使设备进入状态 0。如果设备已经处于状态 0,则此输入无效。
默认值为真。
State1Perm
BOOL
状态 1 选通。除非在手控或超控模式下,否则此输入必须为真才能使设备进入状态 1。如果设备已经处于状态 1,则此输入无效。
默认值为真。
State2Perm
BOOL
状态 2 选通。除非在手控或超控模式下,否则此输入必须为真才能使设备进入状态 2。如果设备已经处于状态 2,则此输入无效。
默认值为真。
FB0
BOOL
可供指令使用的第一个反馈输入。
默认值为假。
FB1
BOOL
可供指令使用的第二个反馈输入。
默认值为假。
FB2
BOOL
可供指令使用的第三个反馈输入。
默认值为假。
FB3
BOOL
可供指令使用的第四个反馈输入。
默认值为假。
HandFB0
BOOL
手控反馈状态 0。该输入来自现场手控/关/自动站,用于显示所请求的现场设备状态。为真时,表示请求现场设备进入状态 0;为假时,表示请求现场设备进入其他某种状态。
默认值为假。
HandFB1
BOOL
手控反馈状态 1。该输入来自现场手控/关/自动站,用于显示所请求的现场设备状态。为真时,表示请求现场设备进入状态 1;为假时,表示请求现场设备进入其他某种状态。
默认值为假。
HandFB2
BOOL
手控反馈状态 2。该输入来自现场手控/关/自动站,用于显示所请求的现场设备状态。为真时,表示请求现场设备进入状态 2;为假时,表示请求现场设备进入其他某种状态。
默认值为假。
FaultTime
REAL
故障时间值。以秒为单位配置时间值以使设备达到最新给定的状态。设置 FaultTime = 0 可禁用故障计时器。如果该值无效,该指令会假定该值等于零并置位 Status 中的相应位。
有效值 = 任何 Greater than or equal to 0.0 的浮点数
默认值 = 0.0
FaultAlarmLatch
BOOL
故障报警锁定输入。此参数和 FaultAlarm 同时为真时,将锁定 FaultAlarm。要启用 FaultAlarm,将 FaultAlmUnlatch 设置为真或将 FaultAlarmLatch 设置为假。
默认值为假。
FaultAlmUnLatch
BOOL
故障报警启用输入。在 FaultAlarmLatch 置位时将此输入设置为真可启用 FaultAlarm。指令将该输入设置为假。
默认值为假。
OverrideOnInit
BOOL
初始化时超控请求。如果该位为真,则在指令首次扫描期间,指令将进入操作员控制模式,且 Override 为真,Hand 为假。如果 ProgHandReq 为真,则 Override 设置为假,Hand 设置为真。
默认值为假。
OverrideOnFault
BOOL
故障时超控请求。如果希望设备在发生故障报警时转为超控模式并进入超控状态,将此值设置为真。消除故障报警后,指令进入操作员控制模式。
默认值为假。
Out0State0
BOOL
输出 0 状态 0 输入。该值用于确定设备处于状态 0 时输出 0 的值。
默认值为假。
Out0State1
BOOL
输出 0 状态 1 输入。该值用于确定设备处于状态 1 时 Output0 的值。
默认值为假。
Out0State2
BOOL
输出 0 状态 2 输入。该值用于确定设备处于状态 2 时 Output0 的值。
默认值为假。
Out1State0
BOOL
输出 1 状态 0 输入。该值用于确定设备处于状态 0 时 Output1 的值。
默认值为假。
Out1State1
BOOL
输出 1 状态 1 输入。该值用于确定设备处于状态 1 时 Output1 的值。
默认值为假。
Out1State2
BOOL
输出 1 状态 2 输入。该值用于确定设备处于状态 2 时 Output1 的值。
默认值为假。
Out2State0
BOOL
输出 2 状态 0 输入。该值用于确定设备处于状态 0 时 Output2 的值。
默认值为假。
Out2State1
BOOL
输出 2 状态 1 输入。该值用于确定设备处于状态 1 时 Output2 的值。
默认值为假。
Out2State2
BOOL
输出 2 状态 2 输入。该值用于确定设备处于状态 2 时 Output2 的值。
默认值为假。
OverrideState
DINT
超控状态输入。设置此值来指示处于超控模式时的设备状态。
2 = 设备进入状态 2
1 = 设备应进入状态 1
0 = 设备应进入状态 0
无效值会将 Status 中的相应位置位。
有效值 = 0 至 2
默认值 = 0
FB0State0
BOOL
反馈 0 状态 0 输入。该值用于确定设备处于状态 0 时 FB0 的预期值。
默认值为假。
FB0State1
BOOL
反馈 0 状态 1 输入。该值用于确定设备处于状态 1 时 FB0 的预期值。
默认值为假。
FB0State2
BOOL
反馈 0 状态 2 输入。该值用于确定设备处于状态 2 时 FB0 的预期值。
默认值为假。
FB1State0
BOOL
反馈 1 状态 0 输入。该值用于确定设备处于状态 0 时 FB1 的预期值。
默认值为假。
FB1State1
BOOL
反馈 1 状态 1 输入。该值用于确定设备处于状态 1 时 FB1 的预期值。
默认值为假。
FB1State2
BOOL
反馈 1 状态 2 输入。该值用于确定设备处于状态 2 时 FB1 的预期值。
默认值为假。
FB2State0
BOOL
反馈 2 状态 0 输入。该值用于确定设备处于状态 0 时 FB2 的预期值。
默认值为假。
FB2State1
BOOL
反馈 2 状态 1 输入。该值用于确定设备处于状态 1 时 FB2 的预期值。
默认值为假。
FB2State2
BOOL
反馈 2 状态 2 输入。该值用于确定设备处于状态 2 时 FB2 的预期值。
默认值为假。
FB3State0
BOOL
反馈 3 状态 0 输入。该值用于确定设备处于状态 0 时 FB3 的预期值。
默认值为假。
FB3State1
BOOL
反馈 3 状态 1 输入。该值用于确定设备处于状态 1 时 FB3 的预期值。
默认值为假。
FB3State2
BOOL
反馈 3 状态 2 输入。该值用于确定设备处于状态 2 时 FB3 的预期值。
默认值为假。
ProgProgReq
BOOL
程序发出的程序控制请求。由用户程序设置为真可请求程序控制模式。如果 ProgOperReq 为真,则忽略该值。若此参数保持为真,并且 ProgOperReq 保持为假,会将指令锁定在程序控制模式。
默认值为假。
ProgOperReq
BOOL
程序发出的操作员控制请求。由用户程序设置为真可请求操作员控制模式。若将此参数保持为真,会将该指令锁定在操作员控制模式。
默认值为假。
ProgOverrideReq
BOOL
程序超控模式请求。由用户程序设置为真可请求进入超控模式。如果 ProgHandReq 为真,则忽略该值。
默认值为假。
ProgHandReq
BOOL
程序手控模式请求。由用户程序设置为真可请求进入手控模式。
默认值为假。
OperProgReq
BOOL
操作员发出的程序控制请求。由操作员界面设置为真以请求程序控制模式。指令将该输入设置为假。
默认值为假。
OperOperReq
BOOL
操作员发出的操作员控制请求。由操作员界面设置为真可请求操作员控制模式。指令将该输入设置为假。
默认值为假。
ProgValueReset
BOOL
将程序控制值复位。该参数为真时,每次执行指令时,所有程序请求输入都将设置为假。
默认值为假。
输出参数
数据类型
说明
EnableOut
BOOL
指示指令是否处于启用状态。
Out0
BOOL
指令的第一个输出。
Out1
BOOL
指令的第二个输出。
Out2
BOOL
指令的第三个输出。
Device0State
BOOL
设备状态 0 输出。设备受控进入状态 0 且反馈表明设备确实处于状态 0 时为真。
Device1State
BOOL
设备状态 1 输出。设备受控进入状态 1 且反馈表明设备确实处于状态 1 时为真。
Device2State
BOOL
设备状态 2 输出。设备受控进入状态 2 且反馈表明设备确实处于状态 2 时为真。
Command0Status
BOOL
设备状态 0 命令状态。设备受控进入状态 0 时为真;设备受控进入其他状态时为假。
Command1Status
BOOL
设备状态 1 命令状态。设备受控进入状态 1 时为真;设备受控进入其他状态时为假。
Command2Status
BOOL
设备状态 2 命令状态。设备受控进入状态 2 时为真;设备受控进入其他状态时为假。
FaultAlarm
BOOL
故障报警输出。如果设备受控进入新状态,但经过 FaultTime 后反馈没有表明设备确实达到新状态,则此参数为真。此外,如果在达到给定状态后,反馈突然表明设备不再处于给定状态,该参数也会设置为真。
ModeAlarm
BOOL
模式报警输出。如果设备处于操作员控制模式,ProgxCommand 输入请求了不同于操作员当前给定的状态,此参数为真。此报警旨在提醒已将设备保留为操作员控制模式。
ProgOper
BOOL
程序/操作员控制指示器。在程序控制模式下为真。在操作员控制模式下为假。
Override
BOOL
超控模式。当设备处于超控模式时为真。
Hand
BOOL
手控模式。当设备处于手控模式时为真。
Status
DINT
功能块的状态。
InstructFault (Status.0)
BOOL
该指令检测到以下执行错误之一。这不是轻微或严重的控制器错误。检查其他状态位以确定发生的情况。
FaultTimeInv (Status.1)
BOOL
FaultTime 值无效。指令将设置 FaultTime = 0。
OverrideStateInv (Status.2)
BOOL
超控值超出范围。它可以防止指令进入超控状态。
ProgCommandInv (Status.3)
BOOL
多个程序状态命令位同时置位。请参见“程序控制模式下的给定状态”部分。
OperReqInv (Status.4)
BOOL
多个操作员状态请求位同时置位。请参见“程序控制模式下的给定状态”部分。
HandCommandInv (Status.5)
BOOL
多个手控反馈状态请求位同时置位。
说明
D3SD 指令控制有三种可能状态(如快/慢/停或正向/停止/反向)的离散设备。具备这种特性的典型离散设备包括进料系统和可逆电机。
影响数学状态标志
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参阅 通用属性
执行
功能块
条件/状态
执行的操作
预扫描
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为假
EnableIn 和 EnableOut 位设置为假。
Tag.EnableIn 为真
EnableIn 和 EnableOut 位设置为真。
指令执行
指令首次运行
将 ProgOper 设置为操作员模式。
将 Command0Status 设置为真。
将 Command1Status 设置为假。
将 Command2Status 设置为假。
指令首次扫描
故障计时器清零。
ModeAlarm 设置为假。
将所有操作员请求输入清零。
如果 ProgValueReset 为真,则将所有程序请求输入清零。
当 OverrideOnInit 为真时,ProgOper 设置为假(操作员控制模式)。
如果 ProgHandReq 为假并且 OverrideOnInit 为真,则 Hand 设置为假且 Override 设为真(超控模式)。
如果 ProgHandReq 为真,则 Hand 设为真且 Override 设置为假(手控模式)。
后扫描
EnableIn 和 EnableOut 位设置为假。
结构化文本
在结构化文本中,EnableIn 在普通扫描期间始终为真。因此,如果指令处于由逻辑激活的控制路径中,指令将会执行。
条件/状态
执行的操作
预扫描
请参见“功能块”表中的“预扫描”行。
正常执行
请参见“功能块”表中的“Tag.EnableIn 为真”行。
后扫描
请参见“功能块”表中的“后扫描”行。
示例
D3SD 指令通常用于控制三态设备,如快/慢/关进料系统。在此示例中,D3SD 指令用于控制由一对电磁阀组成的进料系统,进而控制将植物油加入批处理槽这一过程。其中一个阀门位于连接到批处理槽中的大口径进料管上,另一个阀门则并排放置在小口径进料管上。最初添加植物油时,D3SD 指令受控进入快速进料状态(状态 2),此时两个阀门均打开。当添加的植物油接近目标量时,D3SD 指令受控进入慢速进料状态(状态 1),即“大阀门”关闭、“小阀门”保持打开转改。达到目标油量后,D3SD 指令受控进入停止状态(状态 0)并且关闭上述两个阀门。只要 D3SD 指令处于程序控制模式,这两个阀门就会根据 CloseOilFeed、SlowOilFeed 和 FastOilFeed 输入的值相应地打开。操作员也可以根据需要对进料系统采取操作员控制模式。本例中的电磁阀配有限位开关,用于指示阀门何时完全关闭或打开。这些开关与 FB0、FB1、FB2 和 FB3 反馈输入相连。因此,如果电磁阀未在组态的 FaultTime 内达到给定状态,D3SD 指令会生成 FaultAlarm。
功能块
D3SD_FB_ex_v31
结构化文本
OilFeedController.Prog0Command := ClosedOilFeed;
OilFeedController.Prog1Command := SlowOilFeed;
OilFeedController.Prog2Command := FastOilFeed;
OilFeedController.FB0 := SmallOilValveClosed;
OilFeedController.FB1 := SmallOilValveOpened;
OilFeedController.FB2 := LargeOilValveClosed;
OilFeedController.FB3 := LargeOilValveOpened;
D3SD(OilFeedController);
SmallOilValve := OilFeedController.Out0;
LargeOilValve := OilFeedController.Out1;
在程序控制与操作员控制之间切换
下图显示了 D3SD 指令在程序控制与操作员控制模式之间进行切换的方式。
D3SD Switch between program and operator
(1) 当 ProgOperReq 为真时,指令保持在操作员控制模式。
程序控制模式下的给定状态
下表所示为 D3SD 指令在程序控制模式下的工作情况。
Prog0 Command
Prog1 命令
Prog2 命令
State0
Perm
State1
Perm
State2
Perm
说明
真/假
真/假
Command0Status 设置为假
Command1Status 设置为假
Command2Status 设置为真
真/假
真/假
Command0Status 设置为假
Command1Status 设置为真
Command2Status 设置为假
真/假
真/假
Command0Status 设置为真
Command1Status 设置为假
Command2Status 设置为假
如果多个程序命令输入为真:
  • 指令会将 Status 中的相应位置位
  • 如果 Override 和 Hand 设置为假,指令将保持前一状态。
操作员控制模式下的给定状态
下表所示为 D3SD 指令在操作员控制模式下的工作情况。
Oper0Req
Oper1Req
Oper2Req
State0 Perm
State1 Perm
State2 Perm
说明
真/假
真/假
Command0Status 设置为假
Command1Status 设置为假
Command2Status 设置为真
真/假
真/假
Command0Status 设置为假
Command1Status 设置为真
Command2Status 设置为假
真/假
真/假
Command0Status 设置为真
Command1Status 设置为假
Command2Status 设置为假
如果多个操作员命令输入为真:
  • 指令会将 Status 中的相应位置位
  • 如果 Override 和 Hand 设置为假,指令将保持前一状态。
每次执行指令后,指令都会执行以下操作:
  • 将所有操作员请求输入清零
  • 如果 ProgValueReset 为真,则将所有的程序请求输入设置为假。
手控模式或超控模式
下表说明 D3SD 指令确定以手控模式还是超控模式工作的方式。
ProgHandReq
ProgOverrideReq
FaultAlarm 和 OverrideOnFault
说明
真/假
真/假
手控模式
Hand 设置为 true
Override 清除为 false
真/假
超控模式
Hand 清除为 false
Override 设置为 true
真/假
超控模式
Hand 清除为 false
Override 设置为 true
当 Override 置位时,超控模式的优先级将高于程序控制和操作员控制模式。下表说明了超控模式影响给定状态的方式。
覆盖
超控状态
说明
2
Command0Status 设置为假
Command1Status 设置为假
Command2Status 设置为真
1
Command0Status 设置为假
Command1Status 设置为真
Command2Status 设置为假
0
Command0Status 设置为真
Command1Status 设置为假
Command2Status 设置为假
如果 OverrideState 无效,指令会将 Status 中的相应位置位,并且不会进入超控状态。
当 Hand 为真时,手控模式的优先级将高于程序控制和操作员控制模式。下表说明了手控模式影响给定状态的方式。
手控
HandFB0
HandFB1
HandFB2
说明
Command0Status 设置为假
Command1Status 设置为假
Command2Status 设置为真
Command0Status 设置为假
Command1Status 设置为真
Command2Status 设置为假
Command0Status 设置为真
Command1Status 设置为假
Command2Status 设置为假
如果多个 HandFB 输入为真,指令会将 Status 中的相应位置位;如果 Hand 为真,指令将保持前一状态。
输出状态
D3SD 的输出状态取决于受控状态的状态。
CommandStatus
输出状态
Command0Status 为真
Out0 = Out0State0
Out1 = Out1State0
Out2 = Out2State0
Command0Status 为真且
FB0 = FB0State0 且
FB1 = FB1State0 且
FB2 = FB2State0 且
FB3 = FB3State0
停止故障计时器并将其清零。
Device0State 设置为真
Command1Status 为真
Out0 = Out0State1
Out1 = Out1State1
Out2 = Out2State1
Command1Status 为真
FB0 = FB0State1 且
FB1 = FB1State1 且
FB2 = FB2State1 且
FB3 = FB3State1
停止故障计时器并将其清零。
Device1State 设置为真
Command2Status 为真
Out0 = Out0State2
Out1 = Out1State2
Out2 = Out2State2
Command2Status 为真且
FB0 = FB0State2 且
FB1 = FB1State2 且
FB2 = FB2State2 且
FB3 = FB3State2
停止故障计时器并将其清零。
Device2State 设置为真
故障报警条件
D3SD 指令将检查以下故障报警条件。
产生故障报警条件的原因
规则
设备状态受控进行更改,但反馈并未指示在 FaultTime 内确实达到目标状态
当 Command0Status
n
Not equal to sign
Command0Status
n-1
或 Command1Status
n
Not equal to sign Command1Status
n-1
或 Command2Status
n
Not equal to sign Command2Status
n-1
时启动故障计时器
当故障计时器计时完成且 FaultTime > 0.0 时,将 FaultAlarm 置位
设备在未受到控制的情况下意外退出某个状态(根据反馈)
当故障计时器未计时且满足以下任一条件时,将 FaultAlarm 设置为真:
Command0Status 为真且 Device0State 为假
Command1Status 为真且 Device1State 为假
Command2Status 为真且 Device2State 为假
如果不存在任何故障,则满足以下任一条件后,FaultAlarm 将设置为假:
  • Command0Status 为真且 Device0State 为真
  • Command1Status 为真且 Device1State 为真
  • Command2Status 为真且 Device2State 为真
  • FaultTime Less than or equal to 0
当 FaultAlarmLatch 为真时,无法将 FaultAlarm 设置为假,除非 FaultAlmUnlatch 为真且不存在任何故障。
模式报警条件
模式报警可提醒操作员已将设备置于操作员控制模式。仅当程序处于操作员控制下,尝试将设备状态从操作员的给定状态更改为其他状态时,模式报警才会启用。如果操作员将设备置于操作员控制模式并更改状态,报警不会启用。D3SD 指令将使用以下规则检查模式报警条件。
ModeAlarm 为
条件
Prog2Command Not equal to sign Prog2Command
n-1
Prog2Command Not equal to sign Command2Status
Prog1Command Not equal to sign Prog1Command
n-1
Prog1Command Not equal to sign Command1Status
Prog0Command Not equal to sign Prog1Command
n-1
Prog0Command Not equal to sign Command0Status
Prog2Command = Command2Status 和
Prog1Command = Command1Status 且
Prog0Command = Command0Status 或
设备处于超控、手控或程序控制模式
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal