====== Long-Term Maintenance ====== ===== About ===== This page is my own experience and thoughts on creating designs that are meant to be maintained long-term. This primarily applies to automation installations. Some things are designed to be temporary, but if you are trying to design something that is a large capital investment you need to keep maintenance in mind. ===== Documentation ===== While designing and building something, it is important to create detailed documentation not only on how a project is designed and built, but also of the design decisions and compromises. The goal is not just to provide the "how" it works but also "why" it works. Often the hardest part of maintaining things you did not personally design is not just figuring out where a wire connects. The most difficult thing to understand is how the person who designed it was thinking about the problem. This becomes important because sometimes the solution you come up with breaks the logic of the system. ===== Hardware ===== Hardware designs should always use as many consumer off the shelf (COTS) components as possible. It is almost always cheaper to buy a preexisting item than to create it from scratch. Unless your custom item solves some specific problem not already solved by a COTS part, it is the wrong choice. This is a problem I frequently fall into. It is more interesting and more fun to design your own than it is to flip through a catalogue, but it is way more expensive. Unless recreating the part is supposed to be a learning experience, just use the existing part. Another important component of hardware selection is standardization. It is tempting to buy a part and just attach it to your machine somewhere, but that is why the DIN rail standard exists. If a DIN rail version of a component exists, use that and mount it to a rail. Similar to not re-creating a part, do not recreate mounting solutions. This has the added benefit of making your machine more modular. If that specific component is no longer made, there is a good chance someone else is making an equivalent part that is also DIN mountable. Then retrofitting that part is as easy as un-clipping the old one and slotting in the new one. Building on this idea, it is best to not only specify a part in your design, but to also specify the qualities. If you spec a relay and another one could be used, include the details necessary to find the alternate part. Virtually all 24v relays with sufficient amperage and voltage ratings are interchangeable. This is true of most parts on your machine. Being manufacturer agnostic is good design. If you have to use a part that may not have a direct replacement in the future, design a separate mount. My most common use of this is for robot mounts. Each robot tends to have a proprietary mounting system. I could just design the table to accept that robot directly, but in the future is a robot with the same footprint isn't available it is going to be a pain to take the entire table surface off and machine the new footprint into it. It is better to design an adapter plate with a standard bolt configuration to mount to the table. Remaking a 1" thick by 6" wide riser is going to be easier and cheaper than re-machining a 3ft square table surface. Combining that idea with the previous, you can often just buy standard robot mounts from another company who has set a standard. Another important consideration for robots is the interface. A lot of robots including most Cobots have a lot of IO and processing power. It can make them tempting to use as the logic controller for the entire system. I have found this is usually a bad idea. If you need to replace the robot, then you have to redo all of the business logic which increases the time to implement the new robot. It is better to have a PLC that acts as the controller and simply calls the robot for a sub-program. The robot can still be used for simple things, like running gripper pneumatics, but the bulk of the program should be on a PLC. The added benefit of this is that if your integration requires special safety considerations a safety rated PLC can be used. Most robots have some safety rating for themselves, but do not guarantee the safety of the entire system. Usually sensing should be done for every axis of movement. If you need to open a door, there needs to be a limit switch for both the open and closed position. For vises, having sensing allows you to automatically sense when parts are dropped and continue running the program without needing human intervention unless several drops occur in succession. This makes for automation that runs reliably in a wider range of conditions and allows you to programmatically determine when something needs an operator and what the operator needs to do to restart the program. ===== Software ===== As mentioned in the hardware selection section, it is best to use a PLC for control logic and use the robot only for robot logic. The PLC language will be portable across a broader range of equipment if you need to replace one and the ladder can usually be easily transposed if you need to switch vendors. This allows to robot logic to be extremely simple. Keeping most of the sensing on the PLC allows for more of the robot IO to be used to communicate with the PLC which creates simpler communication protocols, sometimes even just setting a single pin high or low. An added benefit of this setup is that it allows a simple control box to be used by an operator to run the machine if the robot is down for maintenance. When programming a PLC it is important for the program to be deterministic. Every situation should have a known process to follow. To achieve this, it is best to start by outlining all possible states and failure modes.