43299members
217682posts

Sample implementation of Airlock door system in Continuum using Plain English

Sample implementation of Airlock door system in Continuum using Plain English

Issue

How can an Airlock door system be implement in Continuum?

Product Line

Andover Continuum

Environment

  • Continuum Cyberstation
  • Continuum Net Controller II
  • Continuum ACX 2 Controller
  • Continuum ACX 4 Controller

Cause

Sample PE program is needed as a general guideline on how to implement an Airlock control system in Continuum.

Resolution

The use case and implementation details are documented in the comment section of the PE program.

AirLockProgDescription.PNG

 

Here is the actual PE code to implement, please note that this PE program is provided as a sample only, to serve as guidelines and proof of concept, considerable changes may be necessary to make the program adequate for your particular application and site. 

 

Numeric Green
Numeric Red
Numeric StrikeTimer

Line INIT
  Green = Unlocked

  Red = Locked

'LOCK ALL 3 DOORS
  PerimDrStriker = Locked
  IntDr1Striker = Locked
  IntDr2Striker = Locked

'MAKE ALL DOORS AVAILABLE FOR ACCESS TO THE AIRLOCK
  PerimeterDoor = Green
  InteriorDoor1 = Green
  InteriorDoor2 = Green

'ALLOW CREDENTIAL ACCESS
  PerimeterDoor DisRdrKpAccess = False
  InteriorDoor1 DisRdrKpAccess = False
  InteriorDoor2 DisRdrKpAccess = False

'ALLOW EXIT REQUESTS
  PerimeterDoor OpenOnExitReqst = True
  InteriorDoor1 OpenOnExitReqst = True
  InteriorDoor2 OpenOnExitReqst = True
  Goto Monitor1

Line Monitor1
  If PerimeterDoor ValidAttempt or PerimeterDoor ExitRequest then 'ACCESS ATTEMPT AT PERIMETER DOOR

    StrikeTimer = PerimeterDoor DoorStrikeTime 'UNLOCK THE DOOR...
    Goto PerimActive 'AND MAKE THE PERIMETER DOOR ACTIVE
  Endif

  If InteriorDoor1 ValidAttempt or InteriorDoor1 ExitRequest then 'ACCESS ATTEMPT AT INTERIOR DOOR1

    StrikeTimer = InteriorDoor1 DoorStrikeTime 'UNLOCK THE DOOR...
    Goto Interior1Active 'AND MAKE THE INTERIOR DOOR1 ACTIVE
  Endif

  If InteriorDoor2 ValidAttempt or InteriorDoor2 ExitRequest then 'ACCESS ATTEMPT AT INTERIOR DOOR2

    StrikeTimer = InteriorDoor2 DoorStrikeTime 'UNLOCK THE DOOR...
    Goto Interior2Active 'AND MAKE THE INTERIOR DOOR2 ACTIVE
  Endif

'CHECK FOR FORCED ENTRY
  If PerimeterDoor DoorSwitch = Opened or InteriorDoor1 DoorSwitch = Opened or InteriorDoor2 DoorSwitch = Opened then Goto AirLockForced

Line AirLockForced
'MUST HANDLE FORCED ENTRY HERE DUE TO VALUE OF DOOR BEING SET TO UNLOCK TO MAKE LED GREEN

  AirLockAlarm = 1 'SEND THE ALARM

'MAKE ALL DOORS UNAVAILABLE
  PerimeterDoor = Red
  InteriorDoor1 = Red
  InteriorDoor2 = Red

  If PerimeterDoor DoorSwitch = Closed and InteriorDoor1 DoorSwitch = Closed and InteriorDoor2 DoorSwitch = Closed then

'FORCED ENTRY CLEAR, RESET THE AIRLOCK
    AirLockAlarm = 0
    Goto INIT
  Endif

Line PerimActive
'ACCESS REQUESTED AT PERIMETER DOOR, DISABLE CREDENTIAL AND REX ACCESS AT THE INTERIOR DOORS

  InteriorDoor1 DisRdrKpAccess = True 'DONT ALLOW CREDENTIAL ACCESS AT THE INTERIOR DOORS

  InteriorDoor2 DisRdrKpAccess = True
  InteriorDoor1 OpenOnExitReqst = False 'DONT EXIT REQUESTS AT THE INTERIOR DOORS
  InteriorDoor2 OpenOnExitReqst = False
  InteriorDoor1 = Red
  InteriorDoor2 = Red

'UNLOCK THE PERIMETER DOOR 
  PerimDrStriker = PerimeterDoor DoorStrikeTime
'WAIT FOR PERSON TO PHYSICALLY OPEN THE DOOR
  If PerimeterDoor DoorSwitch = Opened then Goto PerimInactive
'DOOR NEVER OPENED, RESET AIRLOCK
  If TS > PerimeterDoor DoorStrikeTime then Goto INIT

Line PerimInactive
'HANDLE ACCESS REQUEST WHILE DOOR OPENED, EXTENDED DOOR UNLOCK TIME
  If PerimeterDoor ValidAttempt or PerimeterDoor ExitRequest then PerimDrStriker = (PerimDrStriker + 1)

  If PerimeterDoor DoorSwitch = Closed then Goto INIT
'WE'VE BEEN HERE TOO LONG, SEND ALARM
  If TM > 0 then AirLockAlarm = 2

Line Interior1Active
'ACCESS REQUESTED AT INTERIOR DOOR1, DISABLE CREDENTIAL AND REX ACCESS AT THE PERIMETER DOOR

  PerimeterDoor DisRdrKpAccess = True
  PerimeterDoor OpenOnExitReqst = False
  PerimeterDoor = Red
  InteriorDoor2 = Green

'UNLOCK THE INTERIOR DOOR1
  IntDr1Striker = InteriorDoor1 DoorStrikeTime

'WAIT FOR PERSON TO PHYSICALLY OPEN THE DOOR
  If InteriorDoor1 DoorSwitch = Opened then Goto Interior1Inactiv

'DOOR NEVER OPENED, RESET AIRLOCK
  If TS > InteriorDoor1 DoorStrikeTime then Goto INIT

Line Interior1Inactiv
'HANDLE ACCESS REQUEST WHILE DOOR OPENED, EXTENDED DOOR UNLOCK TIME
  If InteriorDoor1 ValidAttempt or InteriorDoor1 ExitRequest then IntDr1Striker = (IntDr1Striker + 1)

  If InteriorDoor1 DoorSwitch = Closed then Goto INIT
'WE'VE BEEN HERE TOO LONG, SEND ALARM
  If TM > 0 then AirLockAlarm = 3

Line Interior2Active
'ACCESS REQUESTED AT INTERIOR DOOR2, DISABLE CREDENTIAL AND REX ACCESS AT THE PERIMETER DOOR

  PerimeterDoor DisRdrKpAccess = True
  PerimeterDoor OpenOnExitReqst = False
  PerimeterDoor = Red
  InteriorDoor1 = Green

'UNLOCK THE INTERIOR DOOR2
  IntDr2Striker = InteriorDoor2 DoorStrikeTime
'WAIT FOR PERSON TO PHYSICALLY OPEN THE DOOR
  If InteriorDoor2 DoorSwitch = Opened then Goto Interior2Inactiv
'DOOR NEVER OPENED, RESET AIRLOCK
  If TS > InteriorDoor2 DoorStrikeTime then Goto INIT

Line Interior2Inactiv
'HANDLE ACCESS REQUEST WHILE DOOR OPENED, EXTENDED DOOR UNLOCK TIME
  If InteriorDoor2 ValidAttempt or InteriorDoor2 ExitRequest then IntDr2Striker = (IntDr2Striker + 1)
  If InteriorDoor2 DoorSwitch = Closed then Goto INIT
'WE'VE BEEN HERE TOO LONG, SEND ALARM
  If TM > 0 then AirLockAlarm = 4

Line E
  If TS > 30 then Goto INIT

 

 See also attached dump file of program code.

 

Labels (1)
Attachments
No ratings
Contributors