Cycling Voice Annunciation System for Call Light Stations

Question:

Hello everyone, I am currently working on developing a call light and alarm system for roughly 20 stations, each equipped with their own call switch. The system is designed to communicate with a PLC to trigger an MP3 alarm that will announce specific station numbers in need of assistance. However, the challenge arises when multiple stations activate their call switches simultaneously. In such instances, the system should alternate between announcing the different station numbers within a set timeframe, such as 5 seconds per announcement. To achieve this functionality, I am considering utilizing either CodeSys or Node-Red for programming, depending on which platform best suits my objectives. I will be utilizing an Opto22 Groov Epic for this project. While I have prior experience with A-B programming and some familiarity with Node-Red on a Raspberry Pi, I am relatively new to CodeSys. Any insights, advice, or suggestions on how to approach this issue would be greatly valued. Thank you in advance for any help you can provide.

Top Replies

Utilize a single bit within a 32-bit integer to correlate each station with its corresponding call switch - with station 1 mapping to bit 1, station 2 to bit 2, and so on. In cases where 32-bit integers are unavailable, opt for two 16-bit integers instead. In the coding model (executed on each scan cycle), when the voice announcement is not in progress, a counter should increment from 1 to 20 and loop back to 1 upon reaching 20. If the bit value positioned at that counter within the 32-bit integer equals 1 (indicating an active call switch), transmit the lower 5 bits of the counter to the 5 output bits for the light, labeled as XIC bits32.[counter] XIC counter.0 OTE output.0 and XIC bits32.[counter] XIC counter.1 OTE output.1. Additionally, initiate a timer to halt the counter's progression while the voice announcement is ongoing. If the bit value positioned at the counter within the 32-bit integer equals 0, the code will generate 0s across all five announcement outputs. This process cycles through all call switches every 20 scan cycles (approximately 20ms), pausing during voice announcements for any active call switch.

It all clicks now. Many thanks! I was struggling with this issue and couldn't find the solution. Connecting the counter to the cyclical scan and pausing during active announcement turned out to be the crucial aspect I overlooked.

If your PLC requires a different approach to bit manipulation, check out this functional demonstration.

Utilizing an array of integers can simplify the process. With affordable memory costs, utilizing an integer to represent a switch being on (1) or off (0) within an array of integers can provide a clearer and more manageable structure to follow.

If you're interested, I can share a program I created that involved around 15 AD PLCs, with one at each call station. These PLCs reported to a master unit, which also had an annuciator and call/phone line for maintenance purposes. While my program may not be as sophisticated as what drbitboy could develop, it still successfully managed the hardware. I recommend looking into the Click Plus for your own setup. How far apart are the call stations in your system? This project evolved into tracking response times, downtime, and offering online viewing/reporting capabilities. Though it's been around 20 years, I can try to locate the program for you.

From my experience, both Node-Red and CodeSys can handle such sequencing tasks effectively. However, each has a unique aspect: Node-Red is great for event-driven execution, while CodeSys excels at real-time deterministic logic. Since your requirements seem to need more of a deterministic behavior, I’d lean more towards CodeSys. Its structured method to programming might be more suitable for managing the strict timing and sequence requirements you’ve mentioned. As you're using the Opto22 platform, you may want to consider their PAC Control as it often works seamlessly with the hardware. Nevertheless, Node-Red could still be a valid option if you're comfortable with its flow-based programming. It all comes down to what you're most comfortable with. Don't forget to consider factors such as the ease of maintenance and future modifications in your decision.

Given your requirements and hardware, I'd recommend leaning towards CodeSys as it has a more robust integration with PLCs and is designed for complex industrial applications. However, since you're familiar with Node-Red already, you might find it easier and quicker. A useful feature for both platforms is their ability to integrate with external libraries, which may simplify the task of managing multiple simultaneous alerts. For instance, you can consider a queue-like structure where each incoming alert from a station is added to the queue and then dequeued after it has been announced. This could ensure each station gets announced within your 5-second timeframe. Also, remember to consider error and exception handling early in the design to help your system better accommodate unexpected scenarios.

Both Node-Red and CodeSys can achieve this, but given your background in Node-Red, you might find it easier to use. You can create a queue in Node-Red where station call signals are treated as events. When multiple events are queued, you can have the PLC first ignore new signal input, then use a delay node for the 5-second spacing between MP3 alarms, and after the queue is empty, the PLC can start accepting signals again. Regarding your Opto22 Groov Epic, these PLCs have been designed to work well with Node-Red, so compatibility-wise you should be fine. That said, some people find CodeSys more robust for complex tasks, but there could be a steep learning curve involved.

It sounds like an interesting project! Since you're looking to manage simultaneous calls effectively, I'd suggest focusing on using a queuing mechanism to handle the requests from the stations. Node-Red might be a bit more straightforward for your background, as its visual programming can simplify handling multiple inputs. You could set up a flow that listens for each call switch activation, adds it to a queue, and then processes each alarm announcement in sequence. If timing is critical, make sure to implement a timer that controls the announcement duration. Either way, it’s worth experimenting with both platforms to see which aligns better with your workflow. Good luck!

More Replies β†’

Streamline Your Asset Management
See How Oxmaint Works!!

βœ…   Work Order Management

βœ…   Asset Tracking

βœ…   Preventive Maintenance

βœ…   Inspection Report

We have received your information. We will share Schedule Demo details on your Mail Id.

To add a comment, please sign in or register if you haven't already..   

Frequently Asked Questions (FAQ)

FAQ: 1. How can I address the challenge of multiple stations activating call switches simultaneously in my cycling voice annunciation system?

Answer: Answer: To address this challenge, you can program the system to alternate between announcing different station numbers within a set timeframe, such as 5 seconds per announcement. This can help prioritize and communicate the assistance needed from each station effectively.

FAQ: 2. Which programming platforms are being considered for the cycling voice annunciation system mentioned in the thread?

Answer: Answer: The programming platforms being considered for this project are CodeSys and Node-Red. The choice between these platforms will depend on which one best suits the project's objectives and the developer's familiarity with each.

FAQ: 3. What hardware is being used for the development of the cycling voice annunciation system?

Answer: Answer: The system is being developed using an Opto22 Groov Epic. This hardware will play a crucial role in integrating the call light stations with the PLC to trigger the MP3 alarm announcements for specific station numbers in need of assistance.

FAQ: 4. What programming experience is required for developing the cycling voice annunciation system?

Answer: Answer: While prior experience with A-B programming and familiarity with Node-Red on a Raspberry Pi can be beneficial, the developer mentions being relatively new to CodeSys. However, with a strong foundation in programming and the willingness to learn, it is possible to successfully tackle the project challenges.

Ready to Simplify Maintenance?

Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.

Request Demo  β†’