5226BB Rev G.
5.0.26
5/2/2026

The DSPI code had support for a FM25L16 part. There is no code that actually used the functions, so it was unclear if it worked or was ever tested.

The new Rev H board uses an S25FL128 flash memory part that we had no code written for.

Both of these parts have a SPI interface.

There is code in the common library that should support SPI memory devices of any type. I used Claude to write read/write and erase functions for the new part. The common code had some assumptions that were specific to the FM25L16, or some earlier, part that had to be removed and configured in a more generic fashion. Together we fixed some bugs in the existing code. A test to sense the presence by reading the Device, Manufacturer and Type out of the chip was written. This test proves that the chip harware design is OK because it requires a write and a read to both be succesful in order to read the proper, expected, information out of the part.

Changes made for Pathfinder 5226 controllers.

The Pathfinder controller now performs operator presence verification via the hazard zone light curtain at specific material-handling steps in the double bend logic. In Release_Part_To_Operator() and LoadSheetWithGripper(), when the gripper pedal is pressed (to release a finished part or load a new sheet), the firmware checks that the area sense light curtain is broken, indicating the operator is in the zone. If the curtain is unbroken at the moment of press, gOperator.GripperPresenceFailCount increments. Similarly in LoadSheetWithGripper(), when the next-step pedal is pressed and will cause the clamp to come down, the firmware checks the curtain state and increments gOperator.ClampPresenceFailCount on failure.

Each counter has its own configurable threshold (gOperator.GripperPresenceFailThreshold at attribute ID 0x0061, gOperator.ClampPresenceFailThreshold at 0x0062). When a counter reaches its threshold, the firmware queues a dedicated error (E475 for gripper presence, E476 for clamp-down presence), sets gRun.eMode to RMT_HALTED, and exits the operation. When a counter reaches threshold × gOperator.PresenceLockoutMultiplier (attribute ID 0x0063), the firmware sets the gRun.bPresenceLockout flag in addition to halting. From that point on, OK_To_RUN() blocks any auto run mode entry with error E477, and the lockout can only be cleared by restarting the controller.

The three new parameters and the lockout flag default to zero on startup, which disables the feature until the HMI sends non-zero values. The polarity of the area sense flag matches the existing convention in the codebase (gRun.bHazardZoneAreaSenseEnable true means the curtain is unbroken), so the increment fires when that flag is true at the moment of pedal press.