Merge pull request 'Phase 10: Graphic Display Setup, Edit Module, Advanced Operating Graphics' (#10) from docs/phase-10-graphics into main
Reviewed-on: cliu/ci-server-config#10
This commit is contained in:
commit
a3b1487c33
12 changed files with 1067 additions and 168 deletions
39
.claude/skills/graphics/SKILL.md
Normal file
39
.claude/skills/graphics/SKILL.md
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
---
|
||||||
|
name: graphics
|
||||||
|
description: >-
|
||||||
|
CI Server R1.03 operator graphics: displays, symbols, layouts and HTML displays. Use when the
|
||||||
|
user wants to create or change a display or symbol in the Edit Module (number field, text,
|
||||||
|
alarm overview, trend, buttons, actions, parameters, connecting a component to an item),
|
||||||
|
deploy or remove display files, export displays to HTML / Mobile Operator, open a display in a
|
||||||
|
web browser (localhost:8080/mobileoperator), validate, search or unlock displays (jwuiutl,
|
||||||
|
.lck files), find where displays, symbols and layouts are stored (DEPLOY folder,
|
||||||
|
Layouts.xml), change layouts, menus, toolbars or frames, build dataset forms (*Dia.xml), or
|
||||||
|
use the AOG library (Advanced Operating Graphics, AOG_Style, AOG symbols, faceplates). Sources
|
||||||
|
IM 36K10C50-01EN, IM 36K10R30-01EN, IM 36K10C60-01EN.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Graphics: displays, symbols, layouts (R1.03)
|
||||||
|
|
||||||
|
Background: `knowledge/manuals/IM36K10C50-01EN.md` (Edit Module, components, sheets, symbols,
|
||||||
|
`jwuiutl`, display file contents), `IM36K10R30-01EN.md` (folders, layouts, dataset forms, HTML
|
||||||
|
display), `IM36K10C60-01EN.md` (AOG library).
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
- Drawing is done by the user in the **Edit Module** (GUI). Claude prepares the steps, checks the
|
||||||
|
saved XML, deploys/exports/validates files and checks the HTML display in the browser.
|
||||||
|
- Displays and layouts are shared by every operator: changing or deleting existing files only
|
||||||
|
with the user's approval; keep a copy first (`Layouts-original.xml` is the factory layout file).
|
||||||
|
- The HTML display needs a CI Server login: the user logs in; Claude never enters passwords.
|
||||||
|
Reloading the browser page logs out — use the display menu *View > Reload*, and the display
|
||||||
|
box to open other displays.
|
||||||
|
- `jwuiutl -vf`, `-u`, `-c`, `-a` rewrite or unlock files of **all** displays: only with approval.
|
||||||
|
|
||||||
|
| Task | File | Status |
|
||||||
|
|---|---|---|
|
||||||
|
| Build a display in the Edit Module (text, number field, alarm overview, trend) and check the saved XML | `tasks/create-display.md` | verified |
|
||||||
|
| Deploy / remove display files, export HTML, validate and search with `jwuiutl` | `tasks/deploy-displays.md` | verified |
|
||||||
|
| Open and check a display in the browser (HTML display / Mobile Operator) | `tasks/deploy-displays.md` §4 | verified |
|
||||||
|
| Layouts (`Layouts.xml`), menus, toolbars, frames, dual screen | R30 summary §2 | from docs |
|
||||||
|
| Dataset forms (`*Dia.xml`) and the form description language | R30 summary §3 | from docs |
|
||||||
|
| Symbols, parameters, actions, localisation, record/playback | C50 summary §1, §4, §5 | from docs |
|
||||||
|
| AOG library (styles, symbols, faceplates, templates) | C60 summary | from docs |
|
||||||
50
.claude/skills/graphics/tasks/create-display.md
Normal file
50
.claude/skills/graphics/tasks/create-display.md
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
task: Build a display in the Edit Module and check the saved file
|
||||||
|
version: R1.03
|
||||||
|
source: IM 36K10C50-01EN §1.2, §1.7, §2, §4.8.1; practiced on CI-Eng-Sample (display CIENG_Tank) 2026-10-01
|
||||||
|
status: verified
|
||||||
|
---
|
||||||
|
|
||||||
|
# Build a display (Edit Module)
|
||||||
|
|
||||||
|
The user draws; Claude gives the steps and checks the result. Example = the sample display
|
||||||
|
`examples/CI-Eng-Sample/displays/CIENG_Tank.xml`.
|
||||||
|
|
||||||
|
## Steps for the user
|
||||||
|
|
||||||
|
1. Start the Edit Module and log in.
|
||||||
|
2. *File > New Display*, name `<DisplayName>`; tick **HTML display** if it should also run in a
|
||||||
|
browser (the editor then hides unsupported components and properties).
|
||||||
|
3. Add components from the component bar, for example:
|
||||||
|
- **Text** — title.
|
||||||
|
- **Number field** — in the Properties sheet click **Value**, open the connection dialog,
|
||||||
|
*Items* tab, pick `<Section>.<Tag>`.
|
||||||
|
- **Alarm Overview** — right-click > *Component Properties*; *Filter* tab for an ASA, section
|
||||||
|
or tag filter; *Types* tab for current/historical.
|
||||||
|
- **Trend** — component properties, pen 1 = `<Section>.<Tag>` (a new trend has 5 empty pens;
|
||||||
|
the item must be in a storage group).
|
||||||
|
4. *File > Save* (or *Save with Revision Information*). Close the tab when done: an open
|
||||||
|
display is locked (`<DisplayName>.lck`) and `jwuiutl` skips it.
|
||||||
|
|
||||||
|
## Check the saved file
|
||||||
|
|
||||||
|
Folder `%TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\displays\` (and with HTML mode also
|
||||||
|
`%TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY\displays\<DisplayName>.html`).
|
||||||
|
|
||||||
|
```
|
||||||
|
grep -n "<html>\|<width>\|<height>\|itemName\|itemId\|<source" <DisplayName>.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
- `<html>true</html>` = HTML mode; `<width>`/`<height>` must be set for the HTML display.
|
||||||
|
- Item connections: `<itemName>` + `<itemId>` (node.group.number…); trend pens:
|
||||||
|
`<source type="sourceID" uri="ci:/item/<item>"/>` (`uri=""` = empty pen).
|
||||||
|
- The name is what counts: after the item was deleted and loaded again (new id) the display
|
||||||
|
still validated and a new session showed live values; already-open sessions kept showing the
|
||||||
|
old value until reopened.
|
||||||
|
|
||||||
|
## Verified (CIENG_Tank, 2026-10-01)
|
||||||
|
|
||||||
|
Text `CI-Eng-Sample Tank 1`, number field on `TANK1.LEVEL` (live: 72 → 61), alarm overview
|
||||||
|
(no filter; listed the TANK1.LEVEL alarms), trend pen `TANK1.LEVEL` (legend
|
||||||
|
`CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` = highest-priority storage group). In the HTML
|
||||||
|
display the trend drew no line (ISS-041).
|
||||||
57
.claude/skills/graphics/tasks/deploy-displays.md
Normal file
57
.claude/skills/graphics/tasks/deploy-displays.md
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
---
|
||||||
|
task: Deploy, remove, export, validate and search displays; open them in the browser
|
||||||
|
version: R1.03
|
||||||
|
source: IM 36K10C50-01EN §1.5; IM 36K10R30-01EN §1.1, §4; practiced on CI-Eng-Sample 2026-10-01
|
||||||
|
status: verified
|
||||||
|
---
|
||||||
|
|
||||||
|
# Deploy and check displays
|
||||||
|
|
||||||
|
No admin rights needed (`C:\Users\Public\Yokogawa\tls\wap`). `jwuiutl.cmd` is in `tls\com`
|
||||||
|
(on `PATH`); call it through `cmd` (`cmd /c "jwuiutl.cmd …"`).
|
||||||
|
|
||||||
|
## 1. Deploy / remove (sample scripts)
|
||||||
|
|
||||||
|
`examples/CI-Eng-Sample/displays/deploy_displays.cmd`: copies `CIENG_Tank.xml` to
|
||||||
|
`%TLS_WAP_PATH%\cfg\operatorInterfaces\DEPLOY\displays\` and runs
|
||||||
|
`jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_Tank` (HTML into
|
||||||
|
`%TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY\displays\`).
|
||||||
|
`remove_displays.cmd` deletes both files (close the display in the Edit Module first).
|
||||||
|
Deploy after `load.cmd` so the items exist.
|
||||||
|
|
||||||
|
For another display: copy `<name>.xml` into `DEPLOY\displays` and export it the same way.
|
||||||
|
Displays with symbols also need the symbol files in `DEPLOY\symbols`.
|
||||||
|
|
||||||
|
## 2. Validate (report only)
|
||||||
|
|
||||||
|
```
|
||||||
|
cmd /c "jwuiutl.cmd -d -v -i -l <scratch>\validate.txt"
|
||||||
|
```
|
||||||
|
|
||||||
|
Per display: `Validating <name>` then `Info: No problems found`, or `*** Validation failed for
|
||||||
|
display <name>:` with `Problem: <component>: Connected item is not found (<item>)`. Skipped:
|
||||||
|
`*** Display locked <name>` (open in the Edit Module or a stale `.lck`; `-u` unlocks — with
|
||||||
|
approval), displays saved by a newer version. `-vf` re-saves all displays — only with approval.
|
||||||
|
|
||||||
|
## 3. Search
|
||||||
|
|
||||||
|
```
|
||||||
|
cmd /c "jwuiutl.cmd -d -m <term> > <scratch>\match.txt 2>&1"
|
||||||
|
```
|
||||||
|
|
||||||
|
CSV `Type, File, Component` per match; `-M` adds actions and properties. Use it before deleting
|
||||||
|
or renaming items to find the displays that use them.
|
||||||
|
|
||||||
|
## 4. Open in the browser (HTML display)
|
||||||
|
|
||||||
|
`http://localhost:8080/mobileoperator/?d=<display>` (`&l=<layout>`). The user logs in with a CI
|
||||||
|
Server user. The page shows the operator frame (menu, navigation buttons, alarm banner, status
|
||||||
|
line). To switch displays type the name in the display box and press Enter. To refresh, use the
|
||||||
|
display menu **View > Reload** (keeps the session) — **reloading the browser page ends the
|
||||||
|
session** and needs a new login. Check live values by writing a test value (`itmval -p`, test items only).
|
||||||
|
|
||||||
|
## Verified (2026-10-01)
|
||||||
|
|
||||||
|
Remove → deploy recreated both files; `-e HTML` output identical to the Edit Module's HTML;
|
||||||
|
validation of `CIENG_Tank` *No problems found* (also after a sample reload with new item ids);
|
||||||
|
search worked; browser showed live values. HTML trend without line: ISS-041.
|
||||||
|
|
@ -99,6 +99,8 @@ New items start with status 13 (`NOT INIT`) until a value is written.
|
||||||
| `equipment/eqpciengslv_start.cmd`, `_stop.cmd` | Start/stop the Modbus slave mirror (copy to `tls\com`) |
|
| `equipment/eqpciengslv_start.cmd`, `_stop.cmd` | Start/stop the Modbus slave mirror (copy to `tls\com`) |
|
||||||
| `76_`…`93_remove_*.qli` | Names to delete, in reverse order (alarm definitions last, `93`) |
|
| `76_`…`93_remove_*.qli` | Names to delete, in reverse order (alarm definitions last, `93`) |
|
||||||
| `load.cmd`, `remove.cmd` | Run the steps in the right order |
|
| `load.cmd`, `remove.cmd` | Run the steps in the right order |
|
||||||
|
| `displays/CIENG_Tank.xml` | Display (HTML mode): title, number field on `TANK1.LEVEL`, alarm overview, trend of `TANK1.LEVEL` |
|
||||||
|
| `displays/deploy_displays.cmd`, `remove_displays.cmd` | Copy the display into the operator interface and export its HTML version / delete both |
|
||||||
| `monitoring/*.sup.txt` | Setup-file lines for the monitoring processes (not applied by `load.cmd`) |
|
| `monitoring/*.sup.txt` | Setup-file lines for the monitoring processes (not applied by `load.cmd`) |
|
||||||
|
|
||||||
## Modbus slave mirror (for station CIENG_PLC)
|
## Modbus slave mirror (for station CIENG_PLC)
|
||||||
|
|
@ -141,6 +143,13 @@ priority 1). To try it on a test system: `itmval -p -n CI-Eng-Sample.TANK1.LEVEL
|
||||||
(`NAME`, `ACK` 1), write the level back below 80. See skill `alarm-management`, task
|
(`NAME`, `ACK` 1), write the level back below 80. See skill `alarm-management`, task
|
||||||
`item-alarming.md`.
|
`item-alarming.md`.
|
||||||
|
|
||||||
|
## Display (optional)
|
||||||
|
|
||||||
|
After `load.cmd`, run `displays\deploy_displays.cmd` (no admin rights) and open
|
||||||
|
`http://localhost:8080/mobileoperator/?d=CIENG_Tank` (CI Server login), or open `CIENG_Tank` in
|
||||||
|
CI View / the Edit Module. `displays
emove_displays.cmd` deletes it again. See skill
|
||||||
|
`graphics`.
|
||||||
|
|
||||||
## Monitoring processes (optional)
|
## Monitoring processes (optional)
|
||||||
|
|
||||||
`monitoring/` holds the lines to add to the setup files in `%TLS_ROOT_PATH%\tls\sup\` so that
|
`monitoring/` holds the lines to add to the setup files in `%TLS_ROOT_PATH%\tls\sup\` so that
|
||||||
|
|
@ -152,7 +161,7 @@ testing. See the `system-management` skill, task `monitoring-processes.md`.
|
||||||
|
|
||||||
| Phase | Adds |
|
| Phase | Adds |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 10 | A display and symbol |
|
| 10 | A symbol (the display `CIENG_Tank` exists) |
|
||||||
| 11 | A report |
|
| 11 | A report |
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
|
|
||||||
487
examples/CI-Eng-Sample/displays/CIENG_Tank.xml
Normal file
487
examples/CI-Eng-Sample/displays/CIENG_Tank.xml
Normal file
|
|
@ -0,0 +1,487 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<visualization protocolVersion="1.3.0.0">
|
||||||
|
<globalSection/>
|
||||||
|
<coreObjectDefinition type="displayDefinition">
|
||||||
|
<version type="version" value="1.3.0.0"/>
|
||||||
|
<html>true</html>
|
||||||
|
<width>1984</width>
|
||||||
|
<height>760</height>
|
||||||
|
<referenceCheck>4</referenceCheck>
|
||||||
|
<defaultBgColor type="colorSet" r="255" g="255" b="255"/>
|
||||||
|
<defaultFgColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<defaultFont type="font" name="Tahoma" size="11" underline="false" strikethrough="false"/>
|
||||||
|
<defaultStroke type="stroke" width="1.0"/>
|
||||||
|
<grid type="grid" gridVisible="true" snappingActive="true" verticalSnapInterval="8" horizontalSnapInterval="8" onTop="false">
|
||||||
|
<color type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
</grid>
|
||||||
|
<revisionHistory type="revisionHistory">
|
||||||
|
<revision type="revision" who="ADMIN" when="2026.10.01 14:29:31.493 AEST" what="Created" where="PXiSEDev"/>
|
||||||
|
</revisionHistory>
|
||||||
|
<blinkDelay>500</blinkDelay>
|
||||||
|
<blinkEnabled>true</blinkEnabled>
|
||||||
|
<mousePassThrough>false</mousePassThrough>
|
||||||
|
<visibilityGroup type="componentData">
|
||||||
|
<htmlId>2</htmlId>
|
||||||
|
<name>Overview</name>
|
||||||
|
<description>Always shown</description>
|
||||||
|
<minimumZoomEnabled>true</minimumZoomEnabled>
|
||||||
|
<minimumZoomFactor>10.0</minimumZoomFactor>
|
||||||
|
</visibilityGroup>
|
||||||
|
<visibilityGroup type="componentData">
|
||||||
|
<htmlId>3</htmlId>
|
||||||
|
<name>Rough</name>
|
||||||
|
<description>Shown when viewing viewing a large area</description>
|
||||||
|
<minimumZoomEnabled>true</minimumZoomEnabled>
|
||||||
|
<minimumZoomFactor>25.0</minimumZoomFactor>
|
||||||
|
</visibilityGroup>
|
||||||
|
<visibilityGroup type="componentData">
|
||||||
|
<htmlId>4</htmlId>
|
||||||
|
<name>Standard</name>
|
||||||
|
<description>Shown when using the default view setting</description>
|
||||||
|
<minimumZoomEnabled>true</minimumZoomEnabled>
|
||||||
|
<minimumZoomFactor>100.0</minimumZoomFactor>
|
||||||
|
</visibilityGroup>
|
||||||
|
<visibilityGroup type="componentData">
|
||||||
|
<htmlId>5</htmlId>
|
||||||
|
<name>Detail</name>
|
||||||
|
<description>Shown only when viewing a small area</description>
|
||||||
|
<minimumZoomEnabled>true</minimumZoomEnabled>
|
||||||
|
<minimumZoomFactor>400.0</minimumZoomFactor>
|
||||||
|
</visibilityGroup>
|
||||||
|
<visibilityGroup type="componentData">
|
||||||
|
<htmlId>6</htmlId>
|
||||||
|
<name>Intricacies</name>
|
||||||
|
<description>Shown only when viewing a very small area</description>
|
||||||
|
<minimumZoomEnabled>true</minimumZoomEnabled>
|
||||||
|
<minimumZoomFactor>1000.0</minimumZoomFactor>
|
||||||
|
</visibilityGroup>
|
||||||
|
<visualizationLayer type="componentData">
|
||||||
|
<htmlId>1</htmlId>
|
||||||
|
<name>Layer1</name>
|
||||||
|
</visualizationLayer>
|
||||||
|
<componentCountHint>4</componentCountHint>
|
||||||
|
<text type="componentData">
|
||||||
|
<htmlId>7</htmlId>
|
||||||
|
<value>CI-Eng-Sample Tank 1</value>
|
||||||
|
<stroke type="stroke" width="1.0"/>
|
||||||
|
<keepOriginalSize>true</keepOriginalSize>
|
||||||
|
<x>124.734375</x>
|
||||||
|
<y>36.953125</y>
|
||||||
|
<top>5.3125</top>
|
||||||
|
<bottom>5.3125</bottom>
|
||||||
|
<left>52.375</left>
|
||||||
|
<right>52.375</right>
|
||||||
|
<rotation>0.0</rotation>
|
||||||
|
<shear>0.0</shear>
|
||||||
|
</text>
|
||||||
|
<numberField type="componentData" x="120.0" y="120.0" top="16.0" bottom="16.0" left="40.0" right="40.0" rotation="0.0" shear="0.0">
|
||||||
|
<htmlId>8</htmlId>
|
||||||
|
<data type="data">
|
||||||
|
<action type="actionConnectTo">
|
||||||
|
<property type="property" name="numberField.value"/>
|
||||||
|
<filter type="filter">
|
||||||
|
<value>0.0</value>
|
||||||
|
</filter>
|
||||||
|
<connection type="connection">
|
||||||
|
<itemName>CI-Eng-Sample.TANK1.LEVEL</itemName>
|
||||||
|
<itemId>1.1.268.0.0.1.1.7</itemId>
|
||||||
|
<itemAttribute>ItemValue</itemAttribute>
|
||||||
|
</connection>
|
||||||
|
</action>
|
||||||
|
</data>
|
||||||
|
</numberField>
|
||||||
|
<alarmOverview type="componentData" x="1020.0" y="296.0" top="72.0" bottom="72.0" left="964.0" right="964.0" rotation="0.0" shear="0.0">
|
||||||
|
<htmlId>9</htmlId>
|
||||||
|
<data type="data">
|
||||||
|
<action type="actionInternalServiced"/>
|
||||||
|
</data>
|
||||||
|
</alarmOverview>
|
||||||
|
<chart type="componentData">
|
||||||
|
<htmlId>10</htmlId>
|
||||||
|
<config type="graphicInfo">
|
||||||
|
<version type="version" value="1.3.0.0"/>
|
||||||
|
<backgroundBorder type="border" value="BorderEmpty"/>
|
||||||
|
<penPanelVisible>false</penPanelVisible>
|
||||||
|
<penPanelHeight>-1</penPanelHeight>
|
||||||
|
<toolbarVisible>true</toolbarVisible>
|
||||||
|
<toolbarPosition type="borderLayoutPosition" value="PositionNorth"/>
|
||||||
|
<shiftOffset>0</shiftOffset>
|
||||||
|
<shiftLength>0</shiftLength>
|
||||||
|
<protection type="protection" active="false" password="">
|
||||||
|
<userProtection type="userProtection" user=""/>
|
||||||
|
</protection>
|
||||||
|
<enterpriseGroupLocation type="nodeName" node="$display$"/>
|
||||||
|
<chartPanel>
|
||||||
|
<name/>
|
||||||
|
<author/>
|
||||||
|
<version type="version" value="1.3.0.0"/>
|
||||||
|
<description/>
|
||||||
|
<forAllUsers>false</forAllUsers>
|
||||||
|
<template>false</template>
|
||||||
|
<group>@NULL</group>
|
||||||
|
<XyMode>false</XyMode>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<heigth>400</heigth>
|
||||||
|
<iconized>false</iconized>
|
||||||
|
<backgroundBorder type="border" value="BorderEmpty"/>
|
||||||
|
<foregroundColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<backgroundPaint type="paint">
|
||||||
|
<paint type="colorSet" r="240" g="240" b="240"/>
|
||||||
|
</backgroundPaint>
|
||||||
|
<plotAreaBorder type="border" value="BorderEmpty"/>
|
||||||
|
<plotAreaTransparent>true</plotAreaTransparent>
|
||||||
|
<plotAreaIcon>@NULL</plotAreaIcon>
|
||||||
|
<plotAreaPaint type="paint">
|
||||||
|
<paint type="colorSet" r="255" g="255" b="255"/>
|
||||||
|
</plotAreaPaint>
|
||||||
|
<hairlineColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<hairlineVisible>false</hairlineVisible>
|
||||||
|
<antialiasingText>false</antialiasingText>
|
||||||
|
<antialiasingData>true</antialiasingData>
|
||||||
|
<renderMode type="chartRendering" value="Rendering2d"/>
|
||||||
|
<timeNavigatorVisible>true</timeNavigatorVisible>
|
||||||
|
<timeRangeControlVisible>true</timeRangeControlVisible>
|
||||||
|
<autoUpdateInterval>false</autoUpdateInterval>
|
||||||
|
<legendVisible>true</legendVisible>
|
||||||
|
<legendTitle/>
|
||||||
|
<legendHeading/>
|
||||||
|
<legendColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<legendBackgroundColor type="colorSet" r="240" g="240" b="240"/>
|
||||||
|
<legendFont type="font" name="Tahoma" size="11" underline="false" strikethrough="false"/>
|
||||||
|
<legendTransparancy>0.2705882352941177</legendTransparancy>
|
||||||
|
<legendBorderType type="border" value="BorderLine"/>
|
||||||
|
<legendPositionType type="position" value="PositionNorthEast"/>
|
||||||
|
<timeSliderVisible>true</timeSliderVisible>
|
||||||
|
<timeSliderAbove>false</timeSliderAbove>
|
||||||
|
<valueSliderVisible>true</valueSliderVisible>
|
||||||
|
<valueSliderLeft>false</valueSliderLeft>
|
||||||
|
<xAxisReversed>false</xAxisReversed>
|
||||||
|
<yAxisReversed>false</yAxisReversed>
|
||||||
|
<projectorReversed>false</projectorReversed>
|
||||||
|
<scalingFonts>false</scalingFonts>
|
||||||
|
<maximumPens>5</maximumPens>
|
||||||
|
<pensPerPack>0</pensPerPack>
|
||||||
|
<triggerPen>0</triggerPen>
|
||||||
|
<timeAxisVisible>true</timeAxisVisible>
|
||||||
|
<timeAxisMajorTickVisible>true</timeAxisMajorTickVisible>
|
||||||
|
<timeAxisMinorTickVisible>false</timeAxisMinorTickVisible>
|
||||||
|
<timeAxisColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<timeAxisFont type="font" name="Tahoma" size="11" underline="false" strikethrough="false"/>
|
||||||
|
<timeAxisLabelColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<timeAxisLabelVisible>true</timeAxisLabelVisible>
|
||||||
|
<timeAxisLongLabelVisible>true</timeAxisLongLabelVisible>
|
||||||
|
<timeAxisLabelRotation>0</timeAxisLabelRotation>
|
||||||
|
<timeAxisTitle/>
|
||||||
|
<timeAxisTitleRotation>0</timeAxisTitleRotation>
|
||||||
|
<timeAxisTitlePlacement>50</timeAxisTitlePlacement>
|
||||||
|
<timeAxisMajorGridVisible>true</timeAxisMajorGridVisible>
|
||||||
|
<timeAxisMajorGridColor type="colorSet" r="192" g="192" b="192"/>
|
||||||
|
<timeAxisMajorGridStroke type="stroke" width="1.0" endCap="butt" lineJoin="bevel"/>
|
||||||
|
<timeAxisMinorGridVisible>false</timeAxisMinorGridVisible>
|
||||||
|
<timeAxisMinorGridColor type="colorSet" r="192" g="192" b="192"/>
|
||||||
|
<timeAxisMinorGridStroke type="stroke" width="1.0" endCap="butt" lineJoin="bevel"/>
|
||||||
|
<headerText/>
|
||||||
|
<headerColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<headerFont type="font" name="Tahoma" size="11" underline="false" strikethrough="false"/>
|
||||||
|
<headerJustification type="jTextJustification" value="TextJustificationLeft"/>
|
||||||
|
<footerText/>
|
||||||
|
<footerColor type="colorSet" r="0" g="0" b="0"/>
|
||||||
|
<footerFont type="font" name="Tahoma" size="11" underline="false" strikethrough="false"/>
|
||||||
|
<footerJustification type="jTextJustification" value="TextJustificationLeft"/>
|
||||||
|
<enterprisePrimarySourceLocation type="nodeName" node="$default$"/>
|
||||||
|
<enterpriseSecondarySourceLocation type="nodeName" node="$default$"/>
|
||||||
|
<enterprisePrimaryHistoryLocation type="nodeName" node="$default$"/>
|
||||||
|
<enterpriseSecondaryHistoryLocation type="nodeName" node="$default$"/>
|
||||||
|
<updateFromHistory>true</updateFromHistory>
|
||||||
|
<useSampleInterval>true</useSampleInterval>
|
||||||
|
<sampleInterval>0</sampleInterval>
|
||||||
|
<optimised>true</optimised>
|
||||||
|
<chartProtection type="protection" active="false" password="">
|
||||||
|
<userProtection type="userProtection" user=""/>
|
||||||
|
</chartProtection>
|
||||||
|
<pen type="pen">
|
||||||
|
<type>256</type>
|
||||||
|
<color type="colorSet" r="65" g="105" b="225"/>
|
||||||
|
<stroke type="stroke" width="1.5"/>
|
||||||
|
<paint>@NULL</paint>
|
||||||
|
<visible>true</visible>
|
||||||
|
<visibleLegend>true</visibleLegend>
|
||||||
|
<source type="sourceID" uri="ci:/item/CI-Eng-Sample.TANK1.LEVEL?historygroup=CIENG_SCAN10S"/>
|
||||||
|
<axisVisible>false</axisVisible>
|
||||||
|
<axisPosition>0</axisPosition>
|
||||||
|
<labelVisible>true</labelVisible>
|
||||||
|
<majorTickVisible>true</majorTickVisible>
|
||||||
|
<minorTickVisible>true</minorTickVisible>
|
||||||
|
<axisColor>@NULL</axisColor>
|
||||||
|
<labelColor>@NULL</labelColor>
|
||||||
|
<scaleRangeType>0</scaleRangeType>
|
||||||
|
<minimum>NaN</minimum>
|
||||||
|
<maximum>NaN</maximum>
|
||||||
|
<procentual>false</procentual>
|
||||||
|
<title/>
|
||||||
|
<description>Tank 1 level (%)</description>
|
||||||
|
<legendText/>
|
||||||
|
<titlePlacement>0</titlePlacement>
|
||||||
|
<titleRotation>0</titleRotation>
|
||||||
|
<labelRotation>0</labelRotation>
|
||||||
|
<majorGridVisible>false</majorGridVisible>
|
||||||
|
<minorGridVisible>false</minorGridVisible>
|
||||||
|
<lowHighLimitGridVisible>false</lowHighLimitGridVisible>
|
||||||
|
<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>
|
||||||
|
<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible>
|
||||||
|
<majorGridColor>@NULL</majorGridColor>
|
||||||
|
<minorGridColor>@NULL</minorGridColor>
|
||||||
|
<lowHighLimitGridColor>@NULL</lowHighLimitGridColor>
|
||||||
|
<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>
|
||||||
|
<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>
|
||||||
|
<majorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<minorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowHighLimitGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLimit>20.0</lowLimit>
|
||||||
|
<highLimit>80.0</highLimit>
|
||||||
|
<lowLowLimit>10.0</lowLowLimit>
|
||||||
|
<highHighLimit>90.0</highHighLimit>
|
||||||
|
<annotationVisible>false</annotationVisible>
|
||||||
|
<timeShift>0</timeShift>
|
||||||
|
</pen>
|
||||||
|
<pen type="pen">
|
||||||
|
<type>256</type>
|
||||||
|
<color type="colorSet" r="241" g="76" b="20"/>
|
||||||
|
<stroke type="stroke" width="1.5"/>
|
||||||
|
<paint>@NULL</paint>
|
||||||
|
<visible>true</visible>
|
||||||
|
<visibleLegend>true</visibleLegend>
|
||||||
|
<source type="sourceID" uri=""/>
|
||||||
|
<axisVisible>false</axisVisible>
|
||||||
|
<axisPosition>0</axisPosition>
|
||||||
|
<labelVisible>true</labelVisible>
|
||||||
|
<majorTickVisible>true</majorTickVisible>
|
||||||
|
<minorTickVisible>true</minorTickVisible>
|
||||||
|
<axisColor>@NULL</axisColor>
|
||||||
|
<labelColor>@NULL</labelColor>
|
||||||
|
<scaleRangeType>0</scaleRangeType>
|
||||||
|
<minimum>NaN</minimum>
|
||||||
|
<maximum>NaN</maximum>
|
||||||
|
<procentual>false</procentual>
|
||||||
|
<title/>
|
||||||
|
<description/>
|
||||||
|
<legendText/>
|
||||||
|
<titlePlacement>0</titlePlacement>
|
||||||
|
<titleRotation>0</titleRotation>
|
||||||
|
<labelRotation>0</labelRotation>
|
||||||
|
<majorGridVisible>false</majorGridVisible>
|
||||||
|
<minorGridVisible>false</minorGridVisible>
|
||||||
|
<lowHighLimitGridVisible>false</lowHighLimitGridVisible>
|
||||||
|
<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>
|
||||||
|
<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible>
|
||||||
|
<majorGridColor>@NULL</majorGridColor>
|
||||||
|
<minorGridColor>@NULL</minorGridColor>
|
||||||
|
<lowHighLimitGridColor>@NULL</lowHighLimitGridColor>
|
||||||
|
<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>
|
||||||
|
<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>
|
||||||
|
<majorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<minorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowHighLimitGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLimit>NaN</lowLimit>
|
||||||
|
<highLimit>NaN</highLimit>
|
||||||
|
<lowLowLimit>NaN</lowLowLimit>
|
||||||
|
<highHighLimit>NaN</highHighLimit>
|
||||||
|
<annotationVisible>false</annotationVisible>
|
||||||
|
<timeShift>0</timeShift>
|
||||||
|
</pen>
|
||||||
|
<pen type="pen">
|
||||||
|
<type>256</type>
|
||||||
|
<color type="colorSet" r="127" g="255" b="0"/>
|
||||||
|
<stroke type="stroke" width="1.5"/>
|
||||||
|
<paint>@NULL</paint>
|
||||||
|
<visible>true</visible>
|
||||||
|
<visibleLegend>true</visibleLegend>
|
||||||
|
<source type="sourceID" uri=""/>
|
||||||
|
<axisVisible>false</axisVisible>
|
||||||
|
<axisPosition>0</axisPosition>
|
||||||
|
<labelVisible>true</labelVisible>
|
||||||
|
<majorTickVisible>true</majorTickVisible>
|
||||||
|
<minorTickVisible>true</minorTickVisible>
|
||||||
|
<axisColor>@NULL</axisColor>
|
||||||
|
<labelColor>@NULL</labelColor>
|
||||||
|
<scaleRangeType>0</scaleRangeType>
|
||||||
|
<minimum>NaN</minimum>
|
||||||
|
<maximum>NaN</maximum>
|
||||||
|
<procentual>false</procentual>
|
||||||
|
<title/>
|
||||||
|
<description/>
|
||||||
|
<legendText/>
|
||||||
|
<titlePlacement>0</titlePlacement>
|
||||||
|
<titleRotation>0</titleRotation>
|
||||||
|
<labelRotation>0</labelRotation>
|
||||||
|
<majorGridVisible>false</majorGridVisible>
|
||||||
|
<minorGridVisible>false</minorGridVisible>
|
||||||
|
<lowHighLimitGridVisible>false</lowHighLimitGridVisible>
|
||||||
|
<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>
|
||||||
|
<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible>
|
||||||
|
<majorGridColor>@NULL</majorGridColor>
|
||||||
|
<minorGridColor>@NULL</minorGridColor>
|
||||||
|
<lowHighLimitGridColor>@NULL</lowHighLimitGridColor>
|
||||||
|
<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>
|
||||||
|
<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>
|
||||||
|
<majorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<minorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowHighLimitGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLimit>NaN</lowLimit>
|
||||||
|
<highLimit>NaN</highLimit>
|
||||||
|
<lowLowLimit>NaN</lowLowLimit>
|
||||||
|
<highHighLimit>NaN</highHighLimit>
|
||||||
|
<annotationVisible>false</annotationVisible>
|
||||||
|
<timeShift>0</timeShift>
|
||||||
|
</pen>
|
||||||
|
<pen type="pen">
|
||||||
|
<type>256</type>
|
||||||
|
<color type="colorSet" r="0" g="0" b="139"/>
|
||||||
|
<stroke type="stroke" width="1.5"/>
|
||||||
|
<paint>@NULL</paint>
|
||||||
|
<visible>true</visible>
|
||||||
|
<visibleLegend>true</visibleLegend>
|
||||||
|
<source type="sourceID" uri=""/>
|
||||||
|
<axisVisible>false</axisVisible>
|
||||||
|
<axisPosition>0</axisPosition>
|
||||||
|
<labelVisible>true</labelVisible>
|
||||||
|
<majorTickVisible>true</majorTickVisible>
|
||||||
|
<minorTickVisible>true</minorTickVisible>
|
||||||
|
<axisColor>@NULL</axisColor>
|
||||||
|
<labelColor>@NULL</labelColor>
|
||||||
|
<scaleRangeType>0</scaleRangeType>
|
||||||
|
<minimum>NaN</minimum>
|
||||||
|
<maximum>NaN</maximum>
|
||||||
|
<procentual>false</procentual>
|
||||||
|
<title/>
|
||||||
|
<description/>
|
||||||
|
<legendText/>
|
||||||
|
<titlePlacement>0</titlePlacement>
|
||||||
|
<titleRotation>0</titleRotation>
|
||||||
|
<labelRotation>0</labelRotation>
|
||||||
|
<majorGridVisible>false</majorGridVisible>
|
||||||
|
<minorGridVisible>false</minorGridVisible>
|
||||||
|
<lowHighLimitGridVisible>false</lowHighLimitGridVisible>
|
||||||
|
<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>
|
||||||
|
<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible>
|
||||||
|
<majorGridColor>@NULL</majorGridColor>
|
||||||
|
<minorGridColor>@NULL</minorGridColor>
|
||||||
|
<lowHighLimitGridColor>@NULL</lowHighLimitGridColor>
|
||||||
|
<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>
|
||||||
|
<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>
|
||||||
|
<majorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<minorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowHighLimitGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLimit>NaN</lowLimit>
|
||||||
|
<highLimit>NaN</highLimit>
|
||||||
|
<lowLowLimit>NaN</lowLowLimit>
|
||||||
|
<highHighLimit>NaN</highHighLimit>
|
||||||
|
<annotationVisible>false</annotationVisible>
|
||||||
|
<timeShift>0</timeShift>
|
||||||
|
</pen>
|
||||||
|
<pen type="pen">
|
||||||
|
<type>256</type>
|
||||||
|
<color type="colorSet" r="199" g="9" b="16"/>
|
||||||
|
<stroke type="stroke" width="1.5"/>
|
||||||
|
<paint>@NULL</paint>
|
||||||
|
<visible>true</visible>
|
||||||
|
<visibleLegend>true</visibleLegend>
|
||||||
|
<source type="sourceID" uri=""/>
|
||||||
|
<axisVisible>false</axisVisible>
|
||||||
|
<axisPosition>0</axisPosition>
|
||||||
|
<labelVisible>true</labelVisible>
|
||||||
|
<majorTickVisible>true</majorTickVisible>
|
||||||
|
<minorTickVisible>true</minorTickVisible>
|
||||||
|
<axisColor>@NULL</axisColor>
|
||||||
|
<labelColor>@NULL</labelColor>
|
||||||
|
<scaleRangeType>0</scaleRangeType>
|
||||||
|
<minimum>NaN</minimum>
|
||||||
|
<maximum>NaN</maximum>
|
||||||
|
<procentual>false</procentual>
|
||||||
|
<title/>
|
||||||
|
<description/>
|
||||||
|
<legendText/>
|
||||||
|
<titlePlacement>0</titlePlacement>
|
||||||
|
<titleRotation>0</titleRotation>
|
||||||
|
<labelRotation>0</labelRotation>
|
||||||
|
<majorGridVisible>false</majorGridVisible>
|
||||||
|
<minorGridVisible>false</minorGridVisible>
|
||||||
|
<lowHighLimitGridVisible>false</lowHighLimitGridVisible>
|
||||||
|
<lowHighLimitGridAreaVisible>false</lowHighLimitGridAreaVisible>
|
||||||
|
<lowLowHighHighLimitGridVisible>false</lowLowHighHighLimitGridVisible>
|
||||||
|
<majorGridColor>@NULL</majorGridColor>
|
||||||
|
<minorGridColor>@NULL</minorGridColor>
|
||||||
|
<lowHighLimitGridColor>@NULL</lowHighLimitGridColor>
|
||||||
|
<lowHighLimitGridAreaColor>@NULL</lowHighLimitGridAreaColor>
|
||||||
|
<lowLowHighHighLimiGridColor>@NULL</lowLowHighHighLimiGridColor>
|
||||||
|
<majorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<minorGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowHighLimitGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLowHighHighLimiGridStroke type="stroke" width="0.1"/>
|
||||||
|
<lowLimit>NaN</lowLimit>
|
||||||
|
<highLimit>NaN</highLimit>
|
||||||
|
<lowLowLimit>NaN</lowLowLimit>
|
||||||
|
<highHighLimit>NaN</highHighLimit>
|
||||||
|
<annotationVisible>false</annotationVisible>
|
||||||
|
<timeShift>0</timeShift>
|
||||||
|
</pen>
|
||||||
|
<penPanelLayout type="xyPenPanelLayout">
|
||||||
|
<Height>417</Height>
|
||||||
|
<AutoSize>true</AutoSize>
|
||||||
|
<SplitLocation>-1</SplitLocation>
|
||||||
|
<column index="0" visible="true" width="20"/>
|
||||||
|
<column index="1" visible="true" width="20"/>
|
||||||
|
<column index="2" visible="true" width="150"/>
|
||||||
|
<column index="3" visible="true" width="120"/>
|
||||||
|
<column index="4" visible="true" width="60"/>
|
||||||
|
<column index="5" visible="false" width="120"/>
|
||||||
|
<column index="6" visible="false" width="120"/>
|
||||||
|
<column index="7" visible="false" width="60"/>
|
||||||
|
<column index="8" visible="true" width="60"/>
|
||||||
|
<column index="9" visible="true" width="60"/>
|
||||||
|
<column index="10" visible="false" width="20"/>
|
||||||
|
<column index="11" visible="true" width="90"/>
|
||||||
|
<column index="12" visible="false" width="130"/>
|
||||||
|
<column index="13" visible="true" width="200"/>
|
||||||
|
<column index="14" visible="false" width="240"/>
|
||||||
|
<column index="15" visible="false" width="280"/>
|
||||||
|
</penPanelLayout>
|
||||||
|
<timeRange type="timeRangeLast" count="1">
|
||||||
|
<type type="timeUnit" value="TimeUnitHour"/>
|
||||||
|
</timeRange>
|
||||||
|
<updateInterval>30</updateInterval>
|
||||||
|
<fillHistory>true</fillHistory>
|
||||||
|
<updating>false</updating>
|
||||||
|
</chartPanel>
|
||||||
|
</config>
|
||||||
|
<x>472.0</x>
|
||||||
|
<y>588.0</y>
|
||||||
|
<top>172.0</top>
|
||||||
|
<bottom>172.0</bottom>
|
||||||
|
<left>344.0</left>
|
||||||
|
<right>344.0</right>
|
||||||
|
<rotation>0.0</rotation>
|
||||||
|
<shear>0.0</shear>
|
||||||
|
<data type="data">
|
||||||
|
<action type="actionInternalServiced"/>
|
||||||
|
<action type="actionConnectTo">
|
||||||
|
<property type="property" name="chart.attribute[00]"/>
|
||||||
|
<filter type="filter">
|
||||||
|
<value>0.0</value>
|
||||||
|
</filter>
|
||||||
|
<connection type="connection">
|
||||||
|
<itemName>CI-Eng-Sample.TANK1.LEVEL</itemName>
|
||||||
|
<itemId>1.1.268.0.0.1.1.7</itemId>
|
||||||
|
<itemAttribute>ItemValue</itemAttribute>
|
||||||
|
</connection>
|
||||||
|
</action>
|
||||||
|
</data>
|
||||||
|
</chart>
|
||||||
|
</coreObjectDefinition>
|
||||||
|
</visualization>
|
||||||
10
examples/CI-Eng-Sample/displays/deploy_displays.cmd
Normal file
10
examples/CI-Eng-Sample/displays/deploy_displays.cmd
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
@echo off
|
||||||
|
rem Deploy the CI-Eng-Sample displays into the operator interface (deployment DEPLOY).
|
||||||
|
rem CI Server R1.03.00. Load the sample (load.cmd) first; no admin rights needed.
|
||||||
|
rem Copies the display XML, then creates the HTML (Mobile Operator) version with jwuiutl;
|
||||||
|
rem without -o the HTML goes to %TLS_WAP_PATH%\mobileoperator\operatorInterfaces\DEPLOY.
|
||||||
|
cd /d "%~dp0"
|
||||||
|
set WAP=%TLS_WAP_PATH%
|
||||||
|
if not defined TLS_WAP_PATH set WAP=C:\Users\Public\Yokogawa\tls\wap
|
||||||
|
copy /y CIENG_Tank.xml "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\"
|
||||||
|
call jwuiutl.cmd -e HTML -i -f DEPLOY CIENG_Tank
|
||||||
7
examples/CI-Eng-Sample/displays/remove_displays.cmd
Normal file
7
examples/CI-Eng-Sample/displays/remove_displays.cmd
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
@echo off
|
||||||
|
rem Remove the CI-Eng-Sample displays (operator interface and HTML version). CI Server R1.03.00.
|
||||||
|
rem Close CIENG_Tank in the Edit Module first.
|
||||||
|
set WAP=%TLS_WAP_PATH%
|
||||||
|
if not defined TLS_WAP_PATH set WAP=C:\Users\Public\Yokogawa\tls\wap
|
||||||
|
del /q "%WAP%\cfg\operatorInterfaces\DEPLOY\displays\CIENG_Tank.xml"
|
||||||
|
del /q "%WAP%\mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Tank.html"
|
||||||
|
|
@ -60,3 +60,4 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
|
||||||
| ISS-038 | 2026-10-01 | HISTORY (`ithloahis` + rollover) | An `ithloahis` sample that was dropped (dated 11:50, before the active unit) still became the **initial value** of the next unit: after a forced rollover at 12:05:26 `ITEM_HISTORY` shows `CI-Eng-Sample.TANK1.INFLOW` = 95 (`INITIAL_VALUE` 1) although the item's value was 112. History after loading old samples can therefore show a wrong value at the next rollover. | open | Accept as a caution (documented in `load-history.md`), or retest after a CI Server restart to see whether the wrong initial value persists. | `.claude/skills/system-management/tasks/load-history.md`; `knowledge/manuals/IM36K10C40-01EN.md` §3 |
|
| ISS-038 | 2026-10-01 | HISTORY (`ithloahis` + rollover) | An `ithloahis` sample that was dropped (dated 11:50, before the active unit) still became the **initial value** of the next unit: after a forced rollover at 12:05:26 `ITEM_HISTORY` shows `CI-Eng-Sample.TANK1.INFLOW` = 95 (`INITIAL_VALUE` 1) although the item's value was 112. History after loading old samples can therefore show a wrong value at the next rollover. | open | Accept as a caution (documented in `load-history.md`), or retest after a CI Server restart to see whether the wrong initial value persists. | `.claude/skills/system-management/tasks/load-history.md`; `knowledge/manuals/IM36K10C40-01EN.md` §3 |
|
||||||
| ISS-039 | 2026-10-01 | HISTORY (setup) | Installed vs manuals: `hisdbg` menu runs to option 22 (manual text: `-1 - 10`, list to 22) and lists history types 4 (`STATION_STAT`) and 36 (`SYS_LOG`) not in IM 36K10L20 §3.1; `ithsag.sup` keyword `run_interval` (manual: *Heartbeat*) and `queue_size` 500 KB (manual default 200); the option-type table in IM 36K10L20 §3.1 is garbled in the PDF (observed: Scan/Time `1 1`, Event/Item `2 2`, Aggregation `4 4`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L20-01EN.md` §3; `knowledge/manuals/IM36K10C40-01EN.md` §2 |
|
| ISS-039 | 2026-10-01 | HISTORY (setup) | Installed vs manuals: `hisdbg` menu runs to option 22 (manual text: `-1 - 10`, list to 22) and lists history types 4 (`STATION_STAT`) and 36 (`SYS_LOG`) not in IM 36K10L20 §3.1; `ithsag.sup` keyword `run_interval` (manual: *Heartbeat*) and `queue_size` 500 KB (manual default 200); the option-type table in IM 36K10L20 §3.1 is garbled in the PDF (observed: Scan/Time `1 1`, Event/Item `2 2`, Aggregation `4 4`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10L20-01EN.md` §3; `knowledge/manuals/IM36K10C40-01EN.md` §2 |
|
||||||
| ISS-040 | 2026-10-01 | HISTORY (aggregation) | Aggregation group `CIENG_AGG` (30 min + hour, `TANK1.LEVEL` max/min/avg) ran (`ithsag.log`: *Aggregation Completed*) but stored no values: retrieval gave `0x09 = ITM error` per period. `TANK1.LEVEL` was in `CIENG_EVENT` and `CIENG_SCAN10S`, both priority 0. Also `INTERPOLATION = "30 minutes"` is refused by `dssqld`; the installed name is `30Minutes`. | closed | Closed 2026-10-01 (confirmed by user). 2026-10-01 14:02: after `CIENG_SCAN10S` got `PRIORITY` 10, the 13:30–14:00 period stored max 77, min 33, avg 52.7, quality 1000 (`ithdbg` 20 and `dssqld` with `INTERPOLATION = "30Minutes"`). Cause: equal source priorities (C40 §2.1 says the highest-priority group is the source, but not that a tie gives nothing). Sample fixed (priority 10). The hourly value for 13:00–14:00 was not stored (first half had no source); not rechecked. Proposed close. | `.claude/skills/history-management/tasks/storage-groups.md` §4 (done); `knowledge/manuals/IM36K10C40-01EN.md` §3 (done); `examples/CI-Eng-Sample/03_his_group_df.qli`, `README.md` (done) |
|
| ISS-040 | 2026-10-01 | HISTORY (aggregation) | Aggregation group `CIENG_AGG` (30 min + hour, `TANK1.LEVEL` max/min/avg) ran (`ithsag.log`: *Aggregation Completed*) but stored no values: retrieval gave `0x09 = ITM error` per period. `TANK1.LEVEL` was in `CIENG_EVENT` and `CIENG_SCAN10S`, both priority 0. Also `INTERPOLATION = "30 minutes"` is refused by `dssqld`; the installed name is `30Minutes`. | closed | Closed 2026-10-01 (confirmed by user). 2026-10-01 14:02: after `CIENG_SCAN10S` got `PRIORITY` 10, the 13:30–14:00 period stored max 77, min 33, avg 52.7, quality 1000 (`ithdbg` 20 and `dssqld` with `INTERPOLATION = "30Minutes"`). Cause: equal source priorities (C40 §2.1 says the highest-priority group is the source, but not that a tie gives nothing). Sample fixed (priority 10). The hourly value for 13:00–14:00 was not stored (first half had no source); not rechecked. Proposed close. | `.claude/skills/history-management/tasks/storage-groups.md` §4 (done); `knowledge/manuals/IM36K10C40-01EN.md` §3 (done); `examples/CI-Eng-Sample/03_his_group_df.qli`, `README.md` (done) |
|
||||||
|
| ISS-041 | 2026-10-01 | GRAPHICS (HTML trend) | In the HTML display (`localhost:8080/mobileoperator/?d=CIENG_Tank`) the trend shows the pen legend `CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]` and time axis but draws no line, although `ITEM_HISTORY` has 420 samples in the shown hour. Browser console: `Mismatch between number of labels (Time,CI-Eng-Sample.TANK1.LEVEL [CIENG_SCAN10S]) and number of columns in array (51)`. The trend has 4 further empty pens. | open | Check the same display in CI View (Java operator interface); try a trend with only one pen (remove the empty ones) or a Micro Trend; check the HTML-supported trend properties (IM 36K10R30 §4.8.7). | `.claude/skills/graphics/tasks/create-display.md`; `knowledge/manuals/IM36K10R30-01EN.md` §4 |
|
||||||
|
|
|
||||||
98
knowledge/manuals/IM36K10C50-01EN.md
Normal file
98
knowledge/manuals/IM36K10C50-01EN.md
Normal file
|
|
@ -0,0 +1,98 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10C50-01EN
|
||||||
|
title: Edit Module
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: display CIENG_Tank built by the user in the Edit Module (text, number field, alarm overview, trend) and checked as XML and HTML 2026-10-01; jwuiutl search, validate and HTML export verified; other components, symbols, actions and the tutorial from docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Edit Module (R1.03)
|
||||||
|
|
||||||
|
The Edit Module draws displays and symbols for the operator interface (CI View) and the HTML
|
||||||
|
display. Displays are XML files (`IM36K10R30-01EN.md` §1). Section numbers refer to the manual.
|
||||||
|
|
||||||
|
## 1. Window and files (§1)
|
||||||
|
|
||||||
|
- Window: sheets, component bar, graphic sheet, symbols sheet, menu, toolbar, edit area.
|
||||||
|
- *File > New Display* (Ctrl+N), *New Symbol* (Ctrl+Shift+N), *Save* (Ctrl+S), *Save with
|
||||||
|
Revision Information* (who/when/why, kept in `revisionHistory`), *Save As*, *Save Selection
|
||||||
|
as* (new symbol or display), print area, print. Open displays are locked (`<name>.lck`);
|
||||||
|
autosave writes `<name>.xml.autosave`.
|
||||||
|
- *Edit > Find* searches the open display; `jwuiutl -m` searches all.
|
||||||
|
- **HTML display** check box (new display dialog / display properties): the editor then offers
|
||||||
|
only HTML-supported components, properties and actions, and saving also writes the HTML file.
|
||||||
|
HTML mode can be switched off later. Not for enterprise displays. The tab icon shows normal /
|
||||||
|
HTML / HTML with unsupported content.
|
||||||
|
- Localisation: *Tools > Configure Localization* → *Extract Text*, add locale, translate;
|
||||||
|
global and per-file tables; the operator's locale decides.
|
||||||
|
- *Playback > Record* records operator/editor sessions; *Open viewer* plays them back.
|
||||||
|
|
||||||
|
## 2. `jwuiutl` — batch operations (§1.5)
|
||||||
|
|
||||||
|
`jwuiutl.cmd` (in `tls\com`, Java; runs from a normal prompt):
|
||||||
|
|
||||||
|
| Option | Use |
|
||||||
|
|---|---|
|
||||||
|
| `-d` / `-s` | Only displays / only symbols (`-p <palette>`, `-g <group>`) |
|
||||||
|
| `-v` | Validate (connected items exist, components defined); report only. `-l <file>` writes the result, `-i` shows progress (`Validating <name>` / `Info: No problems found`) |
|
||||||
|
| `-vf` | Force validation and **save** every display/symbol |
|
||||||
|
| `-u` | Unlock locked files (`.lck` left by a crashed editor) |
|
||||||
|
| `-c` / `-a` | Clean up temporary files / validate + unlock + clean up |
|
||||||
|
| `-m <terms>` / `-M <terms>` | Print matching components (CSV) / with actions and properties |
|
||||||
|
| `-e HTML [-o <dir>] [-f <deployment>] [<display>]` | Export HTML displays |
|
||||||
|
| `-b`, `-z`, `-h true/false` | Also save `.xml.bin` (faster loading) / compressed / set HTML mode |
|
||||||
|
| `-un`, `-pw` | User for enterprise displays |
|
||||||
|
|
||||||
|
**Verified on the test system:** `-d -m TANK1` and `-d -v -i -l` ran without errors; locked
|
||||||
|
displays and displays saved by a newer version are skipped (`*** Display locked <name>`,
|
||||||
|
`… created with a newer version of CI Server (R1.04.0.0)`); `-e HTML -i -f DEPLOY CIENG_Tank`
|
||||||
|
wrote `mobileoperator\operatorInterfaces\DEPLOY\displays\CIENG_Tank.html`.
|
||||||
|
|
||||||
|
## 3. Components (§2)
|
||||||
|
|
||||||
|
Shapes (rectangle, ellipse, arc, polygon, spline, line, links), text / text field / text area
|
||||||
|
/ password field, number and number field, icon, rectangular and circular scales, radial, data
|
||||||
|
bar, spinner, slider, push/toggle button, check box, radio button, combo box, list box, date
|
||||||
|
and time field, **alarm overview** (current/historical; acknowledge, block, shelve, link display,
|
||||||
|
export; dialog tabs Types, Columns, Filter, Alarm link display, Appearance, Header and footer,
|
||||||
|
Fetching, Alarm Shelving, Enterprise, Advanced, Attributes), list of blocked items, alarm
|
||||||
|
sound, dataset tables (view/edit dataset records), report, **trend** (pens on items with
|
||||||
|
history; shows limits; time slider and controls; definitions can be saved from the operator
|
||||||
|
interface), DTS trend, micro trend, playback indicator, calculation/function, JavaScript
|
||||||
|
function, web browser, PDF viewer, navigation tree, display generator, map viewer.
|
||||||
|
|
||||||
|
## 4. Sheets (§4)
|
||||||
|
|
||||||
|
Visualization (displays/symbols tree), zoom, visibility groups (shown by zoom factor),
|
||||||
|
**parameters** (default read-only ones such as `name`, `attachedObject`, `client`, `server`,
|
||||||
|
`mouseX`; user-defined with scope; `$name` in command lines), messages, symbols, **properties**
|
||||||
|
(connect a property to an item attribute, parameter or dataset field; linear transformations;
|
||||||
|
writable properties: value, item name parts, id, units, description, status number/text,
|
||||||
|
control status, option bits), layers, attributes, edit history (undo/redo), **actions** (open /
|
||||||
|
close display, execute command, read/write parameters; triggered by component events).
|
||||||
|
|
||||||
|
## 5. Symbols (§5)
|
||||||
|
|
||||||
|
*File > New Symbol*; put it on a palette (attributes sheet); external user-defined parameters
|
||||||
|
become properties of each instance; after changing a symbol run *Tools > Validate all
|
||||||
|
Symbols* and *Validate all Displays* (with all tabs closed); a symbol can be linked to a
|
||||||
|
PROCESS Service class so each instance shows one object; data location (display, operator's
|
||||||
|
CI Portal, display's server, enterprise, node).
|
||||||
|
|
||||||
|
## 6. What the display file stores (verified with CIENG_Tank)
|
||||||
|
|
||||||
|
- `<coreObjectDefinition type="displayDefinition">` with `<html>true</html>`, `<width>`,
|
||||||
|
`<height>`, grid, revision history, visibility groups, layers.
|
||||||
|
- Components as elements (`text`, `numberField`, `alarmOverview`, `chart` = trend).
|
||||||
|
- Item connections in `<globalSection>`: `<itemName>CI-Eng-Sample.TANK1.LEVEL</itemName>` **and**
|
||||||
|
`<itemId>1.1.248.0.0.1.1.7</itemId>`. Trend pens: `<source uri="ci:/item/<item>"/>`; a new
|
||||||
|
trend has 5 empty pens.
|
||||||
|
- **After a sample remove/reload the item got id 268** while the file kept 248: `jwuiutl -v` still
|
||||||
|
reported *No problems found*, and a newly opened session showed the live value — the name is
|
||||||
|
what counts. Sessions that were already open kept the old binding (value frozen) until the
|
||||||
|
display was opened in a new session.
|
||||||
|
|
||||||
|
## 7. Tutorial (§6)
|
||||||
|
|
||||||
|
Builds wheels, faceplates, valve symbols, indicators, PID faceplates with mode and setpoint
|
||||||
|
dialogs, scales, limit colours, tag info and pinning buttons — a guided exercise in the GUI.
|
||||||
54
knowledge/manuals/IM36K10C60-01EN.md
Normal file
54
knowledge/manuals/IM36K10C60-01EN.md
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10C60-01EN
|
||||||
|
title: Advanced Operating Graphics
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: from docs; installed AOG displays checked read-only (DEPLOY\displays, mobileoperator) 2026-10-01
|
||||||
|
---
|
||||||
|
|
||||||
|
# Advanced Operating Graphics — AOG library (R1.03)
|
||||||
|
|
||||||
|
A ready-made library of symbols and displays in a consistent, high-performance HMI style,
|
||||||
|
used from the Edit Module's Visualization sheet. Section numbers refer to the manual.
|
||||||
|
|
||||||
|
## 1. Symbols (§1.1)
|
||||||
|
|
||||||
|
| Kind | Purpose | Palettes / examples |
|
||||||
|
|---|---|---|
|
||||||
|
| Equipment symbols | Static equipment, no live data | `AOG_ContainersAndVessels` (AOG_Tank, AOG_Vessel, AOG_Reactor, …), `AOG_HeatTransfer`, `AOG_Indicator`, `AOG_MaterialHandling`, `AOG_Mixing`, `AOG_Rotating` (pumps, compressors, turbine), `AOG_Separators`, `AOG_ValvesAndActuators`, `AOG_Electrical`, `AOG_Filters`, `AOG_Others` (Yokogawa systems such as AOG_CentumFCS, AOG_ProsafeRS, AOG_StardomFCN, AOG_FAM3, AOG_DTS; field devices; stations) |
|
||||||
|
| Item symbols | Show and change one or more item attributes | indicators (bar, needle, circular, radial, number, text, on/off, manual, alarm, trend), valves (2-way, 3-way, on/off), selection box, name/info |
|
||||||
|
| Object symbols (`AOG_O…`) | Same, driven by PROCESS Service object signals | e.g. `AOG_ONumberIndicator`, `AOG_OHorizontalBarIndicator` |
|
||||||
|
| Navigation symbol, components | Navigation between displays | |
|
||||||
|
|
||||||
|
## 2. Displays (§1.2)
|
||||||
|
|
||||||
|
Standard displays: `AOG_Default`, `AOG_DisplayTemplate` (start for new displays), `AOG_Style`
|
||||||
|
(global style parameters), `AOG_MenuMain`, alarm displays (`AOG_AlarmBanner`, `AOG_AlarmCurrent`,
|
||||||
|
`AOG_AlarmHistory`, `AOG_AlarmShelved`), `AOG_AuditTrail`, `AOG_ItemFaceplate`,
|
||||||
|
`AOG_ItemTuningPanel`, `AOG_ObjectFaceplate`, `AOG_ObjectTuningPanel`, `AOG_SetItemMode`,
|
||||||
|
`AOG_SetObjectMode`, `AOG_SetNumberPV/SV/SL/SH/SLL/SHH`, `AOG_LockStatus`, `AOG_TrendOpen`,
|
||||||
|
OPC UA method call displays; plus demo displays. **Installed**: these are in
|
||||||
|
`DEPLOY\displays`, and the alarm, audit, default, menu, style, trend and UA method displays also
|
||||||
|
exist as HTML displays.
|
||||||
|
|
||||||
|
## 3. Global style parameters (§1.1, §2.1.1)
|
||||||
|
|
||||||
|
Defined once on the `AOG_Style` display (*Parameters* tab) and used by all AOG symbols:
|
||||||
|
colours (`AOG_C…`: alarm high/medium/low/diagnostic/off, display background, equipment
|
||||||
|
running/off/not running, fluid and gas lines, indicator background/limit/normal/outline/signal,
|
||||||
|
manual control, selector, text 1–4), strokes (`AOG_S…`), fonts (`AOG_FT1–4`), engineering unit
|
||||||
|
texts (`AOG_EF1` flow, `AOG_EL1` level, `AOG_EP1` pressure, `AOG_ET1/2` temperature), on/off
|
||||||
|
texts, `AOG_BlinkOnNotAcknowledged`. Changing a value changes every symbol that uses it.
|
||||||
|
|
||||||
|
## 4. Building an HMI (§2)
|
||||||
|
|
||||||
|
Edit Module → (optionally) adjust `AOG_Style` and save → *New display* or start from
|
||||||
|
`AOG_DisplayTemplate` → place AOG symbols from the Visualization sheet → connect them to items
|
||||||
|
or objects → save → open in the operator interface. New symbols can be made in the same style.
|
||||||
|
|
||||||
|
## 5. Enterprise (§3)
|
||||||
|
|
||||||
|
Enterprise displays and AOG item/object symbols for enterprise engineering (items/objects on
|
||||||
|
several servers; locations chosen per symbol).
|
||||||
|
|
||||||
|
Not practiced: the sample display uses plain components; AOG symbols need the Edit Module GUI.
|
||||||
84
knowledge/manuals/IM36K10R30-01EN.md
Normal file
84
knowledge/manuals/IM36K10R30-01EN.md
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
---
|
||||||
|
manual: IM 36K10R30-01EN
|
||||||
|
title: Graphic Display Setup
|
||||||
|
edition: 3rd Edition, Sep. 2023
|
||||||
|
version: R1.03
|
||||||
|
status: HTML display (Mobile Operator) verified with CI-Eng-Sample display CIENG_Tank 2026-10-01; layout file and form folders checked read-only; layout editing, dataset forms, form language and dual screen from docs
|
||||||
|
---
|
||||||
|
|
||||||
|
# Graphic Display Setup (R1.03)
|
||||||
|
|
||||||
|
How the operator interface is framed (layouts), how custom dataset forms are added, and how
|
||||||
|
displays run in a web browser (HTML display, "Mobile Operator"). Section numbers refer to the
|
||||||
|
manual. Building displays: `IM36K10C50-01EN.md`; AOG library: `IM36K10C60-01EN.md`.
|
||||||
|
|
||||||
|
## 1. Files and folders (installed)
|
||||||
|
|
||||||
|
| What | Where (`%TLS_WAP_PATH%` = `C:\Users\Public\Yokogawa\tls\wap`) |
|
||||||
|
|---|---|
|
||||||
|
| Displays (operator interface) | `cfg\operatorInterfaces\DEPLOY\displays\<name>.xml` (plus `.lck` while open in the Edit Module, `.autosave`) |
|
||||||
|
| Symbols | `cfg\operatorInterfaces\DEPLOY\symbols\` (≈ 3100 files incl. the AOG library) |
|
||||||
|
| Layouts | `cfg\operatorInterfaces\DEPLOY\layouts\Layouts.xml` (+ `Layouts.readme`, `Layouts-original.xml`) |
|
||||||
|
| Components, locales, thresholds | `cfg\operatorInterfaces\DEPLOY\components\`, `locales\`, `thresholds\` |
|
||||||
|
| HTML displays | `mobileoperator\operatorInterfaces\DEPLOY\displays\<name>.html` |
|
||||||
|
| Dataset forms | `cfg\dialog\dialogs\<name>Dia.xml` (components `<name>Com.xml`, definitions `JToolsGlobalDef.xml`); texts in `cfg\properties\` |
|
||||||
|
|
||||||
|
`DEPLOY` is the deployment name (a user's *Operator Interface Deployment* field selects another;
|
||||||
|
empty = `deploy`).
|
||||||
|
|
||||||
|
## 2. Layouts (§1)
|
||||||
|
|
||||||
|
- `Layouts.xml` holds several `<layout>` elements under `<layouts>` (common options such as
|
||||||
|
`debugActivationKey="CONTROL SHIFT F6"` for the graphics debugger, Java only). A layout =
|
||||||
|
menu, toolbar, **frame set (required)**, status line.
|
||||||
|
- Layout options: `name`, `icon`, `title` (`$<frame>` = title of the display in that frame),
|
||||||
|
`drawBorder`, `sizingAllowed`, `minimizingAllowed`, `closingAllowed`, `alwaysOnTop`, `modal`,
|
||||||
|
`lookAndFeel`, `initialPosition` (… `fitFrames`), `initialPositionX/Y`, `initialSize`,
|
||||||
|
`initialSizeWidth/Height`, `maximumOpen`, print orientation and margins (Java only).
|
||||||
|
- Menu items (§1.5, e.g. `menu.file.login`, `menu.view.reload`), toolbar (§1.6), status line
|
||||||
|
items (§1.7, e.g. graphics queue level), frames and tabs (§1.8), translations (§1.9).
|
||||||
|
- Which layout opens: *In layout* of an *Open display* action (Edit Module), or the user's
|
||||||
|
*Layout* field (Engineering Module, Authorization > Users); empty = `default`.
|
||||||
|
- Dual screen (§1.10): copy the layout and the banner display as `<name>_1` / `<name>_2` and let
|
||||||
|
each banner open its main display in its own layout.
|
||||||
|
- **Installed layouts**: `mobile`, `default`, `sxga1f/r`, `uxga1f/r`, `wxga1f/r`, `wsxga1f/r`,
|
||||||
|
`wsxgap1f/r`, `wuxga1f/r`, `ResizablePopup`, `FixedPopup`, `popup`, `Splash`, `tuningpanel`,
|
||||||
|
`faceplate`, `SelectMode`, `Setpoint`, `mapviewer` (`f` fixed / `r` resizable per screen
|
||||||
|
size). The test system's `Layouts.xml` also has a custom layout added by the author; keep a copy
|
||||||
|
of the original before editing.
|
||||||
|
|
||||||
|
## 3. Dataset forms (§2, §3)
|
||||||
|
|
||||||
|
Engineering-Module-style forms for operators: write `<name>Dia.xml` in `cfg\dialog\dialogs`
|
||||||
|
(never change the existing forms there), optionally a property file per language, then place a
|
||||||
|
*Dataset form* component on a display. Objects: `label`, `textField`, `checkBox`, `comboBox`,
|
||||||
|
`panel`, `component` (`JhmiRecordNameCom`, `JhmiTreeComboBoxCom`, `JhmiSelectAvailableCom`,
|
||||||
|
`JhmiTimeSelectorCom`); `meta` links an object to a dataset field: `field=`, `mixedValue=`,
|
||||||
|
`choices=<dataset>[,<field>[,<filter>]]`, `none=`, `available=`/`selected=`, `label=`,
|
||||||
|
`dateVisible=`, `visibility=`. Layout by `column`, `top="+"`, `right="*"`. Localisation via
|
||||||
|
property files and language codes (§3.5).
|
||||||
|
|
||||||
|
## 4. HTML display / Mobile Operator (§4)
|
||||||
|
|
||||||
|
- Export: Edit Module saves the HTML version automatically when the display has **HTML
|
||||||
|
display** ticked; or `jwuiutl -e HTML -i [-o <path>] [-f <deployment>] [<display>]` (without
|
||||||
|
`-o` it writes into `mobileoperator\operatorInterfaces\<deployment>`). **Verified**: both give
|
||||||
|
identical HTML (except a time stamp).
|
||||||
|
- Open: `http(s)://<host>:8080|8443/mobileoperator?d=<display>&l=<layout>&u=<user>` or *Open* of
|
||||||
|
*Mobile Operator* on the Remote Connect page. Login with a CI Server user (manual, or SSO via
|
||||||
|
`https://<host>:8443/auth/mbl`); user profile fields used: password, authorization group, ASA,
|
||||||
|
shelving group, process areas, logoff timeout, deployment, initial display, locale (layout
|
||||||
|
not). Login control: `dssana.sup` interface *mobile operator*.
|
||||||
|
- **Verified**: `http://localhost:8080/mobileoperator/?d=CIENG_Tank` showed the CI View-like
|
||||||
|
frame (menu, navigation buttons, alarm banner, status line) and the display; the number field
|
||||||
|
updated live; the alarm overview listed the sample's alarms. **Reloading the browser page ends
|
||||||
|
the session** (login again); use the display's own menu *View > Reload* instead (keeps the
|
||||||
|
session, confirmed by the user), and the display box to open other displays.
|
||||||
|
- Differences from the Java operator interface (§4.7): layout windows live inside the browser
|
||||||
|
window (no resizing of embedded layouts); displays need explicit width/height; names are
|
||||||
|
case-sensitive; zoom and pan not supported; some mouse/keyboard events and actions missing;
|
||||||
|
no enterprise displays. Components supported (§4.8): alarm overview, display, group, symbol,
|
||||||
|
trend, visibility group/layer, parameters, web browser (with listed properties).
|
||||||
|
- Full screen F11, Chrome shortcuts or `chrome.exe --app=http://<host>:<port>`.
|
||||||
|
- **Test system**: the HTML trend of `CIENG_Tank` drew no line although history existed; browser
|
||||||
|
console `Mismatch between number of labels … and number of columns in array (51)` (ISS-041).
|
||||||
|
|
@ -53,9 +53,9 @@ AID is not needed.
|
||||||
| 8 | IM 36K10E30 | Alarm System Performance Analysis | summarized, from docs (ASPA GUI not practiced; launcher and fetch limits checked) ([notes](manuals/IM36K10E30-01EN.md)) |
|
| 8 | IM 36K10E30 | Alarm System Performance Analysis | summarized, from docs (ASPA GUI not practiced; launcher and fetch limits checked) ([notes](manuals/IM36K10E30-01EN.md)) |
|
||||||
| 9 | IM 36K10L20 | History Management Engineering | done for `hisdbg` checks, files and rollover; archive and repair utilities from docs ([notes](manuals/IM36K10L20-01EN.md)); skill `history-management` |
|
| 9 | IM 36K10L20 | History Management Engineering | done for `hisdbg` checks, files and rollover; archive and repair utilities from docs ([notes](manuals/IM36K10L20-01EN.md)); skill `history-management` |
|
||||||
| 9 | IM 36K10C40 | Engineering Module - Historical | done by quick load for Event/Item, Scan/Time and Aggregation groups (aggregation needs a higher-priority source group, ISS-040); archive from docs ([notes](manuals/IM36K10C40-01EN.md)) |
|
| 9 | IM 36K10C40 | Engineering Module - Historical | done by quick load for Event/Item, Scan/Time and Aggregation groups (aggregation needs a higher-priority source group, ISS-040); archive from docs ([notes](manuals/IM36K10C40-01EN.md)) |
|
||||||
| 10 | IM 36K10R30 | Graphic Display Setup | not started |
|
| 10 | IM 36K10R30 | Graphic Display Setup | done for HTML display and folders; layouts, dataset forms, form language from docs ([notes](manuals/IM36K10R30-01EN.md)); skill `graphics` |
|
||||||
| 10 | IM 36K10C50 | Edit Module | not started |
|
| 10 | IM 36K10C50 | Edit Module | done for one display (built by the user) and `jwuiutl` validate/search/export; other components, symbols, actions from docs ([notes](manuals/IM36K10C50-01EN.md)) |
|
||||||
| 10 | IM 36K10C60 | Advanced Operating Graphics | not started |
|
| 10 | IM 36K10C60 | Advanced Operating Graphics | summarized, from docs (AOG displays checked read-only) ([notes](manuals/IM36K10C60-01EN.md)) |
|
||||||
| 11 | IM 36K10L50 | Data Set Service Engineering | not started |
|
| 11 | IM 36K10L50 | Data Set Service Engineering | not started |
|
||||||
| 11 | IM 36K10P30 | Data Set Service Language | not started |
|
| 11 | IM 36K10P30 | Data Set Service Language | not started |
|
||||||
| 11 | IM 36K10P20 | Report Generation Language | not started |
|
| 11 | IM 36K10P20 | Report Generation Language | not started |
|
||||||
|
|
@ -107,7 +107,7 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| G10/C10 | Authorization group and user creation ([task](../.claude/skills/authorization/tasks/users-groups.md)) | passed | passed | Group `CIENG_VIEWER` (sample file `08_auth_group_df.qli`) loaded/removed by Claude; test user `CIENG_TEST` (no password) loaded by the user, checked and removed. The sample creates no users. |
|
| G10/C10 | Authorization group and user creation ([task](../.claude/skills/authorization/tasks/users-groups.md)) | passed | passed | Group `CIENG_VIEWER` (sample file `08_auth_group_df.qli`) loaded/removed by Claude; test user `CIENG_TEST` (no password) loaded by the user, checked and removed. The sample creates no users. |
|
||||||
| C10 | String items: length 1–200, holds length − 1 characters ([task](../.claude/skills/item-engineering/tasks/string-items.md)) | passed | passed | Tested with temporary `CI-Eng-Sample.DEMO.STR*` items (removed): 201 rejected; too-long writes cut, status 12 OVERRANGED ([ISS-019](issues.md)). |
|
| C10 | String items: length 1–200, holds length − 1 characters ([task](../.claude/skills/item-engineering/tasks/string-items.md)) | passed | passed | Tested with temporary `CI-Eng-Sample.DEMO.STR*` items (removed): 201 rejected; too-long writes cut, status 12 OVERRANGED ([ISS-019](issues.md)). |
|
||||||
| C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. |
|
| C10 | Integrator time unit: integration granule `itm_int_secs` in `itm.sup` ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | 60 → `RUN_SECONDS` +1 per minute; restored to 1 (file identical to backup), +1 per second again ([ISS-010](issues.md)). Elevated restarts run by the user. |
|
||||||
| G10 | Displays, symbols, Operator Interface test | not practiced | pending | GUI (Edit Module); phase 10. |
|
| G10 | Displays, symbols, Operator Interface test | display done (phase 10); symbols not practiced | display added | Display `CIENG_Tank` built in the Edit Module and checked in the HTML display. |
|
||||||
| L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. |
|
| L41/C10 | Modbus TCP line, station, scan type, points, connected items by quick load ([task](../.claude/skills/equipment/tasks/modbus-station.md)) | passed | passed | Loopback to CI Server's own Modbus slave (`eqpmdcmem` + `eqpmdcslvtcp` on 5020, started by hand). Line load created and started `EQPCIENG`; removal stopped it and deleted its files. Write/read-back, off-scan/on-scan checked; full remove/reload from sample files. Protocol must be Open Modbus/TCP ([ISS-024](issues.md)). Mirror start files copied to `tls\com` by the user; after a restart everything came back under the CI Service and the setpoint was re-sent on connect. |
|
||||||
| G10 | Alarms, reports, audit, RDBMS, history | alarms done (phase 8); others not practiced | alarms added | Covered in their own phases (7–12). |
|
| G10 | Alarms, reports, audit, RDBMS, history | alarms done (phase 8); others not practiced | alarms added | Covered in their own phases (7–12). |
|
||||||
| R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). |
|
| R10/R20 | Read a setup file: active settings and keyword help ([task](../.claude/skills/portal-setup/tasks/read-setup-file.md)) | passed | n/a | Read-only. Compared with the Setup File Editor GUI for `wfla_display.sup`, `wflgdi.sup` and all 9 tabs of `jwuiisg.sup`: fields and values identical. Manual differences logged as ISS-012 to ISS-017 (installed software taken as the reference). |
|
||||||
|
|
@ -130,3 +130,6 @@ now come before classes and objects (phase 6), and the other interfaces follow a
|
||||||
| L20 | `hisdbg` read-only checks and forced rollover ([task](../.claude/skills/history-management/tasks/history-checks.md)) | passed | passed | 45 groups, 30 clients; group/unit info; rollover of `CIENG_EVENT` closed unit 3,1. Extra history types 4 and 36 (ISS-039). |
|
| L20 | `hisdbg` read-only checks and forced rollover ([task](../.claude/skills/history-management/tasks/history-checks.md)) | passed | passed | 45 groups, 30 clients; group/unit info; rollover of `CIENG_EVENT` closed unit 3,1. Extra history types 4 and 36 (ISS-039). |
|
||||||
| L20/L35 | `ithloahis` into older units ([task](../.claude/skills/system-management/tasks/load-history.md)) | passed | passed | Samples in the active unit or a unit closed after the restart stored; older ones dropped silently (ISS-006); dropped sample became the next unit's initial value (ISS-038). |
|
| L20/L35 | `ithloahis` into older units ([task](../.claude/skills/system-management/tasks/load-history.md)) | passed | passed | Samples in the active unit or a unit closed after the restart stored; older ones dropped silently (ISS-006); dropped sample became the next unit's initial value (ISS-038). |
|
||||||
| L20/C40 | Archive and retrieve, `hasdbg`, `hisrecover`, `hiswrn`, `hisrep` by hand | not practiced | n/a | No archive device configured (`has.sup`); would change history administration. |
|
| L20/C40 | Archive and retrieve, `hasdbg`, `hisrecover`, `hiswrn`, `hisrep` by hand | not practiced | n/a | No archive device configured (`has.sup`); would change history administration. |
|
||||||
|
| C50 | Build a display in the Edit Module, check the XML ([task](../.claude/skills/graphics/tasks/create-display.md)) | passed | passed | User built `CIENG_Tank` (HTML mode): text, number field, alarm overview, trend. File stores item name + id; after a sample reload (id 248 → 268) validation still passed and a new session showed live values. |
|
||||||
|
| C50/R30 | Deploy/remove, `jwuiutl` HTML export, validate, search; HTML display in the browser ([task](../.claude/skills/graphics/tasks/deploy-displays.md)) | passed | passed | Scripts `displays/deploy_displays.cmd` / `remove_displays.cmd`; command-line HTML identical to the Edit Module's. Number field live in the browser; HTML trend draws no line (ISS-041). Browser page reload ends the session; the display menu *View > Reload* keeps it (user). |
|
||||||
|
| R30/C50/C60 | Layouts, dataset forms, symbols, actions, AOG library | not practiced | n/a | GUI work in the Edit Module; layouts are shared system files. |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue