5.0.27
8/11/2026
Changes made for 5226 controllers.
Change: Added a generic discrete-axis reference table (DiscreteAxis[] / struct DiscreteAxisRef) and dispatcher (Find_DiscreteAxis, Is_DiscreteAxis_In_Tolerance) so grippers, fingers, and the loading table are reached through one table lookup instead of the per-type if/else ladder in Is_Axis_In_Tolerance. Per-device tolerance checks were parameterized to take the axis struct/IO pointers.
Reason: Remove duplicated per-axis branching, make adding a discrete axis simpler, and lay groundwork toward data-driven axis topology.
Behavior: No functional change — each device still runs its own tolerance logic; only the dispatch path changed.
Files: Run/DiscreteAxis.c, Run/Header/DiscreteAxis.h (new); Run/MoveToPosition.c, Run/OK_To_Run.c, Run/Finger.c, Run/Header/Finger.h, Run/LoadingTable.c, Run/Header/LoadingTable.h.
Testing: Verified in simulation — both grippers and finger jog/operate correctly; no RMT_HALTED / E289_UNEXPECTED_FINGER_STATE.
Risk: Low — dispatch indirection only; device tolerance logic unchanged.
Changes made for Pathfinder 5226 controllers.
The problem: Starting a program on a regular bend step (instead of a load step) with a gripper-backstop offset — the backstops would retract after gripping, then the backgauge never moved and the cycle hung.
Root cause: In RunDoubleBend.c, the special backstop-load block in LoadSheetWithGripper (both the _Original and _SM versions) waited in while (!TestInputBit(I_112_GRIPPER_BACKSTOP_2_RETRACTED_LIMIT)) with no check that I_112 is actually assigned. TestInputBit returns FALSE forever for an unassigned input, so machines without that limit switch spun in the loop indefinitely. The load-step path never consults I_112 at all, which is why starting on an actual load step worked fine.
The fix: Guarded both wait loops (line 1816 and line 2499) with IsInputFunctionDefine(I_112_...) — same pattern the E377 conflict checks in MoveToPosition.c already use. Machines with the switch wired behave exactly as before; machines without it skip the wait and move the backgauge immediately.
Status: Edit applied byte-safely (Win-1252/CRLF verified intact). The file was already a pending TFS edit from the state-machine work — nothing checked in. Still to do on your end: build in KDS and re-test starting on a regular step where programmed position + backstop offset < 5.0.
Changes made for Pathfinder 5226 controller.
Description of Change: Restructured the sheet-loading routines LoadSheetWithClamp() and LoadSheetWithGripper() as explicit state machines to make the operator-interaction logic easier to follow and maintain. No functional change is intended — the new versions are behavior-preserving rewrites of the existing code.
Details:
Added new functions LoadSheetWithClamp_SM() and LoadSheetWithGripper_SM(). The original implementations remain in the file, renamed to LoadSheetWithClamp_Original() and LoadSheetWithGripper_Original(). The active implementation is selected with the LOADSHEET_STATE_MACHINE define near the top of the file. Defined = new state-machine code (current setting); commented out = original code. Both versions are always compiled, so the fallback stays buildable. Clamp version: the laser lockout/override timing (Setup IDs 732/733), previously tracked in four interacting timer/flag variables, is now an explicit three-state machine (Idle ? Lockout ? Override Window), plus a two-phase outer loop (Wait For Operator / Confirm Clamped) that eliminates the goto. Gripper version: the IO_Set pedal-light variable is replaced by named regions (Clamp-Up / Grip) with entry actions; the goto Next_Operation is replaced by a normal loop exit. Axis setup, presence-check (E475/E476), and cleanup code is carried over byte-for-byte from the originals. Reason for Change: The original loading loops encoded their state in scattered flags, timers, and goto labels, making the safety-critical laser override sequence difficult to review and modify. Explicit states make the behavior auditable and simplify future changes.
Changes made for Pathfinder 5226 controllers.
A new Ethernet/IP driver was added to handle a Siemens Sinamics S210 drive.
Changes made for Pathfinder 5226.
The 5226 controller has diagnostics data that is collected and used to be able to view in a webpage. It will only send data if the value has changed enough. A filter for this data was created to have control of not sending too much data because of constant minute changes. This filter was not add for 3 axes. The Hydraulic Temperature and Diagnostics Ports A and B. This has been added for them now.
Changes made for Pathfinder 5226 controllers.
Certain machines have an additional clamp up that will bypass the vfd when estopped to allow for raise clamp on estop. This is a saftey feature in case something is wrong with the vfd to have something dedicated to opening the clamp. This has been added to the 5226 code.