Warning
Potential for Data Loss: The steps detailed in the resolution of this article may result in a loss of critical data if not performed properly. Before beginning these steps, make sure all important data is backed up in the event of data loss. If you are unsure or unfamiliar with any complex steps detailed in this article, please contact Product Support Services for assistance.
Issue
Sample programs for carpark access control.
Environment
Continuum Access Control
Carpark Access
Carspace Counting
Cause
Want sample code on how to provide Carpark Access Control.
Resolution
It is possible to do car park control with Continuum Controllers. There are a number of different ways to do this depending on the sites specific requirements. PSS doesn't provide programming for specific projects but we can provide generic examples.
*** Note: This sample code is provided as-is to be used as a sample only. ***
To start off, a very simple solution could be:
- To have three Areas defined, Outside, CommonCarPark, and EmployeeCarpark.
- You then create Door objects for the Entry Readers at the entrance to CommonCarPark and EmployeeCarpark.
- Use a PE Program to Monitor the CommonEntry Entry Reader for ValidAccess and set a pre-alarm flag (Numeric).
- Have an AlarmEnrollment attached to the pre-alarm flag and set for a specific amount of time (3 minutes).
- Have another PE Program that monitors the EmployeeEntry Entry Reader for ValidAccess and then re-sets the pre-alarm flag stopping the alarm from being sent.
You could use this sample program, with some modifications, to provide you with this functionality.
This is a very simple way of doing it that doesn't take into account having more than one car coming in at the same time though...you could expand on this to include using arrays to store the details of the Personnel that have badged and then have a timer associated with that specific Personnel, set both values into an Array and then have another program monitor that Array and compare the time they entered against the current time...if the difference was more than your alarm time then raise an alarm. When that Personnel badges at the EmployeeEntry Reader you remove their entry from the Array.
A sample on how to do this is here. This one is a bit more complex than the previous example but it should give some ideas to start with to mold into a solution.
There is a WS program as well as a controller program. The controller program does all of the carpark control which uses arrays to store the number of car spaces currently available for each department group (company/tenant) and allows of disallows new cars from that dept depending on available slots.
This solution required both a roller door and a gate inside the roller door to create a "mantrap" for the desired control but the same principle could be applied in a simpler design.
The WS program was used to provide a solution to the tenants locking themselves out of the carpark when they didn't badge out properly. It uses an object to search though all Personnel to find a specific card number and then resets that Personnel's current Area so they can badge at the anti-passback enabled Door. From memory, this part of it didn't work as well as the carpark access. The code is good just the method of searching through all Personnel was prone to locking up. Depending on the number of Personnel and size of Database it can take a longtime to do the search ... and the program can time out and go to disabled. So there was human intervention needed at various times.