# Sweet Grass site guide Verified through production Configure Pages and native element Copy on 2026-10-21 (America/Edmonton). This was a read-only context survey: no page saves, pastes, register writes, alarm changes, device actions, or operational command tests. Bindings describe the configured UI, not proven PLC behavior. No credentials or camera/map endpoints are retained. ## Identity and coverage Production: https://www.atomhmi.com/site_sweetgrass/ Configure: https://www.atomhmi.com/site_sweetgrass/configure_pages Catalog remains 51 pages. PAGE-INVENTORY.md preserves the full list from October 20. October 21 refreshed the catalog and selected active pages, resolving both previous motor-tree inspection gaps. Combined historical coverage now includes every listed page tree, but this is not an audit of every element's behavior. ## Useful starting pages | Page | Slug | Roots / element count observed October 21 | | --- | --- | --- | | Overview | overview | Main Selection; 49 | | Center Receiving | center_receiving | Control Row; 228 | | South Receiving | south_receiving | Control Row; 83 | | Receiving Sequence | receiving_sequence | Control Row; 100 | | Crimping | crimping | Control Row; 103 | | Groater | groater | Control Row; 313 | | Shipping | shipping | Control Row; 103 | | dryer | dryer | Dryer Chart Div + Overview Row; 137 | | Power Main | power_main | Menu + Main Row + Table; 186 | | Power Dryer | power_dryer | Menu + Main Row + Table; 186 | | Motors | motors | Motors; 1,435 | | old Motors | old_motors | Motors; 1,246 | | Receiving PID Tuning | receiving_pid_tuning | no roots/elements | Use Overview for compact status cards; Center/South Receiving for routing and sequence controls; Groater for dropdown and equipment control; Shipping for four-state indicators and destination selection; dryer for chart-plus-controls; Power pages for chart/readouts/tables. Empty Receiving PID Tuning is not an established tuning interface. ## Motor tree gap resolved Motors and old Motors both loaded on October 21. Native Copy exported each whole root; active Motors has 103 direct children and old Motors has 83. These include menu/group structure, so do not interpret the counts as a proven motor count. Active groups include dryer-style m02_01 through m90 families and other groups named M001, M002, M016, M101, M202, M301, etc. Group names and prefixes differ; inspect each intended unit rather than applying one global rename. Representative active dryer motor m02_01: | Function | Configured binding | | --- | --- | | Auto/Manual | main:dryer_g_m02_01_in_autoMode; 1/0 | | Start | main:dryer_g_m02_01_in_manFwd; writes 1 | | Stop | main:dryer_g_m02_01_in_manStop; writes 1 | | Hertz display | main:dryer_g_m02_01_out_speedActHz | | Hertz write target | main:dryer_g_m02_01_in_manSpeedRef; direct value | | Time since start | main:dryer_g_m02_01_out_tss multiplied by 1000; non-editable HH:mm:ss | The editable Hertz field intentionally separates actual-speed display from manual demand target. A configured target on the non-editable time display does not authorize writing an output. For large trees, use the root's direct Copy control rather than resolving every descendant button. Reload a clean Configure Pages session before each large page; accumulated previews caused timeouts during this survey. See ATOMHMI-PLAYBOOK.md. ## Prior verified context retained The October 20 study in SITE-STUDY.md established: - Device IDs global (Global) and main (Main PC). - Main PC slave labels Codesys PLC, Groater PLC, Main PLC, SG Dryer, Shipping PLC, Terminal. - Page → device-qualified register → slave → PLC tag mapping. Register presence does not establish enabled/updating/logged state. - Overview's six-state indicator references main:dryer_g_m77_01_out_status. - Center Receiving Start targets main:recvSeqStart with value 1. - A Center Receiving ratio reads main:dryer_g_centRecBin21Ratio but writes main:dryer_g_centRecBin21RatioSel, writeValue=value. Limits checkbox was false despite populated 0/100. - Sample dryer status address: tag sg_dryer.g.m77_01.out_status; enabled On Change/one-second polling, logging disabled in that earlier inspected definition. These are dated prior observations, not a new register-table audit on October 21. The prior counts of 20,055 register definitions and 1,538 alarm definitions are historical, not freshly verified totals. ## Future work boundaries Use this guide and the earlier full catalog instead of repeating the general survey. Verify current Title/slug and the particular subtree before editing. Preserve roots, location anchors, read/write distinctions, state mappings, chart series/scales/navigator and time conversions. No PLC commands, setpoint writes, motor tests, alarm-latching changes or device actions were performed. History retention, alarm notification/latching and physical interlocks remain outside this survey. Old/test page names do not establish which content is current or safe to modify. ## Bin G Hi-Hi enable/disable investigation — October 21, 2026 User requested an Atom HMI enable/disable control for Sweet Grass Bin G Hi-Hi. Inspected production https://www.atomhmi.com/site_sweetgrass/ after reading repository instructions and cloud knowledge/site guide. No site changes or operational writes were made; target alarm path needs clarification. Verified in Main PC (main): - HMI alarm ALM-436 has description ALM-436, message "Bin G Full", calculation `|{register:main:Alm436}|`, enabled true, latching false, Warning importance, one-second update, zero on/off delays, notification groups Atom Notifications and Default Notifications. - Source register Alm436 is enabled, observed 0, Main PLC slave, Modbus slave 1, Coil 4427, Bit format, bit 0, Swapped checked; On Change/two-second update, logging disabled. - Separate Codesys register clean_g_binG_lvl_limits_hihi_alm_in_en has description Bin G level and address `{ "tag": "sg_cleaning.g.binG_lvl.limits.hihi.alm.in_en" }`. Enabled is unchecked; configured On Change/one-second update and logging disabled. No current value was available. This is a candidate alarm-enable input, not a verified control for ALM-436. - Separate clean_g_binG_lvl_limits_hihi_in_en, ...hihi_in_sp, ...hihi_out and ...hihi_alm_out definitions also exist with Enabled No. Do not conflate threshold enable with alarm enable or infer PLC write ownership from names. - clean_g_binG_lvl_out_eu is enabled and observed about 84.45–84.56; this readback does not establish the alarm path. - Main PC tables currently report 20,055 registers and 1,538 alarms. Searching Bin alarm messages found ALM-436 but no Bin G Hi-Hi message. - Navigation Bins opens page_bin_2 (editor Title Bin 2, slug bin_2), which displays Bin G among the bin gauges. The separately configured Bins page (slug bins) displays H/J/bagging/K/L/M/N and is not the navigation target. Asked whether the intended control is the Codesys level Hi-Hi alarm or the existing Main PLC Bin G Full alarm. Next: resolve the intended path and verified writable setting, add a supported native enable/disable control on the relevant operator page, preserve existing state, save/reload and verify configuration. Do not write Alm436 or an alarm output to simulate enable. No polling, thresholds, alarm definitions, notifications, latching, pages, or equipment commands changed during this investigation. ### Alarm history lookup — October 21, 2026 User requested checking whether any Bin G alarm previously occurred. Opened the alarm icon → Alarm History at https://www.atomhmi.com/site_sweetgrass/alarm_history. Requested Last 30 Days (September 22–October 21, 2026), then freshly reloaded and requested October 21, and finally Yesterday (October 20). Every attempt remained on Loading... without a history table, records, or an explicit empty-result message. No browser warning/error logs were captured. Occurrence, timestamps and retention therefore remain unverified; this is not evidence of no prior Bin G alarms. No acknowledgement, reset, alarm edits, register writes or page saves performed. User-confirmed update on October 21, 2026: Atom HMI was just updated and alarm logs moved to a new database; previous history is no longer available. This supersedes the earlier plan to retry for pre-migration records. Historical Bin G occurrences cannot be determined from the current database. The migration explains unavailable prior history, but the cause of the observed Loading... UI was not independently established. The intended Bin G enable/disable alarm path remains unresolved; determine it from current configuration or user/PLC confirmation. ## Bin Hi/Hi-Hi alarm source audit — October 21, 2026 User-confirmed direction: the old Main Plant PLC is a Horner; alarms formerly on it should move to the new Codesys plant PLC. This audit reads HMI configuration, not PLC source logic. Configured source slave establishes where Atom reads an alarm bit; it does not prove whether that PLC computes or forwards it. Production https://www.atomhmi.com/site_sweetgrass/; device Main PC (main). Inspected 39 unique high/high-high/high-shutdown/full HMI alarm definitions and their source registers: 17 Main PLC, 5 Groater PLC, 13 Codesys PLC, 4 SG Dryer. Included equipment level messages that omit "bin"; not a full plant alarm migration audit. No site configuration saves, polling changes, acknowledgements, resets, commands or PLC writes. ### Legacy Main PLC (main_plc; user identifies old Horner) Each ALM-NNN calculation is exactly `|{register:main:AlmNNN}|`. All 17 source registers have polling Enabled checked. Modbus slave ID 1, Coil addresses shown as configured (no address-base conversion). | Equipment / messages | HMI alarm IDs | Source register IDs | Coils | HMI alarm enabled | | --- | --- | --- | --- | --- | | Air Screen Bin Level High Alarm / High Shutdown | ALM-014 / ALM-015 | Alm014 / Alm015 | 4005 / 4006 | Both Yes | | Indent Bin Level High Alarm / High Shutdown | ALM-019 / ALM-020 | Alm019 / Alm020 | 4010 / 4011 | Both Yes | | Grader Bin Level High Alarm / High Shutdown | ALM-024 / ALM-025 | Alm024 / Alm025 | 4015 / 4016 | Both No | | Paddy Bin Level High Alarm / High Shutdown | ALM-064 / ALM-065 | Alm064 / Alm065 | 4055 / 4056 | Both Yes | | Bin H Level Hi / HiHi | ALM-124 / ALM-125 | Alm124 / Alm125 | 4115 / 4116 | Both Yes | | Bin J Level Hi / HiHi | ALM-134 / ALM-135 | Alm134 / Alm135 | 4125 / 4126 | Both Yes | | Bagging Bin Level Hi / HiHi | ALM-139 / ALM-140 | Alm139 / Alm140 | 4130 / 4131 | Hi No; HiHi Yes | | Bin 21 High Level | ALM-343 | Alm343 | 4334 | Yes | | Screenings Bin Full | ALM-435 | Alm435 | 4426 | Yes | | Bin G Full | ALM-436 | Alm436 | 4427 | Yes | ### Other PLCs must remain distinct Groater PLC (groater_plc), Modbus slave 1, Coil: ALM-1410 Bin H Hi → Alm1410/4401; ALM-1411 Bin H HiHi → Alm1411/4402; ALM-1412 Bin J Hi → Alm1412/4403; ALM-1413 Bin J HiHi → Alm1413/4404; ALM-1414 Bin i Hi → Alm1414/4405. All HMI alarms and source polling enabled. Calculations reference their respective main:AlmNNNN register. The H/J entries are not the same source as the Main PLC "Level" entries. Codesys PLC (codesys_plc): existing HMI alarm IDs and source register IDs are identical: - clean_g_bin01_lvl_limits_hi_alm_out through bin06, plus bin11: messages Bin 1–6 / 11 High Level; all HMI alarms and polling enabled. Addresses individually verified: sg_cleaning.g.binNN_lvl.limits.hi.alm.out. - clean_g_m08_lvl_limits_hi_alm_out and ...hihi_alm_out: M08 Air Screen Level Hi / Hi Hi. - clean_g_m12_lvl_limits_hi_alm_out and ...hihi_alm_out: M12 Grader Level Hi / Hi Hi. - clean_g_m14_lvl_limits_hi_alm_out and ...hihi_alm_out: M14 Paddy Level Hi / Hi Hi. All six equipment alarms and source polling enabled; addresses individually verified as sg_cleaning.g.mNN_lvl.limits.hi.alm.out or .hihi.alm.out. Every calculation directly references its matching main: register. Thus Air Screen/Paddy retain enabled Horner and enabled Codesys alarm paths; Grader's Horner definitions are already disabled. Similar equipment names establish migration candidates, not proven equivalence of thresholds, delays, inputs or shutdown logic. SG Dryer (sg_dryer): four enabled HMI alarms and enabled source registers: dryer_g_bin21Lvl_limits_hi_alm_out, ...bin21Lvl_limits_hihi_alm_out, ...bin22Lvl_limits_hi_alm_out, ...bin22Lvl_limits_hihi_alm_out. Direct matching-register calculations. Addresses individually verified as sg_dryer.g.bin21Lvl/22Lvl.limits.hi/hihi.alm.out. Do not classify these as the Codesys plant slave merely because addresses use symbolic tags. ### Replacement gaps and next steps - Indent: candidate Codesys registers clean_g_m10_lvl_limits_hi_alm_out and ...hihi_alm_out both exist, individually mapped to codesys_plc tags sg_cleaning.g.m10_lvl.limits.hi/hihi.alm.out, but polling disabled. Alarm search m10_lvl returned over/under fault definitions only, no Hi/HiHi definitions. - Bin G: clean_g_binG_lvl_limits_hihi_alm_out individually verified on codesys_plc at sg_cleaning.g.binG_lvl.limits.hihi.alm.out; polling disabled. Register table also shows Hi output disabled. Alarm search binG returned no matches; "Bin G Full" ALM-436 still reads Main PLC. Earlier alarm-enable candidate .hihi.alm.in_en remains unpolled and untested. - Numbered bins 1–6 and 11 have HiHi output register definitions, polling disabled; inspected bin-message inventory has only their Hi alarm definitions. - Register tables also show A/B/C/F/G/T Hi and HiHi output definitions unpolled. Their complete mappings and intended service were not audited. - No Codesys replacements for Main PLC Bin H/J/Bagging/Screenings were verified in this pass. Bin 21 has a verified SG Dryer alternative, not an established plant-Codesys replacement. - Next: compare controller program mapping, sensor identity, thresholds, delays, enable ownership and shutdown semantics before replacing sources. Start with existing Air Screen/Grader/Paddy Codesys pairs, then address Indent and Bin G gaps. Preserve alarm messages, notifications and required behavior, and avoid duplicate notifications during cutover. Do not retire Groater/Dryer alarms as part of a Horner-only migration without verifying scope. - The user-confirmed database migration means pre-update alarm history is unavailable; it cannot establish whether a legacy path was used.