This article presents an application of Sequential Function Chart (SFC) programming using the Courzet-Soft environment. It provides a macro (function) that encapsulates the operation and behavior of a motor starter. The objective is to form a reusable object that encapsulates the motor starter operations while providing operational and fault status.
Let’s start by examining the faults associated with a motor starter. The faults fall into 4 categories including:
The contactor may be forced such as when a technician uses an insulated screwdriver to engage the armature.
The contactor may fail to close. This may be the result of a loose wire, a burned-out coil, burned-out PLC contact, faulty interposing relay, or problems with the motor starter’s auxiliary contacts.
The contactor may fail to stay closed. The most likely culprit is a trip of the motor starter’s overload block. This could be caused by a physical overload, defective motor, excessive number of start-stop cycles in a short period of time, a phase imbalance, or a single-phase situation.
The contactor may fail to open. In an extreme situation the contacts may have welded themselves closed.
Clearly, there is more to turning on a motor than just applying power to the coil. A macro encapsulating this fault detection routine becomes increasingly important as the complexity of your control systems grows. In this note, we describe a system to monitor the auxiliary contacts of the motor starter. For layer(s) of protection could be added to monitor the effects of the motor e.g., sail switch or an inductive proximity sensor “watching” a motor driven toothed gear.
Tech Tip: The overload block is the key component that transforms a contactor into a motor starter. The overload block’s normally closed contacts are typically wired in series with the coil. This provides a failsafe and independent method of securing power to the motor.
Now that we have named the potential faults, we can move on to describe the status of the motor starter. By status we use adjectives such as valid, busy, and fault. Identification of these terms are very important if we are to integrate the motor object into a larger system. They allow us to synchronize the object into the greater PLC program with minimal supporting logic. Consider how these terms would be useful:
the valid control line tells us that the motor starter is in the commanded position be it on or off.
the busy control line tells us that the motor starter is in a transitional phase. It may be in the process of turning on or turning off.
the fault control line indicates that something is wrong. In a larger system, many such fault-indicator lines may be ORed together.
Related to the fault control line is the fault code. In this application we will assign a numeric value to each fault including:
- failed to close
- failed to stay closed
- failed to open
The fault codes are invaluable as they may be used by the technician to determine why the motor starter failed. In advanced systems these codes could be time stamped and logged by the system. A more advanced solution would include message strings indicating which object in a large system failed.
If you have not already done so, this is a good time to review my previous writing regarding the Crouzet-Soft SFC. There are several important lessons in that article including:
The state machine is encoded into the SFC blocks.
The “resettable initial step” block is the birthplace of the token. It also provides invisible reset wires for all the SFC blocks.
Signals entering the left-hand side of the SFC block are used to open the “little gate” allow the token to pass to the next state.
Output logic is to the right of the SFC blocks
We are free to use a mixture of Crouzet’s “Wiring mode” and “Text”. For our application “Text” mode is preferred. These teal-colored connection “wires” eliminate the wiring rats’ nest that would otherwise appear in Figure 1.
The “yes” block is used to expand a node. This becomes especially important in this application as a macro has a one-to-one correspondence between input line and block. By using the node duplication function of the “yes” block, we can have one input that connects to many blocks.
As we view Figure 1 from left to right, we see organizations structures. The general groupings are described as:
- “yes” blocks and signal inverters
- the state machine encoded into the SFC
- fault detection blocks with latches
- output logic
Figure 1: SFC based macro to encapsulate the operation of a motor starter.
There are 4 states encoded into the SFC including open, closing, closed, and opening. Recall that each state is associated with the right-hand side output of a SFC block. These states are sufficient to describe the physical position of the motor contactor.
The fault state is encoded outside of the SFC. Observe that the faults are triggered based on the state machine. For example, consider the close-up image of the “failed to close fault” code show in Figure 2. Here we have an SFC convergence to AND block and a three input AND (3-wire connected as F = ABCC). When the gate for the upper StateOpen block is enabled, the token is split. One drops directly into the Convergence-to-AND block. The other gets “stuck” in the time delay only to emerge 500 ms later when the metaphorical hourglass opens its own gate. Meanwhile in the physical world the motor starter’s auxiliary contact should close. If all three events converge within 500 ms the token is passed to StateClosed (not pictured).
Observe that the Convergence-to-AND block has two right-hand outputs corresponding to the two tokens. If the 500 ms delay expires and AuxContact fails to activate the two tokens are stuck in the block causing two in the AND 4I input to be high. This coupled with a logic high on the NotAuxContact block will activate the SET/RST block. This is then fed to the remainder of the output logic ultimately disabling the entire module.
Figure 2: Close up view of the FSC showing the Convergence-to-AND block.
We could continue with a description of the output logic, but not today. We have likely reached a point of diminishing returns. Instead, I would encourage you to download the attached file. You can run it in the simulator provided you first open the macro and set the closing and opening SFC time delays from 500 ms to 5 s.
As we design machinery, it’s important to consider the corner cases. As clearly stated in the Crouzet caution, a power-un reset can have unintended consequences if we don’t consider all the possible ways in which the PLC will be used.
As you review the attached code, please identify any bugs you encounter. Also, ways to improve readability are most welcomed.
SFC_Motor_Start.pcs (72.5 KB)