The complexity of programming depends on the scale of the project at hand. Debugging a single function is relatively straightforward, whereas developing a comprehensive system with multiple devices from different manufacturers can be intricate and demanding, often necessitating numerous revisions and updates over time. This begs the question: is it akin to designing a single webpage versus an entire website?
I began my journey by developing process control applications using Basic programming language. Transitioning to PLCs, I discovered that ladder logic was more intuitive to program compared to higher-level languages, likely due to my familiarity with JIC electrical diagrams. While I believe that learning ladder logic programming is straightforward, it's worth noting that modern PLCs offer a variety of programming language options to choose from. Mastering the mechanics of programming shouldn't be a challenge.
As many have highlighted, creating the program itself is the easier aspect of PLC programming. The more complex and crucial part lies in comprehending how the machinery or process operates, the functionality of sensors, essential safety considerations, and troubleshooting potential system issues. Browsing through discussions on this platform, you'll notice that a significant number of inquiries revolve around operational aspects rather than programming specifics – such as understanding pump operations, selecting appropriate sensors, conducting wiring tests, designing operator interfaces, and more.
Embarking on a career in control system programming can be highly rewarding. I strongly encourage you to delve deeper into this field by starting with a solid grounding in electrical technology and revisiting fundamental physics principles. Seek out an entry-level position where you can benefit from mentorship. This will set you on the path to making a positive impact in the world!
Just like in sports, there is often a debate between harder and easier tasks, but ultimately, the expectations are determined by the quality of the work. Many people who claim expertise in programming PLCs actually spend very little of their time programming them, especially in maintenance roles where it may be less than 5% of their time. Even full-time control developers may spend less than 50% of their time programming if they are also involved in other tasks like quoting, drawings, and commissioning. On the other hand, full stack developers primarily focus on programming in an office setting, with meetings being their main distraction. Comparing ladder logic to higher-level languages, a skilled full stack developer saying that ladder logic is easier is akin to Michael Phelps dominating the swim section of a triathlon and confidently claiming victory.
While some individuals grasp it easily, others may find it challenging. As mentioned earlier, the essential requirements include a mechanical understanding of machinery operation, knowledge about the potential energy in pneumatics and hydraulics (stored energy), and awareness that these systems will move until they are obstructed, instructed to stop, or reach the end of their stroke. It is crucial to grasp the various types of valves, cylinders, and their functions, along with electrical expertise in assembling controls and understanding how the programmable logic controller (PLC) interacts with other components. Feel free to send me a private message, and I can share with you my journey in programming. Always remember to keep things simple, collaborate with maintenance teams, and understand their capabilities. - James.
PLC programming stands out due to its limited instruction set compared to other languages, making it easier to grasp. There are no libraries to load, simplifying the learning process. Working at the bit level, understanding Boolean logic (AND, OR, NOT, XOR), timer and counter instructions, and basic math functions covers the majority of tasks.
Unlike traditional programming languages where a program executes a series of tasks and stops, PLCs operate continuously like the Energizer Bunny. This can be challenging for new programmers as they must keep track of changes in bits and bytes to avoid unexpected outcomes.
Moreover, while PLC logic resembles IF-THEN statements, some instructions incorporate an implied ELSE, leading to potential issues if overlooked. Unlike other languages, PLC lacks a traditional "debug" mode, requiring programmers to mentally visualize code execution for troubleshooting.
These unique characteristics make PLC programming more challenging compared to other languages.
When it comes to industrial control systems, there are significant distinctions between web technologies and Programmable Logic Controllers (PLCs). While web systems prioritize safety, quality, and availability, PLCs are designed to operate consistently and reliably, often running 24/7 without interruption. Upgrading a PLC system can be complex, requiring on-site adjustments and potential production pauses for validation. Considerations for servicing and system recovery are crucial, including the need for a reliable initialization sequence and independent subsystem testing.
It is essential to plan and design the architecture of a PLC system meticulously from the outset. Unlike web technologies, PLC technology evolves at a slower pace, emphasizing the need for careful long-term planning. Some professionals, like myself, opt for a blend of standard PCs and custom software to oversee PLC operations, granting greater flexibility for updates and integration of diverse functionalities. However, this approach introduces potential reliability issues due to the inherent stability difference between PCs and PLCs.
The level of enjoyment in programming varies depending on your skills and interests. It can be engaging to work on projects like a fake stop light sequencer, a 100 TON hydraulic press, or synchronized robotic motion. However, the real thrill comes when things crash, allowing you to see your programming in action and make immediate adjustments. This beats the monotony of spending weeks on a project only to hope for a rare glitch to resolve itself. The excitement of troubleshooting is far more appealing than tirelessly adjusting screen rendering code or the daunting task of modifying accounting code. Despite the differences in how programming languages are presented, the core concepts of IF, AND, OR, and LOOP statements remain the same across all languages.
RetiQlum2 shared that crashing can make off-roading even more thrilling. However, as someone who still experiences mild PTSD from a winch accident that resulted in significant damage, safety is non-negotiable. Off-roading is exhilarating, but it's crucial to prioritize safety to prevent serious injuries or even fatalities.
When it comes to programming, SCADA programming shares similarities with web programming, especially when utilizing Ignition's Perspective module. There is a demand for small web applications that allow supervisors to easily monitor tank levels, pump statuses, and more. However, it is important not to solely focus on the PLC. The PLC may be connected to sensors and devices in the physical world, but there is a vast interconnected ecosystem beyond that, including HMI, Batch Control, DCS, SCADA, Historians, databases, OEE, and Inventory Management Systems. Embracing the entirety of this ecosystem is crucial for effective industrial automation and control.
Cardosocea expressed lingering PTSD from the sound of a winch accelerating, which had previously caused millions in damage. Safety should always be a priority, as accidents can have severe consequences. Remember, it's important to find moments of comedy even in the face of disaster.
RetiQlum2 once said that one must find the humor in the face of disaster. While I consider myself lucky that the consequences were only financial, there have been moments where it became difficult to laugh amidst tragedy. Unfortunately, the occurrence of such incidents has been all too frequent for both myself and my coworkers. I am not afraid to joke about my own mishap, sharing the details of what went wrong and even embracing nicknames like "Rocket Man." However, experiencing a true loss in the workplace changes everything. I hope that you never have to endure even half of the challenges I faced in such situations.
The level of complexity in PLC programming varies depending on the task at hand, making it more of a difference in approach rather than actual difficulty. For example, traditional programmers may struggle with grasping the concept of the scan cycle and its impact on coding in PLC programming. It can be likened to having to create every program within an infinite DO...WHILE loop. Unlike traditional programming where you provide a list of calculations for the computer to evaluate, PLC programming involves mimicking an electrical circuit. This distinction is why Dick Morley, the inventor of the PLC, insisted that PLCs should not be classified as computers but rather as controllers. Unlike computers which produce outputs on screens or printers, controllers operate in real-time and are focused on controlling physical movements.
One key difference between computer programming and PLC programming is the time-critical nature of the latter. While a delay in opening a Windows program is acceptable, a delay in a PLC program, especially in industrial settings, is unacceptable. This is where terms like "deterministic" and "Real-Time Operating System" come into play. PLC programs need to be scanned quickly and efficiently to respond promptly and consistently to input changes. Failure to do so can result in equipment damage, injury, or even death in industrial environments where safety is paramount.
Moreover, troubleshooting PLC programs differs significantly from computer programs. Breakpoints, commonly used in computer programming, are not applicable in PLC programming as they can interrupt the operation of controllers. Instead, PLC programmers rely on online troubleshooting tools that allow them to view and modify their code in real-time without halting the processor. This approach provides a more effective way to identify and address issues in PLC programs while the machines are still operational.
It's worth noting that PLC programs can be written in various languages, with ladder logic being one of the most common choices. However, structured text, function block, sequential function chart, and instruction list are also used, each with its own applications and advantages. The debate between ladder logic and structured text is a divisive topic among PLC programmers, with each language offering unique benefits and challenges. Ultimately, PLC programming has evolved significantly over the years, with modern software tools enabling programmers to troubleshoot and optimize their programs with unprecedented ease and efficiency.
@brstilson, you seem to have a lot of free time on your hands. Have you thought about picking up a new hobby? Fishing can be a relaxing and enjoyable pastime. Give it a try!
- 16-09-2024
- geniusintraining
Erikapatterson expressed that their experience in programming is limited to using Arduino with Arduino IDE and Raspberry Pi with Python. They are accustomed to creating web applications, and have little knowledge about industrial PLC programming. They are curious whether PLC programming is more challenging than developing web applications.
In my opinion, having experience with Arduino can be helpful in transitioning to PLC programming. Those with a background in event-based languages may find it difficult to grasp the PLC scan process, but the void loop() construct in Arduino IDE is similar to the repetitive nature of the PLC scan. Understanding processes and components is key in PLC programming, rather than just the programming language itself.
If you enjoy learning how things work and the satisfaction of seeing a physical result from your programming, PLC programming can be rewarding. Whether it's something as simple as getting a light to display the correct colors or a complex multi-axis system, the sense of accomplishment is always gratifying. As someone who has been programming for 30 years, I still find joy in seeing the outcome of my work.
ndzied1 suggested that having a background in Arduino can greatly benefit individuals interested in PLC programming. During my master's program focusing on microelectronics, I found that the knowledge I gained about microcontrollers helped me transition into working with PLCs smoothly. Understanding the scan of logic, different tasks/OBs, and potential issues like interrupts was crucial. Additionally, Assembly language proved to have similarities with Instruction List, making the learning process easier.
Interestingly, when I started programming my second PLC (an OMRON) on a computer rather than a manual console, I discovered that it didn't automatically run a continuous loop. Instead, I had to include an "END" instruction at the end of the routine to ensure it circled back to the beginning. This experience taught me a valuable lesson in PLC programming.
Growing up, I only saw manual factories and never imagined that entire facilities could be automated. It wasn't until I started working at a chemical plant after university that I realized the potential of creating automation systems to control various building processes. Since then, my passion for PLC programming has only grown, and I've focused on it more than electronics as a hobby.
Ndzed1 mentioned the possibility of configuring the stack light to display the correct colors, which can range from a straightforward task to a more intricate process. The previous stack light I worked with proved to be quite challenging in achieving the desired color settings.
Cardosocea mentioned that Assembly language is very similar to Instruction List. I wanted to show my appreciation for this insight. Cardosocea shared a humorous anecdote about programming an OMRON PLC on a PC for the first time. Unlike traditional controllers, this PLC required an "END" instruction to loop back to the start of the routine. This experience resonates with many, as even modern C series controllers still follow this practice. Nowadays, CX Programmer automatically includes an "END" instruction when starting a new project, a far cry from the manual handheld controller days.
A user named geniusintraining commented on @brstilson's activity, suggesting they find a hobby like fishing to make better use of their time. However, @brstilson stands by their passion and declares, "I'll never apologize for loving what I do!"
In PLC programming, breakpoints are not available, unlike in computer programming where they are a common troubleshooting tool. Breakpoints halt program operation, which may be acceptable in computer programming but not in controlling physical movements where precision timing is essential. It is important to note that the availability of breakpoints depends on the platform being used.
dwoodlock mentioned that breakpoints vary depending on the platform being used. I am curious about how this compares to breakpoints in a computer program. Typically, a breakpoint will stop program execution until you proceed manually. Do the breakpoints in your example also pause the program scan? If they do, it could pose a potential risk unless it either disables outputs or captures a snapshot of the data and skips that specific part of the scan.
Some programmable logic controllers (PLCs) include step or break execution features such as Mitsubishi, although I have not personally tested this function to determine its effectiveness on outputs.
Omron offers a step and break debug function, which can be helpful for understanding one-shot operations and other scan-dependent tasks. While this feature may not be suitable for troubleshooting real-world timing operations, Data Tracing remains a reliable option for monitoring physical I/O timing.