Project: Gas3
VFSM type: CMD(predefined vfsm)
Object name: Flow1:MyCmd
Object name: Flow2:MyCmd
Object name: Flow3:MyCmd
Object name: Gas:MyCmd
Object name: Press:MyCmd
VFSM type: TI(predefined vfsm)
Object name: Flow1:Ti:Busy
Object name: Flow1:Ti:Opening
Object name: Flow2:Ti:Busy
Object name: Flow2:Ti:Opening
Object name: Flow3:Ti:Busy
Object name: Flow3:Ti:Opening
Object name: Press:Ti:Busy
VFSM type: AL(predefined vfsm)
Object name: Flow1:Al:OpeningError
Object name: Flow1:Al:RegulatingError
Object name: Flow2:Al:OpeningError
Object name: Flow2:Al:RegulatingError
Object name: Flow3:Al:OpeningError
Object name: Flow3:Al:RegulatingError
Object name: Press:Al:PressureNotOk
VFSM type: DO(predefined vfsm)
Object name: Flow1:Do:FlowValve
Object name: Flow1:Do:Regulating
Object name: Flow2:Do:FlowValve
Object name: Flow2:Do:Regulating
Object name: Flow3:Do:FlowValve
Object name: Flow3:Do:Regulating
Object name: Press:Do:PressureOk
VFSM type: NO(predefined vfsm)
Object name: Flow1:No:FlowSetValue
Object name: Flow2:No:FlowSetValue
Object name: Flow3:No:FlowSetValue
VFSM type: NI(predefined vfsm)
Object name: Flow1:Ni:ActualFlowValue
Object name: Flow2:Ni:ActualFlowValue
Object name: Flow3:Ni:ActualFlowValue
Object name: Press:Ni:ActualPressureValue
VFSM type: SWIP(predefined vfsm)
Object name: Flow1:Swip:FlowRange
Object name: Flow2:Swip:FlowRange
Object name: Flow3:Swip:FlowRange
Object name: Press:Swip:Pressure
VFSM type: PAR(predefined vfsm)
Object name: Flow1:Par:FlowSetValue
Object name: Flow2:Par:FlowSetValue
Object name: Flow3:Par:FlowSetValue
VFSM type: CNT(predefined vfsm)
Object name: Flow1:Cnt:FlowRangeExceeds
Object name: Flow2:Cnt:FlowRangeExceeds
Object name: Flow3:Cnt:FlowRangeExceeds
VFSM type: Flow(user vfsm)
Flow
-------
Flow controls a gas flow attenuator. The Flow state machine accepts commands (numbers) and sets an analog signal Ao and a digital signal Do. As a feedback from the attenuator the state machine receives the actual gas flow values as an analog signal Ai and a digital signal Di indicating the attenuator position (open/closed). Three commands determine attenuator operations:
1: open the gas flow by setting the High value of the digital output Do,
2: close the gas flow by setting the Low value of the digital output Do,
3: set the gas flow to the value determined by the numerical output Ao.
Opening the flow valve is supervised by a timer TimO. If the valve does not open before the TimO timer expires an alarm AlaO is generated.
The gas flow actual value is reached some time after setting the gas flow value and it is supervised by a timer TimR. If the gas flow value does not reach the set value before the TimR timer expires an alarm AlaR is generated.
The actual gas flow is measured and its value delivered as an analog input signal Ai to the control system. Normally, it is required that the flow value stays within a certain limits. If the flow value exceeds the required range the state machine should after some delay issue an alarm and count this event. If it happens more than a certain number the state machine should issue immediately the alarm if the flow value exceeds the range. This last situation signalled to a Master by a state FlowNotOK.
Prefix: FLO
Object name: Flow1
Object name: Flow2
Object name: Flow3
IOid name: MyCmd
(type: CMD-IN)
-->Virtual Input: CmdClose
(2)
-->Virtual Input: CmdOpen
(1)
-->Virtual Input: CmdRegulate
(3)
IOid name: TimB
(type: TI)
-->Virtual Input: TimB_OVER
(OVER)
-->Virtual Output: TimB_ResetStart
(ResetStart)
-->Virtual Output: TimB_Stop
(Stop)
IOid name: TimO
(type: TI)
-->Virtual Input: TimO_OVER
(OVER)
-->Virtual Output: TimO_ResetStart
(ResetStart)
-->Virtual Output: TimO_Stop
(Stop)
IOid name: AlaO
(type: AL)
-->Virtual Output: AlaO_Coming
(Coming)
-->Virtual Output: AlaO_Going
(Going)
IOid name: AlaR
(type: AL)
-->Virtual Output: AlaF_Coming
(Coming)
-->Virtual Output: AlaF_Going
(Going)
IOid name: DoRegulating
(type: DO)
-->Virtual Output: BadFlow
(Low)
-->Virtual Output: RegulatingFlow
(High)
IOid name: DoValve
(type: DO)
-->Virtual Output: CloseFlow
(Low)
-->Virtual Output: OpenFlow
(High)
IOid name: Ao
(type: NO)
-->Virtual Output: ResetFlowValue
(Off)
-->Virtual Output: SetFlowValue
(On)
IOid name: Ai
(type: NI)
IOid name: SwipF
(type: SWIP)
-->Virtual Input: FlowControl_OFF
(OFF)
-->Virtual Input: Flow_HIGH
(HIGH)
-->Virtual Input: Flow_IN
(IN)
-->Virtual Input: Flow_LOW
(LOW)
-->Virtual Input: NOT_Flow_IN
(~IN)
-->Virtual Output: FlowSupervision_Off
(Off)
-->Virtual Output: FlowSupervision_On
(On)
IOid name: Cnt
(type: CNT)
-->Virtual Input: Cnt_OVER
(OVER)
-->Virtual Output: Cnt_Inc
(Inc)
-->Virtual Output: Cnt_ResetStart
(ResetStart)
State transition table, state '
Init
':
State transition table, state '
Busy
':
State transition table, state '
FlowNotOK
':
State transition table, state '
Regulating
':
State transition table, state '
Standby
':
State transition table, state '
Closing
':
State transition table, state '
Opening
':
State transition table, state '
Open
':
Total number of states: 8
VFSM type: Press(user vfsm)
Press
--------
PRES state machine does not perform any true control - it does not have any output like Do or No. It rather supervisers the pressure and represents the result to the Master with its state.
The actual pressure value delived by numerical input Ai is controlled by a switchpoint SwipPress and by a Timer. If the measurement is on the timer is started. If the timer expires before the pressure (Ai) reaches the required range Press signals the bad pressure with it state and issues an alarm. If the pressure returns to the required value Press signals it with its state. Thus, during measurement Press changes among states: Busy, PressOK and BadPress signalling to the Master the pressure value.
Prefix: PRE
Object name: Press
IOid name: MyCmd
(type: CMD-IN)
-->Virtual Input: Cmd_Disable
(2)
-->Virtual Input: Cmd_Enable
(1)
IOid name: Timer
(type: TI)
-->Virtual Input: Timer_OVER
(OVER)
-->Virtual Output: Timer_ResetStart
(ResetStart)
-->Virtual Output: Timer_Stop
(Stop)
IOid name: Alarm
(type: AL)
-->Virtual Output: Alarm_Coming
(Coming)
-->Virtual Output: Alarm_Going
(Going)
IOid name: Do
(type: DO)
-->Virtual Output: Di_PressureNotOk
(Low)
-->Virtual Output: Di_PressureOk
(High)
IOid name: Ai
(type: NI)
IOid name: SwipPress
(type: SWIP)
-->Virtual Input: NOT_SwipPress_IN
(~IN)
-->Virtual Input: SwipPress_IN
(IN)
-->Virtual Output: SwipPress_Off
(Off)
-->Virtual Output: SwipPress_On
(On)
State transition table, state '
Init
':
State transition table, state '
Off
':
State transition table, state '
Busy
':
State transition table, state '
PressOK
':
State transition table, state '
BadPress
':
Total number of states: 5
VFSM type: Gas3(user vfsm)
Gas
------
The state machine controls a gas inlet of a vacuum chamber. It does not do it directly but is a Master of two Slave state machines: Flow and Press which effectively control the hardware. Gas "sees" only the two state machines and coordinates their activity.
The Press state machine represents through its state the pressure value. The Press state values interesting for Gas are: Off, BadPress and PressOK.
The Flow state machine represents through its state the gas flow value. The Flow state values interesting for Gas are: Busy, Regulating and Standby.
If Press is in the state PressOK and Flow in the state Regulating Gas should be in the state OK which signals the required situation in the control system.
Gas controls the Slaves by sending them commands: Close/Regulate to Flow and Disable/Enable to Press.
Prefix: GAS
Object name: Gas3
IOid name: MyCmd
(type: CMD-IN)
-->Virtual Input: MyCmd_Off
(1)
-->Virtual Input: MyCmd_On
(2)
-->Virtual Output: MyCmd_Clear
(0)
IOid name: Flow1
(type: VFSM)
flow
-->Virtual Input: Flow1_Regulating
(
Regulating
)
-->Virtual Input: Flow1_Standby
(
Standby
)
-->Virtual Input: NOT_Flow1_Regulating
(
~Regulating
)
IOid name: Flow2
(type: VFSM)
flow
-->Virtual Input: Flow2_Regulating
(
Regulating
)
-->Virtual Input: Flow2_Standby
(
Standby
)
-->Virtual Input: NOT_Flow2_Regulating
(
~Regulating
)
IOid name: Flow3
(type: VFSM)
flow
-->Virtual Input: Flow3_Regulating
(
Regulating
)
-->Virtual Input: Flow3_Standby
(
Standby
)
-->Virtual Input: NOT_Flow3_Regulating
(
~Regulating
)
IOid name: Press
(type: VFSM)
press
-->Virtual Input: Press_BadPress
(
BadPress
)
-->Virtual Input: Press_Off
(
Off
)
-->Virtual Input: Press_PressOK
(
PressOK
)
IOid name: Flow1Cmd
(type: CMD-OUT)
flow
-->Virtual Output: Flow1Cmd_Close
(2)
-->Virtual Output: Flow1Cmd_Regulate
(3)
IOid name: Flow2Cmd
(type: CMD-OUT)
flow
-->Virtual Output: Flow2Cmd_Close
(2)
-->Virtual Output: Flow2Cmd_Regulate
(3)
IOid name: Flow3Cmd
(type: CMD-OUT)
flow
-->Virtual Output: Flow3Cmd_Close
(2)
-->Virtual Output: Flow3Cmd_Regulate
(3)
IOid name: PressCmd
(type: CMD-OUT)
press
-->Virtual Output: PressCmd_Disable
(2)
-->Virtual Output: PressCmd_Enable
(1)
State transition table, state '
Init
':
State transition table, state '
OffBusy
':
State transition table, state '
OK
':
State transition table, state '
Off
':
State transition table, state '
OnBusy
':
State transition table, state '
On
':
Total number of states: 6
VFSM type: Ni4(unit)
Prefix: NI4
Object name: NI4_Unit5
IOid name: Ni0
(type: NI)
IOid name: Ni1
(type: NI)
IOid name: Ni2
(type: NI)
IOid name: Ni3
(type: NI)
VFSM type: No4(unit)
Prefix: NO4
Object name: NO4_Unit7
IOid name: No0
(type: NO)
IOid name: No1
(type: NO)
IOid name: No2
(type: NO)
IOid name: No3
(type: NO)
VFSM type: DO8(unit)
Prefix: DOU
Object name: DO8_Unit3
IOid name: Do0
(type: DO)
IOid name: Do1
(type: DO)
IOid name: Do2
(type: DO)
IOid name: Do3
(type: DO)
IOid name: Do4
(type: DO)
IOid name: Do5
(type: DO)
IOid name: Do6
(type: DO)
IOid name: Do7
(type: DO)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||