120 lines
11 KiB
Markdown
120 lines
11 KiB
Markdown
# Lazy B Farm & Ranch 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 scope
|
||
|
||
Production: https://www.atomhmi.com/site_lazy_b/
|
||
Configure: https://www.atomhmi.com/site_lazy_b/configure_pages
|
||
|
||
All 21 page trees were opened on October 21. Native Copy inspected representative main, sequence, water, valve, compressor and boiler subtrees. The site combines water/heating (`water` device prefix) and grain handling (`grain`). Development equivalence, PLC tag addresses, polling/logging and alarm latching were not verified.
|
||
|
||
## Page map
|
||
|
||
| Configure label | Slug | Role / roots |
|
||
| --- | --- | --- |
|
||
| Main | main | Trend + Wells and Pumps |
|
||
| Outflow | outflow | div + row; 127 elements |
|
||
| Well 1 | well_1 | div + operating row + information/map row; 111 elements |
|
||
| Well 2 | well_2 | same three-root layout; 104 elements after timer removal |
|
||
| Well 3 | well_3 | same three-root layout; includes motor/speed control |
|
||
| Air Compressor | air | layout div + all operating root |
|
||
| Boiler | boiler | layout div + row operating root |
|
||
| House Valve | valve | spacer + all operating root |
|
||
| Alarms | alarms | spacer + all; 16 elements |
|
||
| Grain Alarms | grain_alarms | Main; 209 elements |
|
||
| Grain Motors | grain_motors | Motors; 357 elements |
|
||
| Receiving | receiving | Control Row; 77 elements |
|
||
| Receiving Start Stop Delays | rec_startstopdelays | Motors; 52 elements |
|
||
| Reclaim | reclaim | Control Row; 91 elements |
|
||
| Reclaim Start/Stop Delays | rcl_startstopdelays | Motors; 112 elements |
|
||
| Loadout | loadout | Control Row; 23 elements |
|
||
| Device Status (Grain) | device_status_grain | All; 111 elements |
|
||
| Device Status (Water) | device_status_water | All; 106 elements |
|
||
| Settings | settings | div + Wells and Pumps; 65 elements |
|
||
| Testing | testing | one Adjustible Gauge named Well 1 Flow rate |
|
||
| testing grounds | test | Trend; 60 elements |
|
||
|
||
Navigation table listed Grain Motors, Loadout, main, Main, Outflow, Receiving, Reclaim, Settings. Both main and Main target page_main. No cleanup performed. Well 1's inspected tree contains displays/charts and no switch/button motor-control types, while Wells 2 and 3 include controls. Do not assume the three wells have identical templates.
|
||
|
||
## Water examples: Well 3
|
||
|
||
Copied operating row contains 55 elements:
|
||
| Role | Binding | Display/configuration |
|
||
| --- | --- | --- |
|
||
| Flow | water:aiWell3Flow_eu | gpm; gauge 0–25 |
|
||
| Level | water:aiWell3Lvl_eu | ft |
|
||
| Run feedback | water:well3_q_run | On/Off |
|
||
| Mode | water:well3_i_autoMode | 1 Auto / 0 Manual; separate run feedback |
|
||
| Start / Stop | water:well3_i_manStart / well3_i_manStop | each writes 1 |
|
||
| Off / On level SP | water:well3OffLvlSP / well3OnLvlSP | editable, 0–100% |
|
||
| Flow SP | water:Well3PIDSP | editable, 0–30 gpm |
|
||
| Manual speed | water:Well3SpeedRefManSP | editable, 0–90 Hz |
|
||
| Today / Yesterday volume | water:iWell3Vol_volDaily[0] / [1] | gal |
|
||
| Power | water:well3Power_kw | kW |
|
||
| Energy | water:well3Power_today_kwh / month_kwh / lastMonth_kwh | kWh |
|
||
| Historical levels | water:aiWell3LvlAgg_Past24Avg / Max / Min | ft |
|
||
|
||
Current flow/level chart navigator is water:aiWell3Flow_eu. Historical level navigator is water:aiWell3LvlAgg_Past24Avg, default button index 1. The information/map/report root is separate; preserve it during control-page replacement and do not publish its location details unnecessarily.
|
||
|
||
**Resolved by removal — October 21, 2026:** at the user's request, removed Time Since Start and Hours from production Well 2 (well_2) and Well 3 (well_3). Both pages had copied wellNW1 references with no verified corresponding Water System timer registers. Removed only elements 3a7413f1-6213-44be-842c-350f715ceb6d and c8a9b2ea-35d5-448b-9d68-756715e25df6 (Well 2), and 6e6f612c-c2e5-4ee9-a468-849e6191b523 and 4e613f5b-e0e3-4526-88dd-b9a81695d75e (Well 3). Saved both pages and freshly reopened: Well 2 element count 106→104; Well 3 124→122; the only removed IDs were these four and no elements were added. Runtime pages show the remaining motor controls without timer fields. Well 1 has no timer fields and was unchanged. Local native Copy backups: /tmp/lazy-b-well-timer-removal-backup.json. No PLC counters were reset, register definitions altered, or operational commands submitted. Removal supersedes the earlier request to locate replacement timer bindings; adding timers later requires verified PLC tags/units.
|
||
|
||
**Historical audit before removal — October 21, 2026:** rechecked production Well 3 (`well_3`). Time Since Start, element `6e6f612c-c2e5-4ee9-a468-849e6191b523`, then read `|{register:water:wellNW1_tssTmr}| * 1000`, non-editable, HH:mm:ss, blank updateRegister. Hours, element `4e613f5b-e0e3-4526-88dd-b9a81695d75e`, then read `|{register:water:wellNW1_totalTmr}| * 1000`, editable, writes `value / 1000` to `water:wellNW1_totalTmr`, format d [days] HH:mm. Captured both original configurations and left them unchanged. The Water System (water) register table contained 1,660 entries; searches for tss, totalTmr, runtime and wellNW1 returned no matches. The Well 3 family has no verified replacement for either timer. Existing enabled `iWell3Vol_rtDaily[0]` / `[1]` are daily counters, not established equivalents of time-since-start or lifetime Hours; units were not independently verified. `well3Power_total_onTime` exists disabled and is likewise not a verified replacement. Disabled `well3_i_UTS` has blank description, slave Well Shack 2080-LC20-20QBB, address well3.i.UTS; its role/units do not establish a timer binding. Do not invent well3_tssTmr/well3_totalTmr mappings or enable an unrelated counter. Initially requested correct PLC tags, units and lifetime-counter write semantics; the user subsequently chose removal instead. No page/register saves, counter resets, polling changes or operational tests were performed.
|
||
|
||
## Valve, compressor and boiler
|
||
|
||
House Valve:
|
||
- Feedback reads `water:doHouseVlvOp` and `water:doHouseVlvCl`.
|
||
- Mode `water:HouseVlvAuto`, 1/0.
|
||
- Open / Close / Stop → `water:HouseVlvCmdOpen` / `HouseVlvCmdClose` / `HouseVlvCmdStop`, each 1.
|
||
- Maintain Pressure `water:spHousePrs` and Deadband `water:spHouseVlvCtrlDb`, direct editable values with configured limits 0–100 psi.
|
||
|
||
Air Compressor:
|
||
- Feedback `water:AirComp_q_run`; mode `AirComp_i_autoMode`, 1/0.
|
||
- Start/Stop → `water:AirComp_i_manStart` / `AirComp_i_manStop`, each 1.
|
||
- On Time displays `water:AirCompTimeSP * 1000` in Timespan (ms), writes `value / 1000`. Preserve conversion symmetry.
|
||
|
||
Boiler:
|
||
- Pressure `water:aiBoilerPrs_eu`, psi.
|
||
- Water temperature `water:aiBoilerTe_eu`, °F.
|
||
- Outside temperature `water:aiAmbianteu`, °C.
|
||
- Trend uses separate case-sensitive scales `temp` (0–200 °F), `psi` (0–20), `Temp` (-40–40 °C), navigator water:aiBoilerTe_eu.
|
||
- Internal element names such as Well 3 Water Temp / boiler water temp do not reliably describe their displayed binding.
|
||
|
||
## Grain sequences
|
||
|
||
| Function | Receiving | Reclaim |
|
||
| --- | --- | --- |
|
||
| Status | grain:g_rec_out_status | grain:g_rcl_out_status |
|
||
| Destination/source selection | grain:g_b_recDstIdx | grain:g_b_rclSrcIdx |
|
||
| Start | grain:g_rec_in_manStart = 1 | grain:g_rcl_in_manStart = 1 |
|
||
| Normal stop | grain:g_rec_in_manStop = 1 | grain:g_rcl_in_manStop = 1 |
|
||
| Rapid stop | grain:g_hmiRecRpdStp = 1 | grain:g_hmiRclRpdStp = 1 |
|
||
| Timed-stop value | grain:g_rec_in_manOnMaxSP | grain:g_rcl_in_manOnMaxSP |
|
||
|
||
Both timed-stop fields use Timespan (ms), direct writeValue=value, configured limits 0–356400000 and HH:mm:ss. Their disable buttons write 0 to the same target. Receiving enable uses grain:g_recEn (1/0). Its chart includes M01/M03/M04 speed % and current A; navigator grain:g_m01_out_current.
|
||
|
||
Receiving also shows M02Temp, M01, M02, M03, M04 feedback. M03 current control uses grain:g_m03CurCtlEn, g_m03CurSp, g_m03PID_Kp and g_m03PID_Tn. Kp/Tn limits=false despite populated 0/100 fields. Tn's displayed suffix is KP, a possible label issue left unchanged.
|
||
|
||
Reclaim includes M21–M29 run feedback among its motor cards. Reopen the precise motor before adapting it.
|
||
|
||
Loadout controls M41:
|
||
- Position buttons target grain:g_m41_in_autoPos with values 0,20,40,60,80,100.
|
||
- Mode grain:g_m41_in_autoMode (1/0); Open/Stop/Close grain:g_m41_in_manOpen/manStop/manClose, each 1.
|
||
- One internal name is 100% Button but its configured value is 80; another writes 100. Internal element names alone are insufficient to establish a button's behavior.
|
||
- Status expression references grain:g_m41_out_fault/open/close. No claim about physical valve movement or interlocks.
|
||
|
||
## Motor RPM trends added — October 21, 2026
|
||
|
||
User-authorized production graph change at https://www.atomhmi.com/site_lazy_b/ (the requested site_lazyb resolves in project context to Lazy B, site_lazy_b). Edited existing Trend forms through Configure Pages; no register definitions, polling, setpoints or operational commands changed.
|
||
|
||
- Receiving (page_receiving), Trend 8ba2e7b6-c517-4a04-b8db-aa9479111724: retained six speed/current series and added M01 RPM, M02 RPM, M03 RPM, M04 RPM, bound respectively to grain:g_m01Spd_out_eu through grain:g_m04Spd_out_eu. Colors: M01 blue #0072B2; M02 vermilion #D55E00; M03 green #009E73; M04 purple #CC79A7.
|
||
- Reclaim (page_reclaim), Trend 88723cfc-585b-4e32-bf0f-fdacca341fca: retained M31 speed/current and added M29 RPM (blue #0072B2), M30 RPM (vermilion #D55E00), M31 RPM (green #009E73), using grain:g_m29Spd_out_eu, grain:g_m30Spd_out_eu, grain:g_m31Spd_out_eu.
|
||
- Each graph has its own RPM scale (name/id RPM), min 0, automatic maximum, opposite true, neutral #444444 title/labels. The native renderer adds tickAmount "7". Colors distinguish RPM sensors within each sequence graph; they do not indicate alarm state.
|
||
- Verified these RPM bindings from existing read-only numerical displays. M02TEMP and M02 both reference g_m02Spd_out_eu; charted this sensor once as M02 RPM. Separate physical sensor ownership for M02TEMP remains unverified. M21–M28 cards on Reclaim have no RPM display. Grain Motors has no Trend components in its current editor tree.
|
||
- Saved both pages and freshly reloaded/reopened native Copy configurations. Full subtree comparisons, excluding regenerated data.id values, matched the intended series/scale additions plus native tickAmount only. Original element IDs and other configuration were retained. Fresh runtime pages show all seven RPM legend entries and RPM axes. Motors were off at verification; nonzero historical RPM plotting was not established.
|
||
- Local originals: /tmp/lazy-b-rpm-backup.json. Runtime screenshots: /tmp/lazy-b-receiving-rpm.png and /tmp/lazy-b-reclaim-rpm.png. These local artifacts are not committed.
|
||
|
||
## Future use
|
||
|
||
Use Main/Settings for navigation context, the specific well for water, Receiving/Reclaim for sequence controls, and Grain Motors for individual equipment. Diagnostics contains consequential maintenance actions; inspect its element configuration without clicking the operational buttons. Treat alarms pages as UI content, not an audit of Manage Alarms definitions. Test-named pages are existing content, not authorized disposable pages. |