Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Notifications
Login / Register
Community
Community
Notifications
close
  • Forums
  • Knowledge Center
  • Events & Webinars
  • Ideas
  • Blogs
Help
Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Login / Register
Sustainability
Sustainability

We Value Your Feedback!
Could you please spare a few minutes to share your thoughts on Cloud Connected vs On-Premise Services. Your feedback can help us shape the future of services.
Learn more about the survey or Click here to Launch the survey
Schneider Electric Services Innovation Team!

Pre-entry anti-passback implementation in Continuum using Plain English program

Building Automation Knowledge Base

Schneider Electric Building Automation Knowledge Base is a self-service resource to answer all your questions about EcoStruxure Building suite, Andover Continuum, Satchwell, TAC…

cancel
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Home
  • Schneider Electric Community
  • Knowledge Center
  • Building Automation Knowledge Base
  • Pre-entry anti-passback implementation in Continuum using Plain English program
Options
  • Bookmark
  • Subscribe
  • Email to a Friend
  • Printer Friendly Page
  • Report Inappropriate Content
Invite a Co-worker
Send a co-worker an invite to the portal.Just enter their email address and we'll connect them to register. After joining, they will belong to the same company.
You have entered an invalid email address. Please re-enter the email address.
This co-worker has already been invited to the Exchange portal. Please invite another co-worker.
Please enter email address
Send Invite Cancel
Invitation Sent
Your invitation was sent.Thanks for sharing Exchange with your co-worker.
Send New Invite Close

Related Forums

  • Intelligent Devices Forum

Previous Next
Contributors
  • RandyDavis
    RandyDavis
  • AbeMeran
    AbeMeran

Invite a Colleague

Found this content useful? Share it with a Colleague!

Invite a Colleague Invite
Back to Building Automation Knowledge Base
Options
  • Bookmark
  • Subscribe
  • Email to a Friend
  • Printer Friendly Page
  • Report Inappropriate Content
0 Likes
896 Views

Link copied. Please paste this link to share this article on your social media post.

Trying to translate this page to your language?
Select your language from the translate dropdown in the upper right. arrow
Translate to: English
  • (Français) French
  • (Deutsche) German
  • (Italiano) Italian
  • (Português) Portuguese
  • (Русский) Russian
  • (Español) Spanish

Pre-entry anti-passback implementation in Continuum using Plain English program

Captain AbeMeran Captain
‎2020-11-30 06:21 AM

Last Updated: Guinan RandyDavis Guinan ‎2020-11-30 06:24 AM

Issue

Implementing a pre-entry access card anti-passback using Plain English program

Product Line

Andover Continuum

Environment

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

Cause

The anti-passback implementation in Continuum engages when the credential holder enters the area as detected by the door switch/contact. (if no door switch is configured, then the credential holder is considered to have entered the area immediately after access has been granted by the system)

When doors are located in close proximity to each other, as is the case with a bank of turnstiles, for example, the built-in anti-passback scheme is easily defeated as a cardholder is able to unlock multiple nearby turnstiles before triggering the door contact and engaging the built-in anti-passback functionality.

Resolution

The simplest solution to the issue described above is to configure the door objects WITHOUT a door switch/contact, this, however, is not always possible depending on on-site requirements.

A second solution is to take control of the doors using Plain English.

The solution presented here is for a bank of three turnstiles, (A, B, and C), it uses a PE program per turnstile. The solution can easily be adapted for a bank of less or more turnstiles.

BankOfTurnstiles.PNG

NOTE:

The PE programming here is provided as a sample, for guideline purposes only, the programs are not intended as a complete solution, significant modifications may be required for site deployment.

Program code for door/turnstile A

'This program implements a pre-entry antipassback strategy to prevent a credentail holder

'from granting access at multiple access points (i.e turnstiles) that are physically located in close proximity to each other.

'|                            |
' __/-\_______/-\_______/-\___
' |                           |
' |       Main Lobby          |
' |       Turnstiles          |
' |                           |
' |_____X______X______X______ |
'       ^      ^      ^
'       A      B      C

'OPERATION
'Upon detecting a Valid Attempt at say turnstile A, the program will deny access to the card used at turnstiles B and C 
'until one of following two conditions takes place:
'1-The person attempting access goes thru turnstile A as detected by the door contact. (this activates the regular
' built-in antipassback functionality if engaged)
'2-The door strike time at turnstile A expires, and the system re-locks turnstile A
'
'Each turnstile requires its own program, the programs will be identical except for the  'initialization line which specifies which objects the program uses

'Program written for 3 turnstiles, can be easily modified for 2 or for more than 3
'
'11/30/2020 v1.0 SE PSS 101010111110  **THIS PROGRAM PROVIDED FOR SAMPLE AND GUIDELINES PURPOSES ONLY**
'Program is LOOPING/AUTOSTART
'
'OBJECTS USED

'DOORs
'*** All the doors are configured with Door Output Channel set to ZERO
Object thisTurnstile, theTurnstileB, theTurnstileC
'OUTPUT
'*** Output wired to door striker to lock/unlock the door
Object thisDrOutput
'NUMERICs
Object thisLastCard, theLastCard_B, theLastCard_C, thisAlarmPoint
'DATETIMEs
Object thisLastCrdTime, theLastCrdTime_B, theLastCrdTime_C

Line SETUP
'ENTER THE PATH TO THE 3 DOORS HERE
  thisTurnstile = Turnstile_A
  theTurnstileB = Turnstile_B
  theTurnstileC = Turnstile_C

'ENTER THE PATH TO THE  INFINITYOUTPUT HERE
  thisDrOutput = Trnstl_A_Striker

'ENTER THE PATH TO THE  INFINITYNUMERICs HERE
  thisLastCard = Trnstle_A_CrdNum
  theLastCard_B = Trnstle_B_CrdNum
  theLastCard_C = Trnstle_C_CrdNum
  thisAlarmPoint = TurnstileA_ALM

'ENTER THE PATH TO THE  INFINITYDATETIMEs HERE
  thisLastCrdTime = Trnstle_A_EvntTm
  theLastCrdTime_B = Trnstle_B_EvntTm
  theLastCrdTime_C = Trnstle_C_EvntTm
  Goto MONITORING

Line MONITORING
  thisDrOutput Value = 0 'LOCK THE DOOR
  If thisTurnstile ValidAttempt then
'ACCESS HAS BEEN GRANTED AT THIS DOOR...
    thisLastCard = thisTurnstile EntryLastCard 'RECORD THE CARD # USED...
    thisLastCrdTime = (Date + 0) 'AND THE TIME OF THE TRANSACTION
    Goto VALID_ATTEMPT
  Endif

Line VALID_ATTEMPT
'IF SAME CARD USED AT ANY OF THE OTHER 2 DOORS WHILE THE CURRENT TRANSATION IS IN PROGRESS DENY ACCESS
  If (thisLastCard Value = theLastCard_B Value) and (Date - theLastCrdTime_B Value) < theTurnstileB DoorStrikeTime then Goto PASSBACK
  If (thisLastCard Value = theLastCard_C Value) and (Date - theLastCrdTime_C Value) < theTurnstileC DoorStrikeTime then Goto PASSBACK

  thisDrOutput = thisTurnstile DoorStrikeTime 'UNLOCK THE DOOR
  If thisTurnstile DoorSwitch = Opened then Goto PROCESSENTRY 'PERSON HAS OPENED THE DOOR

  If TS > thisTurnstile DoorStrikeTime then Goto MONITORING 'VALID ACCESS NO ENTRY

Line PROCESSENTRY
'VALID ACCESS WITH ENTRY
  If TS > 0 then thisDrOutput = Off 'RELOCK THE DOOR
  Goto MONITORING 'GO WAIT FOR NEXT ACCESS ATTEMPT

Line PASSBACK
'ANTI PASSBACK VIOLATION
  thisDrOutput Value = 0 'LOCK THE DOOR
  TurnstileA_ALM = TurnstileA_ALM + 1 'SEND ALARM
'------------------------------------------------------------------------------------------
  Goto MONITORING

Line E
  If TS > 10 then Goto MONITORING

Program code for door/turnstile B

'This program implements a pre-entry antipassback strategy to prevent a credentail holder

'from granting access at multiple access points (i.e turnstiles) that are physically located in close proximity to each other.

'|                            |
' __/-\_______/-\_______/-\___
' |                           |
' |      Main Lobby           |
' |      Turnstiles           |
' |                           |
' | ______X______X______X____ |
'         ^      ^      ^
'         A      B      C
'OPERATION
'Upon detecting a Valid Attempt at say turnstile A, the program will deny access to the card used at turnstiles B and C 
'until one of the following two conditions takes place:
'1-The person attempting access goes thru turnstile A as detected by the door contact. (this activates the regular
' built-in antipassback functionality if engaged)
'2-The door strike time at turnstile A expires, and the system re-locks turnstile A
'
'Each turnstile requires its own program, the programs will be identical except for the  initialization line which specifies
'which objects the program uses
'Program written for 3 turnstiles, can be easily modified for 2 or for more than 3
'
'11/30/2020 v1.0 SE PSS 101010111110  **THIS PROGRAM PROVIDED FOR SAMPLE AND GUIDELINES PURPOSES ONLY**
'Program is LOOPING/AUTOSTART
'
'OBJECTS USED

'DOORs
'*** All the doors are configured with Door Output Channel set to ZERO
Object thisTurnstile, theTurnstileA, theTurnstileC
'OUTPUT
'*** Output wired to door striker to lock/unlock the door
Object thisDrOutput
'NUMERICs
Object thisLastCard, theLastCard_A, theLastCard_C, thisAlarmPoint
'DATETIMEs
Object thisLastCrdTime, theLastCrdTime_A, theLastCrdTime_C

'------------------------------------------------------------------------------------------
Line SETUP

'ENTER THE PATH TO THE 3 DOORS HERE
  thisTurnstile = Turnstile_B
  theTurnstileA = Turnstile_A
  theTurnstileC = Turnstile_C

'ENTER THE PATH TO THE  INFINITYOUTPUT HERE
  thisDrOutput = Trnstl_B_Striker

'ENTER THE PATH TO THE  INFINITYNUMERICs HERE
  thisLastCard = Trnstle_B_CrdNum
  theLastCard_A = Trnstle_A_CrdNum
  theLastCard_C = Trnstle_C_CrdNum
  thisAlarmPoint = TurnstileB_ALM

'ENTER THE PATH TO THE  INFINITYDATETIMEs HERE
  thisLastCrdTime = Trnstle_B_EvntTm
  theLastCrdTime_A = Trnstle_A_EvntTm
  theLastCrdTime_C = Trnstle_C_EvntTm
'------------------------------------------------------------------------------------------
  Goto MONITORING

Line MONITORING
  thisDrOutput Value = 0 'LOCK THE DOOR

  If thisTurnstile ValidAttempt then
'ACCESS HAS BEEN GRANTED AT THIS DOOR...
    thisLastCard = thisTurnstile EntryLastCard 'RECORD THE CARD # USED...
    thisLastCrdTime = (Date + 0) 'AND THE TIME OF THE TRANSACTION
    Goto VALID_ATTEMPT
  Endif

Line VALID_ATTEMPT
'IF SAME CARD USED AT ANY OF THE OTHER 2 DOORS WHILE THE CURRENT TRANSATION IS IN PROGRESS DENY ACCESS
  If (thisLastCard Value = theLastCard_A Value) and (Date - theLastCrdTime_A Value) < theTurnstileA DoorStrikeTime then Goto PASSBACK
  If (thisLastCard Value = theLastCard_C Value) and (Date - theLastCrdTime_C Value) < theTurnstileC DoorStrikeTime then Goto PASSBACK

  thisDrOutput = thisTurnstile DoorStrikeTime 'UNLOCK THE DOOR
  If thisTurnstile DoorSwitch = Opened then Goto PROCESSENTRY 'PERSON HAS OPENED THE DOOR

  If TS > thisTurnstile DoorStrikeTime then Goto MONITORING 'VALID ACCESS NO ENTRY

Line PROCESSENTRY
'VALID ACCESS WITH ENTRY
  If TS > 0 then thisDrOutput = Off 'RELOCK THE DOOR
  Goto MONITORING 'GO WAIT FOR NEXT ACCESS ATTEMPT

Line PASSBACK
'ANTI PASSBACK VIOLATION
  thisDrOutput Value = 0 'LOCK THE DOOR
  TurnstileA_ALM = TurnstileA_ALM + 1 'SEND ALARM

  Goto MONITORING

Line E
  If TS > 10 then Goto MONITORING

Program code for door/turnstile C

 

'This program implements a pre-entry antipassback strategy to prevent a credentail holder

'from granting access at multiple access points (i.e turnstiles) that are physically located in close proximity to each other.

'|                            |
' __/-\_______/-\_______/-\___
' |                           |
' |      Main Lobby           |
' |      Turnstiles           |
' |                           |
' | ______X______X______X____ |
'         ^      ^      ^
'         A      B      C
'OPERATION
'Upon detecting a Valid Attempt at say turnstile A, the program will deny access to the card used at turnstiles B and C 
'until one of following two conditions takes place:
'1-The person attempting access goes thru turnstile A as detected by the door contact. (this activates the regular
' built-in antipassback functionality if engaged)
'2-The door strike time at turnstile A expires, and the system re-locks turnstile A
'
'Each turnstile requires its own program, the programs will be identical except for the  initialization line which specifies
'which objects the program uses
'Program written for 3 turnstiles, can be easily modified for 2 or for more than 3
'
'11/30/2020 v1.0 SE PSS 101010111110  **THIS PROGRAM PROVIDED FOR SAMPLE AND GUIDELINES PURPOSES ONLY**
'Program is LOOPING/AUTOSTART
'
'OBJECTS USED

'DOORs
'*** All the doors are configured with Door Output Channel set to ZERO
Object thisTurnstile, theTurnstileA, theTurnstileB
'OUTPUT
'*** Output wired to door striker to lock/unlock the door
Object thisDrOutput
'NUMERICs
Object thisLastCard, theLastCard_A, theLastCard_B, thisAlarmPoint
'DATETIMEs
Object thisLastCrdTime, theLastCrdTime_A, theLastCrdTime_B

'------------------------------------------------------------------------------------------
Line SETUP
'ENTER THE PATH TO THE 3 DOORS HERE
  thisTurnstile = Turnstile_C
  theTurnstileA = Turnstile_A
  theTurnstileB = Turnstile_B

'ENTER THE PATH TO THE  INFINITYOUTPUT HERE
  thisDrOutput = Trnstl_C_Striker

'ENTER THE PATH TO THE  INFINITYNUMERICs HERE
  thisLastCard = Trnstle_C_CrdNum
  theLastCard_A = Trnstle_A_CrdNum
  theLastCard_B = Trnstle_B_CrdNum
  thisAlarmPoint = TurnstileC_ALM

'ENTER THE PATH TO THE  INFINITYDATETIMEs HERE
  thisLastCrdTime = Trnstle_C_EvntTm
  theLastCrdTime_A = Trnstle_A_EvntTm
  theLastCrdTime_B = Trnstle_B_EvntTm
'------------------------------------------------------------------------------------------
  Goto MONITORING
  
Line MONITORING
  thisDrOutput Value = 0 'LOCK THE DOOR

  If thisTurnstile ValidAttempt then
'ACCESS HAS BEEN GRANTED AT THIS DOOR...
    thisLastCard = thisTurnstile EntryLastCard 'RECORD THE CARD # USED...
    thisLastCrdTime = (Date + 0) 'AND THE TIME OF THE TRANSACTION
    Goto VALID_ATTEMPT
  Endif

Line VALID_ATTEMPT
'IF SAME CARD USED AT ANY OF THE OTHER 2 DOORS WHILE THE CURRENT TRANSATION IS IN PROGRESS DENY ACCESS
  If (thisLastCard Value = theLastCard_A Value) and (Date - theLastCrdTime_A Value) < theTurnstileA DoorStrikeTime then Goto PASSBACK
  If (thisLastCard Value = theLastCard_B Value) and (Date - theLastCrdTime_B Value) < theTurnstileB DoorStrikeTime then Goto PASSBACK

  thisDrOutput = thisTurnstile DoorStrikeTime 'UNLOCK THE DOOR
  If thisTurnstile DoorSwitch = Opened then Goto PROCESSENTRY 'PERSON HAS OPENED THE DOOR

  If TS > thisTurnstile DoorStrikeTime then Goto MONITORING 'VALID ACCESS NO ENTRY

Line PROCESSENTRY
'VALID ACCESS WITH ENTRY
  If TS > 0 then thisDrOutput = Off 'RELOCK THE DOOR
  Goto MONITORING 'GO WAIT FOR NEXT ACCESS ATTEMPT

Line PASSBACK
'ANTI PASSBACK VIOLATION
  thisDrOutput Value = 0 'LOCK THE DOOR
  TurnstileA_ALM = TurnstileA_ALM + 1 'SEND ALARM

  Goto MONITORING

Line E
  If TS > 10 then Goto MONITORING

 

 

 

 

Labels (1)
Labels:
  • Andover Continuum
Tags (7)
  • Find more articles tagged with:
  • AbeMeran20
  • anti
  • anti passback
  • passback
  • tailgating
  • turnstile
  • turnstiles
Was this article helpful? Yes No
No ratings

Link copied. Please paste this link to share this article on your social media post.

To The Top!

Forums

  • APC UPS Data Center Backup Solutions
  • EcoStruxure IT
  • EcoStruxure Geo SCADA Expert
  • Metering & Power Quality
  • Schneider Electric Wiser

Knowledge Center

Events & webinars

Ideas

Blogs

Get Started

  • Ask the Community
  • Community Guidelines
  • Community User Guide
  • How-To & Best Practice
  • Experts Leaderboard
  • Contact Support
Brand-Logo
Subscribing is a smart move!
You can subscribe to this board after you log in or create your free account.
Forum-Icon

Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.

Register today for FREE

Register Now

Already have an account? Login

Terms & Conditions Privacy Notice Change your Cookie Settings © 2025 Schneider Electric

This is a heading

With achievable small steps, users progress and continually feel satisfaction in task accomplishment.

Usetiful Onboarding Checklist remembers the progress of every user, allowing them to take bite-sized journeys and continue where they left.

of