Predictable PLC State Machines: A Practical Pattern That Scales

Modern PLC projects suffer when control logic is scattered across rungs, hidden in timer branches, or tightly coupled to raw I/O. The result is brittle behavior, difficult commissioning, and painful offline testing. The approach below is a simple, repeatable pattern for building state-driven modules that stay deterministic, testable, and vendor‑friendly. It divides each routine into clear sections—Inputs → Commands → Interlocks → Permissives → State & Transitions → Status → Control Resources → Outputs—and enforces one rule above all: states govern state; device control happens only in Outputs. Whether you write in ST or Ladder, this structure keeps behavior predictable and easy to review. ...

September 8, 2025 · 9 min · Jonathan Skinner

How To Change The IP Address On A Panelview HMI

Access The Factorytalk ME Configuration Menu If a project is already loaded on the HMI, the project must have a button to go to the HMI configuration. If there is no project, the configuration menu should load automatically. Setup IP Address Tap Terminal Settings and select Network and Communications and tap Enter Select Network Connections and tap Enter Select Network Adaptors and tap Enter Tap IP Address Enter IP Address, Subnet, and Gateway Tap OK (F7) at the bottom of the window. I dialog will appear letting you know the device needs reset to take effect. Press Ok. Back out of the menus until you are at the main menu. Reset the device by pressing the Reset button. The device will restart.

December 14, 2021 · 1 min · Jonathan Skinner

How To Create A New Project In Studio 5000

Launch Studio 5000 and click New Project. Studio 5000 Splash Menu Select Logix. Select the controller that you have. Name your project. Set the location of your project file. Click Next Studio 5000 New Project Menu 1 Set the revision to the revision you want. Set the security (choose none for now) Write a description for the project. Click finish Studio 5000 New Project Menu 2 ...

September 17, 2021 · 1 min · Jonathan Skinner

How To Delete Unused Variables In Sysmac Studio

Delete all unused variables Click View/Variable Manager… Click Delete Unused Variables Warning! This will cause all unused variables in the variable table to be deleted, not just the namespace you have selected in the popup Delete select unused variables Click View/Variable Manager… Select desired namespace Click on the use column title and scroll to where the use for tags say 0 Select all or some of the tags with a use of 0 and right click/delete Photo by Devin Avery on Unsplash

December 29, 2019 · 1 min · Jonathan Skinner

How to parse a csv file with golang

CSV Files CSV Files are a handy way to pass data around. A lot of programs can import/export CSV file for you to easily edit in excel and save some time. Sometimes you want to parse through and maybe generate CSV files to use as well. Let’s read a CSV file in golang. Open a CSV file fi, err := os.Open("path-to-csv.csv") if err != nil { log.Fatal(err) } defer fi.Close() Initialize our reader rdr := csv.NewReader(fi) Once we set up our reader, when we want the next row, we call row, err := csv.Read() ...

September 25, 2019 · 2 min · Jonathan Skinner