Omron E5CC-T Programme Studio — laboratory validation release (v0.1)
Target controller (both channels): Omron E5CC-TQX3A5M-000. Cable: E58-CIFQ2.
Status: production-intent source with working offline programme builder, read-only serial inspection, eight-programme memory backup, guarded RAM transfer, read-back, explicit nonvolatile save and post-reconnect persistence comparison. It has NOT yet been tested against the owner’s physical E5CC-TQX3A5M-000 or the E58-CIFQ2. It is NOT approved for use with an energised heater. The protocol is grounded in the H186 manual and tested against synthetic responses; actual-hardware qualification remains essential.
The desktop application uses Tkinter (Python standard library GUI) and PySerial for USB/COM. No internet or cloud service is needed to operate it after installation. The supplied Windows build workflow can create an offline, portable .exe that bundles Python, Tkinter and PySerial. The Omron USB driver may still need to be installed by your organisation.
Run without installing Python (once the Windows build has completed)
- Obtain
E5CC-T-Programme-Studio-Windows.zipfrom the GitHub Actions build artifact and extract it to an ordinary local directory. - Double-click
START_READ_ONLY.cmd. This allows the generator, identification, configuration inspection, programme backups and persistence comparisons; it cannot write controller parameters. - Later, only for supervised bench commissioning with the heater system physically isolated, use
START_LAB_UPLOAD.cmd. This opens the same app with lab transfer enabled, but all safety confirmations and backup requirements still apply. - Always disconnect from an Omron before unplugging the cable, where possible.
There is no compiled Windows executable inside the source ZIP. Executables must be built on Windows, using the included reproducible GitHub Actions recipe (or on a trusted Windows PC). A Windows file cannot be built or functionally tested in the Linux packaging environment used for this release.
Run source on a PC that has Python
Windows:
py -3 -m pip install -r requirements.txt
py -3 -m unittest discover -s tests -v
py -3 app.py
py -3 app.py --enable-lab-writes explicitly activates experimental writing. Never enable it for live heater operation. A work laptop might require IT approval before installing Python or Omron USB drivers; the portable EXE removes the Python requirement, not any operating-system driver/policy restriction.
Build the Windows portable executable with GitHub Actions
The supplied workflow expects the repository folder heater/omron-uploader/ and a root workflow file .github/workflows/build-omron-uploader.yml.
- Copy the contents of this source package (except the bundled
.githubdirectory, test cache and ZIP) intoheater/omron-uploader/in the GitHub repository. - Copy this package’s
.github/workflows/build-windows.ymlto the repository root at.github/workflows/build-omron-uploader.yml. - Commit the files. In GitHub → Actions → Build portable E5CC-T Studio for Windows → Run workflow. Alternatively, a push changing those paths starts a build.
- Wait for tests and PyInstaller packaging to finish; download the
E5CC-T-Programme-Studio-Windowsartifact. Extract the included ZIP. - Check Windows Defender / your organisation’s policies before running an unsigned EXE; an unsigned PyInstaller binary may trigger a warning. Do not bypass an organisation security restriction.
A local Windows command-line build, if permitted:
py -3 -m pip install -r requirements.txt pyinstaller
py -3 -m unittest discover -s tests -v
py -3 -m PyInstaller --onefile --windowed --hidden-import serial.tools.list_ports --name E5CC-Programme-Studio app.py
Copy the resulting dist/E5CC-Programme-Studio.exe, both START_*.cmd files and this README to the same directory for an offline package.
Application tabs
1 — Programme builder (fully offline)
Use the Programme selector for slots 0–7. Add, remove or reorder up to 32 segments per programme:
- Ramp: target SP (°C) and slope (whole °C/min, range 1–9999). The curve can rise or fall.
- Soak: hold the preceding SP for a number of complete minutes (0–5999), encoded as hours.minutes.
- Step: commanded instantaneous change to a new SP; the measured PV is not expected to jump.
The graph plots the commanded setpoint only and assumes the temperature entered in Starting PV at RUN. PV Start = 1 must be commissioned. Actual temperature may lag, and the programme duration is not an actual temperature guarantee. If you require 15 minutes of measured temperature at target, a different specification (and qualified control strategy) is needed.
The builder supports saving/reading all eight programmes as a project file, importing a JSON export from our existing GitHub Pages Programme Studio, exporting a single programme JSON, and generating a printable Omron button-entry sheet. JSON data is never transferred to the controller without explicit steps in the later tabs.
Scope: rate-of-rise programming only (t-pr = pr). Do not mix with time-step programming. Completion RESET is required for hardware upload. Different controller-wide eset end behaviours are intentionally not overwritten by the upload tool.
2 — Connect & inspect (read-only)
- Remove controller normal supply and externally powered heater supply. On the completed cabinet, have a competent person establish and verify the required safe isolation. Do not assume a front-panel selector alone provides full isolation.
- Connect the E58-CIFQ2 to one of the two E5CC-T controllers and to the Windows laptop.
- Check Device Manager → Ports (COM & LPT) for the assigned COM port. Only COM ports recognised by Windows will appear. Do not change 38400 baud, 7 data bits, even parity and 2 stop bits for the setup cable.
- Select the COM port, choose Connect + inspect. The app sends only
0503,0601and0101read commands in this tab. - Confirm the returned 10-character model prefix looks like
E5CC-T…. The fullE5CC-TQX3A5M-000suffix cannot be established from0503; read the controller nameplate. - The app reads nine C3 configuration fields without changing them (see table below). A mismatch does not prevent backing up, but prevents uploading. A different model prefix prevents connecting this version.
3 — Back up the existing memory (read-only)
Choose a writable local folder, then click READ AND SAVE ALL PROGRAMME MEMORY. This reads each of the eight documented DA programme blocks, 0000..0095 (150 four-byte registers per programme), including alarm and time-signal fields as well as all 32 segment fields. It also records the nine initial-configuration values used for safety checks. Each run saves a timestamped JSON with no overwrite.
Scope limitation: this is a complete programme-area backup, not a complete clone of every controller configuration register. Restoration is not yet implemented or hardware-qualified; keep CX-Thermo and the controller’s existing settings as fallback. Backup capture is a prerequisite for lab uploading but does not, by itself, ensure recoverability.
4 — Lab transfer: strict two-phase upload
First launch via START_LAB_UPLOAD.cmd (or the --enable-lab-writes flag). Complete ALL six physical checks, select the channel and type the exact authorisation phrase.
Additional blocking conditions: accepted model prefix, stopped-control status, correct C3 settings, complete file backup, and an error-free 1..32-segment programme. The app re-reads current settings and each changed register before sending the first parameter write.
- Preview exact register changes. This is read-only; review the DA address, existing value and intended new value.
- Stage and verify in RAM. Sends only allowlisted Omron CompoWay/F operations: enable communications writing
30050001, select RAM write mode30050401, then0102 DAwrites for the selected programme, followed immediately by0101 DAread-back comparisons. Only differing registers are written. The uploader never sends RUN, software reset, firmware upgrade, change-sensor, PID/autotune, or change alarm commands. - Separate explicit SAVE RAM DATA. Requires a further confirmation. Sends
30050500after verifying every staged changed register. Then performs one more read-back. The app writes a receipt JSON in your backup folder. - Verify persistence after controller USB power cycle. Disconnect while heater supplies remain isolated; unplug and reconnect the USB programming cable so the controller actually loses and regains setup power. Reconnect, inspect, then choose VERIFY SAVED PROGRAMME AFTER USB POWER CYCLE, select the receipt JSON, and compare the stored DA values. Save the generated verification JSON.
- On the controller’s front display, independently check segment count, SPs, slopes, times, repeat/link settings and behaviour when program ends. Record the result in the commissioning form. Repeat the process for the other channel, with its own named backup and receipt.
Crucial Omron subtlety: SAVE RAM DATA may save other RAM changes that are pending (not just the selected programme). Do not run our tool in parallel with CX-Thermo or any other controller configurator. Do not issue additional writes before the bench qualification proves memory-save semantics. Changing communications writing mode also has documented memory-write side effects (H186 §2-3-8); the tool does not automatically flip it back at the end or claim that it restored the prior communications state.
If any transfer operation fails: the app latches a fail-closed lock. No further writes in that session; it performs no automatic retry, save, restore, reset, restart, or output change. The controller might contain partially staged RAM changes. Keep all heater supplies isolated, retain backup and log, investigate before any subsequent commissioning. A restart/disconnection is not a substitute for inspection.
5 — Log & commissioning checklist
The event log records the basic sequence, changed registers, acknowledgement, errors and receipt location. Export it to a text file; it is not yet a digitally signed audit log.
Exactly which controller values the app verifies
All reads use CompoWay/F variable type C3, 32-bit data. Values shown are deliberate assumptions for this specific Type K application. The tool does NOT change these settings.
| C3 address | Omron function | Required value |
|---|---|---|
0000 |
Input type (K −20.0..500.0 °C) | 6 |
0004 |
Celsius | 0 |
00B9 |
Programme time unit (hours.minutes) | 0 |
00BA |
Rate-of-rise method | 1 |
00BB |
Slope unit (per minute) | 0 |
00BC |
Reset operation stops control | 0 |
00BD |
Power-on operation RESET | 1 |
00BE |
Programme-end operation RESET | 0 |
00BF |
PV Start mode | 1 |
More independent commissioning is necessary: the Omron’s MV-at-reset output, thermocouple error response, PID direction/tuning, SSR electrical state, external heater relay interlock, Finder 13.61 power-return behaviour, E-stop/isolation strategy, protective coordination and 15 A thermal design are not proven by these nine register checks. This software cannot serve as a safety function.
Protocol / addressing reference
- Setup interface: E58-CIFQ2 at 38400, 7E2, node 01 by default, CompoWay/F STX, ETX and XOR BCC.
- H186
0503Controller Attributes returns only 10 ASCII model characters + communication buffer size. - H186
0601Controller Status: returns the operating state, but inactive control also covers some fault/manual conditions; use independent physical isolation. - H186
0101Read Variable Area;0102Write Variable Area;3005Operation Command. - DA (32-bit) register base = slot ×
0x100. Segment base =0x16 + 4 × segment_index;typeoffset 0,SP+1,slope+2,time+3. Segment count offset0, repetition offset0x0E, link destination0x0F(no linkFFFFFFFF). - Omron parameter setpoint encoding removes the decimal point: 120.0 °C → 1200 (
000004B0). Soak 15 minutes, with h.mm selected, uses encoded hex digits00000015, not binary 15-minute count (0000000F). - No working COM connection is required for local programme editing or test suite.
Manufacturer references:
- Omron H185 — E5_C-T User’s Manual
- Omron H186 — E5_C-T Communications Manual
- Python + E58-CIFQ2 CompoWay/F precedent (E5AC-T; not exact model)
Verification status and release gates
This version has passed 19 backend unit tests (synthetic protocol replies and simulated controller memory) plus Tkinter smoke tests under a virtual display. The Windows EXE has not been built here; GitHub Actions contains the build instructions. No hardware reads, staged writes, nonvolatile saves, thermal validation or Windows driver tests have yet been performed.
Before a production-approved release, complete and record: correct COM driver and discovery; verified 0503 identification; H186 0601 status interpretation on your exact E5CC-T; full DA read-back including unused slot memory; C3 values and button-screen confirmation; time encoding verification against the physical display; RAM write vs saved memory persistence; interrupted transfer tests; second-channel tests; independent physical safety interlock checks; and a source-reviewed signed Windows build in the actual corporate environment.
Troubleshooting
| Symptom | Safe action |
|---|---|
| No COM port | Check E58-CIFQ2 driver/USB recognition in Device Manager. Do not guess other devices’ COM ports. |
| No STX / response timeout | Check USB cable, port assignment, cable driver, and whether CX-Thermo is already using the port. No writes are sent on identify. |
| Wrong model | Stop. This version is only for E5CC-T family with physical confirmation of exact suffix. |
| Preflight mismatch | Backup can proceed. Do not upload until the setting is understood, adjusted manually by a competent person, and re-verified. |
| Backup fails | Do not upload. Save the log, retain original controller data and diagnose the read error. |
| 2203 Omron operation error | Inspect control status, protections, communication-write mode and setup area. Do not blindly retry any write. |
| Mismatch after staging / save | Do not energise. Save logs and backup. Manually inspect and recover according to approved commissioning procedure. |
| Antivirus/IT blocks EXE | Obtain IT approval for the unsigned custom application; do not bypass security settings. |
© User’s local engineering project. Not an Omron product, not an Omron-endorsed tool, and not a certified safety controller.