Compare commits

...

79 Commits

Author SHA1 Message Date
f95648b02c Merge pull request 'Fix for status' (#162) from script-fix into main
Reviewed-on: #162
2025-07-10 12:49:51 +00:00
beka makharadze
0821720fce Fix for status 2025-07-10 16:36:05 +04:00
6edf75483a Merge pull request 'MTN6-25' (#161) from beka-5 into main
Reviewed-on: #161
2025-07-10 12:16:10 +00:00
beka makharadze
76c3b93ba9 Remove script 2025-07-10 15:26:42 +04:00
beka makharadze
98304fc7d9 Update MCM docked-east 2025-07-09 19:16:18 +04:00
beka makharadze
c0d785bea0 Update CommandControl page 2025-07-09 17:15:24 +04:00
beka makharadze
e010d18094 Fix Script 2025-07-09 12:06:36 +04:00
beka makharadze
98bdda8c32 Fix script remove stuff 2025-07-08 19:51:47 +04:00
beka makharadze
49a39bc0d4 MTN6-25 2025-07-08 19:49:55 +04:00
4203a0e98d Deleted Destuffs updated Views 2025-07-08 19:03:11 +04:00
4d2e22d1ca Merge pull request 'MTN6-22' (#159) from beka-4 into main
Reviewed-on: #159
2025-07-08 13:33:02 +00:00
97767c8e66 Merge pull request 'MTN6-26' (#160) from beka-5 into main
Reviewed-on: #160
2025-07-08 13:32:53 +00:00
bc36593f6b Updated APF Docked East view 2025-07-08 17:05:31 +04:00
beka makharadze
40aed9c7cf MTN6-26 2025-07-08 14:57:53 +04:00
beka makharadze
990b0bc52b MTN6-22 2025-07-08 13:46:36 +04:00
f659e55241 Merge pull request 'MTN6-18 and fix some names' (#158) from beka-4 into main
Reviewed-on: #158
2025-07-07 13:53:55 +00:00
beka makharadze
1dcbf4d8f9 MTN6-18 and fix some names 2025-07-07 15:59:56 +04:00
ce52383e5f Merge pull request 'MTN6-20, MTN6-24' (#157) from beka-4 into main
Reviewed-on: #157
2025-07-07 11:35:47 +00:00
beka makharadze
b65aa181a8 Center devices MCM03, MCM05, MCM06 2025-07-07 15:12:52 +04:00
beka makharadze
7a5f1be5e5 Update MCM03, MCM06, MCM07 2025-07-07 15:02:51 +04:00
beka makharadze
37b8a55f97 Update MCM02 2025-07-07 13:41:03 +04:00
beka makharadze
06f7597665 Update MCM01 2025-07-07 13:23:26 +04:00
beka makharadze
5d803866c7 Remove FIOs MCM04 2025-07-07 13:20:22 +04:00
beka makharadze
585ec039de Center devices MCM05 2025-07-07 13:16:01 +04:00
beka makharadze
c863afc801 Update MCM05 2025-07-07 13:04:32 +04:00
7dcbcd04cd Merge pull request 'MTN6-11' (#156) from beka-4 into main
Reviewed-on: #156
2025-07-07 09:03:55 +00:00
beka makharadze
e430d94005 Update MCM04 2025-07-07 12:24:03 +04:00
beka makharadze
18c1a2f7b0 MTN6-11 2025-07-03 12:53:34 +04:00
b9ca08171d Merge pull request 'MTN6-9' (#155) from beka-4 into main
Reviewed-on: #155
2025-07-03 08:36:59 +00:00
beka makharadze
0b38a23c63 MTN6-9 2025-07-02 18:37:36 +04:00
37102f2d68 Merge pull request 'MTN6-6' (#154) from beka-4 into main
Reviewed-on: #154
2025-07-02 12:17:45 +00:00
fef771d42f Merge pull request 'Fixed: alarms weren't showing in the command control view' (#153) from guga into main
Reviewed-on: #153
2025-07-02 11:52:46 +00:00
beka makharadze
44ef90ddf5 MTN6-6 2025-07-02 15:49:54 +04:00
21111905bf Merge pull request 'MTN6-1, MTN6-2, MTN6-3, MTN6-4' (#150) from beka-1 into main
Reviewed-on: #150
2025-07-02 08:11:56 +00:00
3f130676b1 Merge pull request 'MTN6-7, MTN6-8' (#151) from beka-dpm into main
Reviewed-on: #151
2025-07-02 08:11:29 +00:00
65032eb02b Merge pull request 'MTN6-5' (#152) from beka-2 into main
Reviewed-on: #152
2025-07-02 08:11:13 +00:00
beka makharadze
5d9d450eba MTN6-7, MTN6-8 2025-07-02 11:25:35 +04:00
beka makharadze
2cedc2ada5 Add nav buttons to more views 2025-07-02 10:54:03 +04:00
beka makharadze
ab894a8ac1 Other views 2025-07-01 19:33:19 +04:00
beka makharadze
01f942c338 MTN6-276 2025-07-01 19:29:10 +04:00
beka makharadze
9f460e173b Fix VFD Docked-East 2025-07-01 18:43:42 +04:00
beka makharadze
73da246632 Fix All Docked-Easts 2025-07-01 16:39:20 +04:00
beka makharadze
ba62855d1f Fix MCM color 2025-07-01 16:31:11 +04:00
beka makharadze
061ea0e091 Fix MCM Docked-East 2025-07-01 13:32:44 +04:00
beka makharadze
81e6d7be7c Fix StatusNonPowered Docked-East 2025-07-01 11:55:21 +04:00
beka makharadze
a341670602 Fix JR PB Docked-East 2025-07-01 11:22:21 +04:00
beka makharadze
3c897f4bde Fix Device Status Docked-East 2025-07-01 11:00:35 +04:00
beka makharadze
4b9d34f83b Fix Extendo Docked-East 2025-07-01 10:57:13 +04:00
089dcc4c43 Updated Views (Percent) 2025-06-30 19:46:32 +04:00
a37f064345 Merge pull request 'Change EPC colors' (#149) from beka-1 into main
Reviewed-on: #149
2025-06-30 14:55:27 +00:00
19c3c876dd Fixed LOGO 2025-06-30 18:53:29 +04:00
beka makharadze
30e4c039d2 Change EPC colors 2025-06-30 18:46:13 +04:00
1af60b12e8 Merge pull request 'MTN6-268' (#148) from beka-1 into main
Reviewed-on: #148
2025-06-30 14:04:38 +00:00
beka makharadze
343a80f648 Update buttons 2025-06-30 17:12:51 +04:00
1c6a331ae7 Merge pull request 'MTN6-266 MTN6-265 MTN6-264' (#146) from guga into main
Reviewed-on: #146
2025-06-30 12:59:51 +00:00
beka makharadze
fa382deea5 Extendo Tags 2025-06-30 16:27:22 +04:00
beka makharadze
28365a222a MTN6-268 2025-06-30 16:19:39 +04:00
c2cd9885fd Merge pull request 'Add MCM and Extendo Symbols to views' (#147) from beka-1 into main
Reviewed-on: #147
2025-06-30 08:02:19 +00:00
beka makharadze
c81efc5f57 Add MCM and Extendo Symbols to views 2025-06-30 11:34:37 +04:00
458a3e1d7e Merge pull request 'Update PullChord' (#144) from beka-pullchord into main
Reviewed-on: #144
2025-06-26 15:33:12 +00:00
79b6c8b136 Merge pull request 'recource json files were missing' (#145) from guga into main
Reviewed-on: #145
2025-06-26 14:47:30 +00:00
ee6f3d7d76 Merge pull request 'MCM' (#142) from beka-MCM into main
Reviewed-on: #142
2025-06-26 14:26:21 +00:00
f06f72bfcf Merge pull request 'Alarm click events' (#143) from guga into main
Reviewed-on: #143
2025-06-26 14:25:58 +00:00
beka makharadze
bb13144029 Update PullChord 2025-06-26 16:26:57 +04:00
beka makharadze
1e311e3c36 Fix button colors 2025-06-26 13:08:27 +04:00
beka makharadze
7c3d8b70ba Fix Disconnect 2025-06-26 11:21:05 +04:00
beka makharadze
8242a5bfb6 Update dock 2025-06-25 19:05:07 +04:00
59deaf9192 Merge pull request 'Fix' (#141) from project-fix into main
Reviewed-on: #141
2025-06-25 12:16:50 +00:00
beka makharadze
df526725c2 MCM Symbol and Docked-East 2025-06-25 16:11:24 +04:00
beka makharadze
ecd305570d Fix 2025-06-25 13:28:55 +04:00
13a0a49fc3 Merge pull request 'MTN6-263' (#137) from beka-3 into main
Reviewed-on: #137
2025-06-24 13:12:35 +00:00
28f62b23a8 Merge pull request 'fixed the alarm in the header' (#140) from guga into main
Reviewed-on: #140
2025-06-24 12:40:38 +00:00
ce35a82503 Merge pull request 'Showing alarms on the controller statuses' (#139) from guga into main
Reviewed-on: #139
2025-06-24 12:08:47 +00:00
38a0aa27cb Merge pull request 'Docked South alarm footer is funcitonal now. Minor adjustments in the Realtime View. Added missing recource file for the GetAlarmsWithCount sql query.' (#138) from guga into main
Reviewed-on: #138
2025-06-24 11:56:44 +00:00
beka makharadze
de67dc9f54 MTN6-263 2025-06-24 11:53:52 +04:00
beka makharadze
965a4a1e66 MTN6-263 2025-06-24 11:18:04 +04:00
bd599b70b1 Merge pull request 'Alarms in Docked-VFD' (#136) from guga into main
Reviewed-on: #136
2025-06-23 13:57:08 +00:00
06bfc3cc2a Merge pull request 'Fix JR button and DeviceStatus' (#135) from beka-3 into main
Reviewed-on: #135
2025-06-23 13:36:56 +00:00
b.makharadze
cb067a18f8 Fix JR button and DeviceStatus 2025-06-23 17:34:53 +04:00
73 changed files with 25291 additions and 17388 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -231,6 +231,48 @@
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-Extendo",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-MCM",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-BTN",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Button"
}
],
"top": [

View File

@ -6,9 +6,9 @@
"$": [
"ts",
192,
1744298716080
1751383977919
],
"$ts": 1744298716080
"$ts": 1751383977919
}
}
},
@ -133,7 +133,7 @@
"panel_id": "value",
"text": "DO1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -153,7 +153,7 @@
"panel_id": "value",
"text": "DO2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -173,7 +173,7 @@
"panel_id": "value",
"text": "DO3/WRG"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -193,7 +193,7 @@
"panel_id": "value",
"text": "DO4"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -213,7 +213,7 @@
"panel_id": "value",
"text": "DO5/TRS"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -233,7 +233,7 @@
"panel_id": "value",
"text": "IB1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -253,7 +253,7 @@
"panel_id": "value",
"text": "IND1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -273,7 +273,7 @@
"panel_id": "value",
"text": "IND2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -293,7 +293,7 @@
"panel_id": "value",
"text": "IT1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -313,7 +313,7 @@
"panel_id": "value",
"text": "IT2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -333,7 +333,7 @@
"panel_id": "value",
"text": "ITS1/2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -353,7 +353,7 @@
"panel_id": "value",
"text": "MAR1/2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -373,7 +373,7 @@
"panel_id": "value",
"text": "MLT1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -393,7 +393,7 @@
"panel_id": "value",
"text": "MLT2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -413,7 +413,7 @@
"panel_id": "value",
"text": "MSSA"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -433,7 +433,7 @@
"panel_id": "value",
"text": "MSSB"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -453,7 +453,7 @@
"panel_id": "value",
"text": "MSSC"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -473,7 +473,7 @@
"panel_id": "value",
"text": "MSSD"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -493,7 +493,7 @@
"panel_id": "value",
"text": "MSSH"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -513,7 +513,7 @@
"panel_id": "value",
"text": "PFS1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -533,7 +533,7 @@
"panel_id": "value",
"text": "PFS2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -553,7 +553,7 @@
"panel_id": "value",
"text": "PSA"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -573,7 +573,7 @@
"panel_id": "value",
"text": "PSB"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -593,7 +593,7 @@
"panel_id": "value",
"text": "PSC"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -613,7 +613,7 @@
"panel_id": "value",
"text": "PSD"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -633,7 +633,7 @@
"panel_id": "value",
"text": "PTSA"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -653,7 +653,7 @@
"panel_id": "value",
"text": "PTSB"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -673,7 +673,7 @@
"panel_id": "value",
"text": "PTSC"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -693,7 +693,7 @@
"panel_id": "value",
"text": "PTSD"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -713,7 +713,7 @@
"panel_id": "value",
"text": "PTSH"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -733,7 +733,7 @@
"panel_id": "value",
"text": "SGL1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -753,7 +753,7 @@
"panel_id": "value",
"text": "SGL2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -773,7 +773,7 @@
"panel_id": "value",
"text": "SLAM"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -793,7 +793,7 @@
"panel_id": "value",
"text": "TR1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -813,7 +813,7 @@
"panel_id": "value",
"text": "TR2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -833,7 +833,7 @@
"panel_id": "value",
"text": "TR3"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -853,7 +853,7 @@
"panel_id": "value",
"text": "TR4"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -873,7 +873,7 @@
"panel_id": "value",
"text": "TR5"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -893,7 +893,7 @@
"panel_id": "value",
"text": "TR6"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -913,7 +913,7 @@
"panel_id": "value",
"text": "TRK1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -933,7 +933,7 @@
"panel_id": "value",
"text": "TRK2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -953,7 +953,7 @@
"panel_id": "value",
"text": "TRK3"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -973,7 +973,7 @@
"panel_id": "value",
"text": "TRP1"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -993,7 +993,7 @@
"panel_id": "value",
"text": "TRP2"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -1013,7 +1013,7 @@
"panel_id": "value",
"text": "MTN6"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
}

View File

@ -6,9 +6,9 @@
"$": [
"ts",
192,
1750063587377
1751383350721
],
"$ts": 1750063587376
"$ts": 1751383350721
}
}
},
@ -99,7 +99,7 @@
"panel_id": "value",
"text": "MCM01 Fluid Inbound Merges 1-4"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -119,7 +119,7 @@
"panel_id": "value",
"text": "MCM02 Fluid Inbound Merges 5-7"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -139,7 +139,7 @@
"panel_id": "value",
"text": "MCM03 Non Con"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -162,7 +162,7 @@
"panel_id": "value",
"text": "MCM04 North Bulk Inbound, Fluid Outbound and Problem Solve Chutes"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -182,7 +182,7 @@
"panel_id": "value",
"text": "MCM04 North Bulk Inbound, Fluid Outbound and Problem Solve Chutes"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -205,7 +205,7 @@
"panel_id": "value",
"text": "MCM05 South Bulk Inbound, Fluid Outbound and Problem Solve"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -228,7 +228,7 @@
"panel_id": "value",
"text": "MCM05 North Bulk Inbound, Fluid Outbound and Problem Solve Chutes"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -248,7 +248,7 @@
"panel_id": "value",
"text": "MCM06 Non Con"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -268,7 +268,7 @@
"panel_id": "value",
"text": "MCM07 Bypass"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},
@ -1485,7 +1485,7 @@
"pageid": null,
"text": "BG Sorter"
},
"path": "Custom-Views/Area_Nav_Button"
"path": "Symbol-Views/Equipment-Views/Area_Nav_Button"
},
"type": "ia.display.view"
},

View File

@ -1,6 +1,25 @@
{
"custom": {},
"params": {},
"params": {
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 180,
@ -56,6 +75,17 @@
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-VFD\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root"
},

View File

@ -14,7 +14,19 @@
"OutDown": false,
"OutOn": false,
"OutRight": false,
"OutUp": false
"OutUp": false,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"params.Down1": {
@ -72,6 +84,10 @@
"params.OutUp": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {

View File

@ -54,7 +54,19 @@
true
],
"in": true,
"out": true
"out": true,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"params.con_lines": {
@ -72,6 +84,10 @@
"params.out": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
@ -87,8 +103,8 @@
"name": "DPM_TO_HUB"
},
"position": {
"basis": "300px",
"grow": 1
"height": 1,
"width": 1
},
"propConfig": {
"props.elements[0].elements[0].elements[1].stroke.paint": {
@ -3550,14 +3566,40 @@
"viewBox": "0 0 1920 1080"
},
"type": "ia.shapes.svg"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"script": "\t\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "CoordinateContainer"
},
"position": {
"height": 0.2602,
"width": 0.2609,
"x": 0.3677,
"y": 0.3694
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
}
],
"meta": {
"name": "root"
},
"props": {
"direction": "column"
"mode": "percent"
},
"type": "ia.container.flex"
"type": "ia.container.coord"
}
}

View File

@ -8,7 +8,19 @@
"OutDown": false,
"OutOn": false,
"OutRight": false,
"OutUp": true
"OutUp": true,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"params.InDown": {
@ -42,6 +54,10 @@
"params.OutUp": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
@ -1337,6 +1353,17 @@
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-MCM\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root"
},

View File

@ -1,6 +1,25 @@
{
"custom": {},
"params": {},
"params": {
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 180,
@ -55,6 +74,17 @@
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root"
},

View File

@ -2,7 +2,7 @@
"custom": {
"dpm1-dpm2": false,
"dpm10-dpm11": false,
"dpm11-mcm": true,
"dpm11-mcm": false,
"dpm2-dpm3": false,
"dpm3-dpm4": false,
"dpm4-dpm5": false,
@ -11,44 +11,427 @@
"dpm7-dpm8": false,
"dpm8-dpm9": false,
"dpm9-dpm10": false,
"mcm_dpm1": true
"mcm_dpm1": false
},
"params": {
"tagProps": [
"System/MCM04/MCM04",
"System/MCM04/Field_Devices/DPM/PRS3_5_DPM1",
"System/MCM04/Field_Devices/DPM/PS11_7_DPM1",
"System/MCM04/Field_Devices/DPM/VSC_DPM3",
"System/MCM04/Field_Devices/DPM/VSC_DPM2",
"System/MCM04/Field_Devices/DPM/FL3016_2_DPM1",
"System/MCM04/Field_Devices/DPM/VSC_DPM1",
"System/MCM04/Field_Devices/DPM/VSA_DPM1_7",
"System/MCM04/Field_Devices/DPM/FL1034_2_DPM1",
"System/MCM04/Field_Devices/DPM/VSA_DPM2",
"System/MCM04/Field_Devices/DPM/VSA_DPM3",
"System/MCM04/Field_Devices/DPM/PS10_2_DPM1"
]
},
"params": {},
"propConfig": {
"custom.dpm1-dpm2": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"1": "{view.params.tagProps[1]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{1}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm10-dpm11": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"10": "{view.params.tagProps[10]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{10}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm11-mcm": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"11": "{view.params.tagProps[11]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{11}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm2-dpm3": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"2": "{view.params.tagProps[2]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{2}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm3-dpm4": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"3": "{view.params.tagProps[3]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{3}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": false
},
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm4-dpm5": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"4": "{view.params.tagProps[4]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{4}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm5-dpm6": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"5": "{view.params.tagProps[5]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{5}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm6-dpm7": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"6": "{view.params.tagProps[6]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{6}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm7-dpm8": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"7": "{view.params.tagProps[7]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{7}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm8-dpm9": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"8": "{view.params.tagProps[8]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{8}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.dpm9-dpm10": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"9": "{view.params.tagProps[9]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{9}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.mcm_dpm1": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},1)",
"type": "expression"
},
{
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": true
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
@ -613,6 +996,18 @@
"OutDown": false,
"OutRight": true,
"OutUp": false,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
],
"view": "Windows/Tabs/Enternet Windows/DPMs/DPM Devices/MCM04/PS10_2_DPM1"
},
"path": "Windows/Tabs/Enternet Windows/Components/DPM_BLOCK"
@ -916,6 +1311,18 @@
"OutDown": false,
"OutRight": false,
"OutUp": true,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
],
"view": "Windows/Tabs/Enternet Windows/DPMs/DPM Devices/MCM04/PRS3_5_DPM1"
},
"path": "Windows/Tabs/Enternet Windows/Components/DPM_BLOCK"

View File

@ -23,6 +23,14 @@
"/Device-manager": {
"viewPath": "Main-Views/Device-Manager/DeviceManager"
},
"/Extendo": {
"title": "",
"viewPath": "Simulations/Extendo"
},
"/Field_Devices": {
"title": "",
"viewPath": "Simulations/Field_Devices"
},
"/Help": {
"title": "Help",
"viewPath": "Main-Views/Help"
@ -31,6 +39,10 @@
"title": "",
"viewPath": "Additional-Home-View/MAP-Home"
},
"/MCM": {
"title": "",
"viewPath": "Simulations/MCM"
},
"/Monitron": {
"viewPath": "Main-Views/Monitron"
},
@ -145,6 +157,62 @@
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-DS",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-SNP",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 150,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-MCM",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-Extendo",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo"
}
],
"top": [

View File

@ -3,6 +3,7 @@
"alarm_filter": {
"magnificaiton": "x2",
"orderby": false,
"show_buttons": true,
"show_camera_jams": true,
"show_diagnostic": true,
"show_fio": true,

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-30T10:38:01Z"
},
"lastModificationSignature": "cf2dfc6386e69cf24a8b9fec295ef389020353855ff9e0b8eab452cd02d10afb"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -0,0 +1,66 @@
{
"custom": {},
"params": {},
"props": {
"defaultSize": {
"height": 1080,
"width": 1920
}
},
"root": {
"children": [
{
"meta": {
"name": "Image"
},
"position": {
"height": 1080,
"width": 1920
},
"props": {
"fit": {
"mode": "fill"
},
"source": "http://127.0.0.1:5500/VFD.svg"
},
"type": "ia.display.image"
},
{
"meta": {
"name": "FL4066_4_EX1"
},
"position": {
"height": 225,
"width": 355,
"x": 766.83,
"y": 410.08
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"System/Extendo/FL4066_4_EX1",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Equipment-Views/Extendo"
},
"type": "ia.display.view"
}
],
"meta": {
"name": "root"
},
"type": "ia.container.coord"
}
}

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-25T11:58:07Z"
},
"lastModificationSignature": "5f14cb41e962dd58a4a8110907038073c11e81fa843429ab9a9f84c5c23df1bc"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -0,0 +1,57 @@
{
"custom": {},
"params": {},
"props": {
"defaultSize": {
"height": 1080,
"width": 1920
}
},
"root": {
"children": [
{
"meta": {
"name": "MCM"
},
"position": {
"height": 0.2083,
"width": 0.1255,
"x": 0.4314,
"y": 0.3797
},
"props": {
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"MCM",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"path": "Symbol-Views/Equipment-Views/MCM"
},
"type": "ia.display.view"
}
],
"meta": {
"name": "root"
},
"position": {
"x": 0.676,
"y": 0.5167
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
}
}

View File

@ -3,7 +3,8 @@
"params": {},
"props": {
"defaultSize": {
"width": 949
"height": 1080,
"width": 1920
}
},
"root": {
@ -24,13 +25,13 @@
"name": "Button"
},
"position": {
"height": 101,
"height": 0.1259,
"rotate": {
"anchor": "100% 129%"
},
"width": 169,
"x": 65,
"y": 149
"width": 0.1091,
"x": 0.0546,
"y": 0.1862
},
"props": {
"text": "APF/VFD"
@ -53,13 +54,13 @@
"name": "Button_0"
},
"position": {
"height": 104,
"height": 0.1296,
"rotate": {
"anchor": "75% 25%"
},
"width": 188,
"x": 264,
"y": 146
"width": 0.1211,
"x": 0.2349,
"y": 0.1825
},
"props": {
"text": "Station_JR"
@ -82,13 +83,13 @@
"name": "Button_1"
},
"position": {
"height": 105,
"height": 0.1313,
"rotate": {
"anchor": "100% -106%"
},
"width": 184,
"x": 483,
"y": 145
"width": 0.1187,
"x": 0.4282,
"y": 0.1812
},
"props": {
"text": "Station_EPC"
@ -100,8 +101,7 @@
"dom": {
"onClick": {
"config": {
"params": {},
"view": "Simulations/Field_Devices"
"page": "/Field_Devices"
},
"scope": "C",
"type": "nav"
@ -112,23 +112,84 @@
"name": "Button_2"
},
"position": {
"height": 105,
"height": 0.1313,
"rotate": {
"anchor": "100% -106%"
},
"width": 184,
"x": 696,
"y": 145
"width": 0.1187,
"x": 0.6228,
"y": 0.1812
},
"props": {
"text": "SIO FIO HUB"
},
"type": "ia.input.button"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"page": "/MCM"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button_3"
},
"position": {
"height": 0.1313,
"rotate": {
"anchor": "100% -106%"
},
"width": 0.1187,
"x": 0.8134,
"y": 0.1803
},
"props": {
"text": "MCM"
},
"type": "ia.input.button"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"page": "/Extendo"
},
"scope": "C",
"type": "nav"
}
}
},
"meta": {
"name": "Button_4"
},
"position": {
"height": 0.1313,
"rotate": {
"anchor": "100% -106%"
},
"width": 0.1187,
"x": 0.4282,
"y": 0.3858
},
"props": {
"text": "Extendo"
},
"type": "ia.input.button"
}
],
"meta": {
"name": "root"
},
"props": {
"mode": "percent"
},
"type": "ia.container.coord"
}
}

View File

@ -147,6 +147,62 @@
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-StatusNonPowered"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-DS",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Device-Status"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-MCM",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-MCM"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-Extendo",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Extendo"
},
{
"anchor": "fixed",
"autoBreakpoint": 480,
"content": "cover",
"handle": "hide",
"iconUrl": "",
"id": "Docked-East-BTN",
"modal": false,
"resizable": false,
"show": "onDemand",
"size": 400,
"viewParams": {},
"viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-Button"
}
],
"top": [

View File

@ -6,9 +6,9 @@
"$": [
"ts",
192,
1750943397562
1751966913728
],
"$ts": 1750943397562
"$ts": 1751966913727
}
}
},
@ -212,9 +212,6 @@
"type": "ia.container.flex"
},
{
"custom": {
"s3URI": "SCADA/rme-white-250.png"
},
"meta": {
"name": "Image"
},
@ -229,21 +226,6 @@
},
"type": "expr"
}
},
"props.source": {
"binding": {
"config": {
"path": "this.custom.s3URI"
},
"enabled": false,
"transforms": [
{
"code": "\treturn AWS.s3.getPresignedURL(self, value)",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
@ -251,7 +233,7 @@
"height": 30,
"mode": "fill"
},
"source": null
"source": "/system/images/Builtin/amazon_rme_logo.png"
},
"type": "ia.display.image"
},
@ -882,8 +864,6 @@
},
"type": "ia.display.label"
},
{
"children": [
{
"custom": {
"covert": true
@ -1013,10 +993,17 @@
"name": "Label"
},
"position": {
"basis": "50px",
"shrink": 0
},
"propConfig": {
"position.basis": {
"binding": {
"config": {
"expression": "len({this.props.text}) * 11 + \"px\""
},
"type": "expr"
}
},
"props.text": {
"binding": {
"config": {
@ -1041,20 +1028,6 @@
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "FlexContainer_2"
},
"position": {
"basis": "200px"
},
"props": {
"style": {
"overflow": "hidden"
}
},
"type": "ia.container.flex"
},
{
"meta": {

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-07-02T11:48:18Z"
},
"lastModificationSignature": "de5bb9c72bf05ead61e866f16594f8e0422107f2e41098cad56320fdd7ff0b8d"
}
}

View File

@ -0,0 +1,643 @@
{
"custom": {
"PLC_list": null,
"running_state": -1,
"state": 0,
"views_data": []
},
"params": {
"tagProps": [
"/System/Station/Buttons/UL1_3_JR_PB2",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.PLC_list": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]Configuration/PLC"
},
"transforms": [
{
"code": "\tdevices \u003d system.util.jsonDecode(value)\n\tplcList \u003d []\n\tfor k in devices.keys():\n\t\tplcList.append(k)\n\t\t\n\treturn(sorted(set(plcList)))\n",
"type": "script"
}
],
"type": "tag"
},
"persistent": true
},
"custom.running_state": {
"binding": {
"config": {
"expression": "try(jsonGet({session.custom.state_messages},{this.custom.tag_path_to_lookup}),-1)\t\r\n"
},
"transforms": [
{
"expression": "if({value} !\u003d -1, try(jsonGet({value},\"state\"),4),{value})",
"type": "expression"
}
],
"type": "expr"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), 0, {value})",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 3,
"output": 3
},
{
"input": 2,
"output": 2
},
{
"input": 1,
"output": 1
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.views_data": {
"binding": {
"config": {
"struct": {
"equipment_id": "{view.params.tagProps[0]}"
},
"waitOnAll": true
},
"transforms": [
{
"code": "\tproject_info \u003d system.perspective.getProjectInfo()\n\t#self.custom.views_data \u003d project_info\n\tviews \u003d project_info.get(\"views\")\n\t#equipment_id \u003d self.view.params.tagProps[0]\n\tviews_data \u003d [i for i in views if i[\"path\"].startswith(\"Custom-Views/\"+ value.equipment_id)]\n\t#self.custom.views_data \u003d views_data\n\t\n\treturn views_data",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
}
},
"props": {
"defaultSize": {
"width": 400
}
},
"root": {
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"expression": "\u0027Source ID: \u0027 + {view.params.tagProps[0]}"
},
"type": "expr"
}
}
},
"props": {
"style": {
"color": "#FFFF",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
}
},
"type": "ia.display.label"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.closeDock(\u0027Docked-East-BTN\u0027)\n\tself.getSibling(\"tabs\").props.currentTabIndex \u003d 0"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Icon",
"tooltip": {
"enabled": true,
"style": {
"cursor": "pointer"
},
"text": "Close faceplate"
}
},
"props": {
"path": "material/close",
"style": {
"cursor": "pointer",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
}
},
"type": "ia.display.icon"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "30px",
"shrink": 0
},
"props": {
"style": {
"overflow": "hidden"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "32px",
"display": false
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)"
},
"enabled": false,
"type": "expr"
}
}
},
"props": {
"style": {
"classes": "Labels/Label_1",
"marginTop": 20
},
"text": "No Active Alarms"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "AlarmStatusTable"
},
"position": {
"basis": "400px",
"grow": 1
},
"propConfig": {
"props.filters.active.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\treturn value[1:]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"columns": {
"active": {
"displayPath": {
"enabled": false
},
"priority": {
"enabled": false
},
"source": {
"enabled": false
},
"state": {
"enabled": false
}
}
},
"filters": {
"active": {
"priorities": {
"critical": false,
"high": false,
"low": false,
"medium": false
},
"states": {
"clearUnacked": false
}
}
},
"refreshRate": 500,
"toolbar": {
"enabled": false
}
},
"type": "ia.display.alarmstatustable"
}
],
"meta": {
"name": "Active_tab"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"children": [
{
"meta": {
"name": "NameField"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "NAME"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "DeviceName"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": " return value.rsplit(\u0027/\u0027, 1)[-1]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Name"
},
"position": {
"basis": "35px"
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel",
"overflow": "hidden"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer_0"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "NameField"
},
"position": {
"basis": "50%",
"grow": 1
},
"props": {
"style": {
"paddingLeft": 20
},
"text": "LIGHT"
},
"type": "ia.display.label"
},
{
"meta": {
"name": "PB_Light"
},
"position": {
"basis": "50%",
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/PR_PB_Pressed"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "ON"
},
{
"input": 0,
"output": "OFF"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"props.textStyle.color": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": "ON",
"output": "#47FF47"
},
{
"input": "OFF",
"output": "#FF0000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"style": {
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
},
"type": "ia.display.label"
}
],
"meta": {
"name": "Property"
},
"position": {
"basis": "35px",
"shrink": 2
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer_1"
},
"position": {
"basis": "35px"
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "Info_tab"
},
"position": {
"tabIndex": 1
},
"props": {
"direction": "column",
"style": {
"margin-left": ""
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "tabs"
},
"position": {
"grow": 1
},
"props": {
"currentTabIndex": 1,
"menuType": "modern",
"tabSize": {
"width": 1000
},
"tabStyle": {
"active": {
"classes": "",
"color": "#FFFFFF",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
},
"inactive": {
"classes": "",
"color": "#B8B8B8",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"paddingLeft": 10
}
},
"tabs": [
"Alarms",
"Info"
]
},
"type": "ia.container.tab"
}
],
"meta": {
"name": "FlexContainer_1"
},
"position": {
"basis": "670px",
"grow": 1
},
"props": {
"style": {
"border-top": "1px solid white",
"gap": ""
}
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "800px",
"grow": 1
},
"props": {
"direction": "column"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "root"
},
"props": {
"direction": "column",
"style": {
"classes": "Buttons/Button-Menu"
}
},
"type": "ia.container.flex"
}
}

View File

@ -1,6 +1,14 @@
{
"custom": {
"PLC_list": null,
"PLC_list": [
"MCM01",
"MCM02",
"MCM03",
"MCM04",
"MCM05",
"MCM06",
"MCM07"
],
"running_state": -1,
"state": 0,
"views_data": []
@ -204,6 +212,11 @@
"basis": "30px",
"shrink": 0
},
"props": {
"style": {
"overflow": "hidden"
}
},
"type": "ia.container.flex"
},
{
@ -428,16 +441,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "TRUE",
"input": "UNKNOWN",
"output": "#FFFFFF"
},
{
"input": "FALSE",
"output": "#D5D5D5"
}
],
"outputType": "color",
@ -460,16 +469,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "FALSE",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "TRUE"
"output": "FAULTED"
},
{
"input": 0,
"output": "NOT FAULTED"
}
],
"outputType": "scalar",
@ -490,12 +503,12 @@
"inputType": "scalar",
"mappings": [
{
"input": "FALSE",
"output": "#FF0000"
"input": "NOT FAULTED",
"output": "#47FF47"
},
{
"input": "FALSE",
"output": "#47FF47"
"input": "FAULTED",
"output": "#FF0000"
}
],
"outputType": "color",
@ -564,6 +577,7 @@
"grow": 1
},
"props": {
"currentTabIndex": 1,
"menuType": "modern",
"tabSize": {
"width": 1000

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-30T12:00:54Z"
},
"lastModificationSignature": "107b253caa99ddcabc077ff704f93fd1b8fb7cf8c47437c9472200a13b6bf1a8"
}
}

View File

@ -1,13 +1,21 @@
{
"custom": {
"PLC_list": null,
"PLC_list": [
"MCM01",
"MCM02",
"MCM03",
"MCM04",
"MCM05",
"MCM06",
"MCM07"
],
"running_state": -1,
"state": 0,
"views_data": []
},
"params": {
"tagProps": [
"/System/Station/Buttons/UL1_3_JR_PB2",
"System/MCM01/Station/JR/S011050_JR1",
"value",
"value",
"value",
@ -204,6 +212,11 @@
"basis": "30px",
"shrink": 0
},
"props": {
"style": {
"overflow": "hidden"
}
},
"type": "ia.container.flex"
},
{
@ -428,16 +441,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "ON",
"input": "UNKNOWN",
"output": "#FFFFFF"
},
{
"input": "OFF",
"output": "#D5D5D5"
}
],
"outputType": "color",
@ -460,20 +469,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "OFF",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": false,
"output": "OFF"
},
{
"input": true,
"output": "ON"
},
{
"input": false,
"output": "OFF"
}
],
"outputType": "scalar",
@ -495,11 +504,11 @@
"mappings": [
{
"input": "ON",
"output": "#FF0000"
"output": "#47FF47"
},
{
"input": "OFF",
"output": "#47FF47"
"output": "#FF0000"
}
],
"outputType": "color",
@ -571,7 +580,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/JR_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
@ -593,6 +602,46 @@
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#B17B50\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET PRESSED\",\r\n \"#FE9240\",\r\n if(\r\n {this.props.text} \u003d \"JAM RESET\",\r\n \"#EB6700\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Start_PB"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "JAM RESET",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "JAM RESET PRESSED"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
@ -602,10 +651,8 @@
}
},
"style": {
"backgroundColor": "#FE9240",
"classes": "Background-Styles/Controller"
},
"text": "RESET JAM"
}
},
"type": "ia.input.button"
}

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": true,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-25T11:32:50Z"
},
"lastModificationSignature": "49f161154a423c5b8ad60a6a57375d0b949b32a8891a9c076f1808395d1ac4d8"
}
}

View File

@ -1,16 +1,9 @@
{
"custom": {
"PLC_list": [
"MCM01",
"MCM02",
"MCM03",
"MCM04",
"MCM05",
"MCM06",
"MCM07"
],
"PLC_list": null,
"running_state": -1,
"state": 0,
"type": 0,
"views_data": []
},
"params": {
@ -112,6 +105,27 @@
},
"persistent": true
},
"custom.type": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Chute_Type"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.views_data": {
"binding": {
"config": {
@ -440,12 +454,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#FFFFFF"
"output": "#D5D5D5"
},
{
"input": "NOT FULL",
@ -472,16 +486,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "NOT FULL",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "FULL"
},
{
"input": 0,
"output": "NOT FULL"
}
],
"outputType": "scalar",
@ -589,15 +607,15 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "DISABLED",
"output": "#FFFFFF"
"input": "TRUE",
"output": "#D5D5D5"
},
{
"input": "ENABLED",
"input": "FALSE",
"output": "#D5D5D5"
}
],
@ -621,16 +639,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus}, \"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "ENABLED",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "DISABLED"
"output": "TRUE"
},
{
"input": 0,
"output": "FALSE"
}
],
"outputType": "scalar",
@ -651,12 +673,12 @@
"inputType": "scalar",
"mappings": [
{
"input": "ENABLED",
"output": "#47FF47"
"input": "TRUE",
"output": "#FF0000"
},
{
"input": "DISABLED",
"output": "#FF0000"
"input": "FALSE",
"output": "#47FF47"
}
],
"outputType": "color",
@ -776,12 +798,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "HALF FULL",
"output": "#FFFFFF"
"output": "#D5D5D5"
},
{
"input": "NOT HALF FULL",
@ -808,16 +830,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "NOT HALF FULL",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "HALF FULL"
},
{
"input": 0,
"output": "NOT HALF FULL"
}
],
"outputType": "scalar",
@ -839,7 +865,7 @@
"mappings": [
{
"input": "HALF FULL",
"output": "#7F83FF"
"output": "#FFF000"
},
{
"input": "NOT HALF FULL",
@ -963,12 +989,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "JAMMED",
"output": "#FFFFFF"
"output": "#D5D5D5"
},
{
"input": "NOT JAMMED",
@ -995,16 +1021,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "NOT JAMMED",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "JAMMED"
},
{
"input": 0,
"output": "NOT JAMMED"
}
],
"outputType": "scalar",
@ -1150,12 +1180,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "NO CONTAINER",
"output": "#FFFFFF"
"output": "#D5D5D5"
},
{
"input": "CONTAINER PRESENT",
@ -1178,20 +1208,24 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/No Container"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/No_Container"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
"fallback": "CONTAINER PRESENT",
"fallback": "UNKNOWN",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "NO CONTAINER"
},
{
"input": 0,
"output": "CONTAINER PRESENT"
}
],
"outputType": "scalar",
@ -1333,12 +1367,12 @@
},
"transforms": [
{
"fallback": "#000000",
"fallback": "#FFFFFF",
"inputType": "scalar",
"mappings": [
{
"input": "READY",
"output": "#FFFFFF"
"output": "#D5D5D5"
},
{
"input": "ENABLED",
@ -1506,7 +1540,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\t"
"script": "\ttag_name \u003d self.view.params.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Enable_Chute_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\ttag_path2 \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/GS_PB\"\n\tsystem.tag.writeBlocking([tag_path2],[True])\t"
},
"scope": "G",
"type": "script"
@ -1532,33 +1566,9 @@
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
"expression": "if(\r\n {this.props.enabled} \u003d False,\r\n \"#BB5050\",\r\n if(\r\n {this.props.text} \u003d \"DISABLE\",\r\n \"#FF0000\",\r\n if(\r\n {this.props.text} \u003d \"ENABLE\",\r\n \"#C9FCC0\",\r\n \"#FFFFFF\"\r\n )\r\n )\r\n)\r\n"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Disabled"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#FF0000",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#C9FCC0"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
"type": "expr"
}
},
"props.style.color": {
@ -1606,7 +1616,7 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\"UNKNOWN\")",
"type": "expression"
},
{
@ -1616,6 +1626,10 @@
{
"input": 1,
"output": "ENABLE"
},
{
"input": 0,
"output": "DISABLE"
}
],
"outputType": "scalar",
@ -1733,6 +1747,22 @@
"position": {
"grow": 1
},
"propConfig": {
"props.tabs": {
"binding": {
"config": {
"path": "view.custom.type"
},
"transforms": [
{
"code": "\t# This script runs whenever view.custom.type changes\n\tif value \u003d\u003d 0:\n\t\treturn [\"Alarms\", \"Info\"]\n\telse:\n\t\treturn [\"Alarms\", \"Info\", \"Commands\"]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"menuType": "modern",
"tabSize": {
@ -1755,12 +1785,7 @@
"fontWeight": "bold",
"paddingLeft": 10
}
},
"tabs": [
"Alarms",
"Info",
"Commands"
]
}
},
"type": "ia.container.tab"
}

View File

@ -7,7 +7,7 @@
},
"params": {
"tagProps": [
"System/MCM01/Conveyor/UL1_3_VFD1",
"System/Conveyor/APF/FL1038_2_VFD1",
"value",
"value",
"value",
@ -378,9 +378,9 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
},
"text": "Name"
"text": "NAME"
},
"type": "ia.display.label"
},
@ -458,9 +458,9 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
},
"text": "State"
"text": "STATE"
},
"type": "ia.display.label"
},
@ -473,10 +473,32 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "FULL",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"expression": "case({..../State.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"Communication Fault\",\r\n8, \"VFD Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running in Maintenance Mode\",\r\n\"Unknown\")"
"expression": "case({..../State.custom.state},\r\n0, \"Off(Inactive)\",\r\n1, \"Enabled, Not Running\",\r\n2, \"Running\",\r\n3, \"Energy Management\",\r\n4, \"Jammed\",\r\n5, \"Full\",\r\n6, \"Maintenance Mode / Conveyor Stopped In Maintenance Mode\",\r\n7, \"Communication Fault\",\r\n8, \"VFD Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running in Maintenance Mode\",\r\n\"UNKNOWN\")"
},
"type": "expr"
}
@ -492,7 +514,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -562,7 +583,7 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
},
"text": "FPM"
},
@ -577,6 +598,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -590,7 +633,7 @@
},
"transforms": [
{
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" FPM\")",
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" FPM\")",
"type": "expression"
}
],
@ -600,7 +643,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -660,20 +702,20 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown (Freq/Velocity\u0027)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN (FREQ/VELOCITY)\u0027)",
"type": "expression"
},
{
"fallback": "Unknown (Freq/Velocity",
"fallback": "UNKNOWN (FREQ/VELOCITY)",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Velocity"
"output": "VELOCITY"
},
{
"input": 0,
"output": "Frequency"
"output": "FREQUENCY"
}
],
"outputType": "scalar",
@ -686,7 +728,7 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
}
},
"type": "ia.display.label"
@ -700,6 +742,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -713,7 +777,7 @@
},
"transforms": [
{
"code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n unit \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Velocity\"\n unit \u003d \" Rev/s\"\n else:\n child \u003d \"Frequency\"\n unit \u003d \" Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n if result is None or str(result) \u003d\u003d \"None\":\n return \"Unknown\"\n else:\n return str(result) + unit",
"code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n unit \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Velocity\"\n unit \u003d \" Rev/s\"\n else:\n child \u003d \"Frequency\"\n unit \u003d \" Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n if result is None or str(result) \u003d\u003d \"None\":\n return \"UNKNOWN\"\n else:\n return str(result) + unit",
"type": "script"
}
],
@ -723,7 +787,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -771,9 +834,9 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
},
"text": "Amperage"
"text": "AMPERAGE"
},
"type": "ia.display.label"
},
@ -786,6 +849,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -799,7 +884,7 @@
},
"transforms": [
{
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" A\")",
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" A\")",
"type": "expression"
}
],
@ -809,7 +894,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -857,9 +941,9 @@
},
"props": {
"style": {
"paddingLeft": 100
"paddingLeft": 20
},
"text": "Voltage"
"text": "VOLTAGE"
},
"type": "ia.display.label"
},
@ -872,6 +956,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -885,7 +991,7 @@
},
"transforms": [
{
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" V\")",
"expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027) \u003d \u0027UNKNOWN\u0027, \u0027UNKNOWN\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" V\")",
"type": "expression"
}
],
@ -895,7 +1001,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -943,9 +1048,9 @@
},
"props": {
"style": {
"paddingLeft": 35
"paddingLeft": 20
},
"text": "Communication Fault Code"
"text": "COMMUNICATION FAULT CODE"
},
"type": "ia.display.label"
},
@ -958,6 +1063,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -971,7 +1098,7 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)",
"type": "expression"
}
],
@ -981,7 +1108,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -1029,9 +1155,9 @@
},
"props": {
"style": {
"paddingLeft": 80
"paddingLeft": 20
},
"text": "VFD Fault Code"
"text": "VFD FAULT CODE"
},
"type": "ia.display.label"
},
@ -1044,6 +1170,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -1057,7 +1205,7 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)",
"type": "expression"
}
],
@ -1067,7 +1215,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -1115,9 +1262,9 @@
},
"props": {
"style": {
"paddingLeft": 70
"paddingLeft": 20
},
"text": "Last VFD Fault Code"
"text": "LAST VFD FAULT CODE"
},
"type": "ia.display.label"
},
@ -1130,6 +1277,28 @@
"grow": 1
},
"propConfig": {
"props.style.backgroundColor": {
"binding": {
"config": {
"path": "this.props.text"
},
"transforms": [
{
"fallback": "#D5D5D5",
"inputType": "scalar",
"mappings": [
{
"input": "UNKNOWN",
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -1143,7 +1312,7 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN\u0027)",
"type": "expression"
}
],
@ -1153,7 +1322,6 @@
},
"props": {
"style": {
"backgroundColor": "#FFFFFF",
"classes": "Text-Styles/Ariel-Bold-12pt",
"paddingLeft": 10
}
@ -1247,11 +1415,11 @@
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown (60hz/30rev\u0027)",
"expression": "coalesce({value},{view.params.forceFaultStatus},\u0027UNKNOWN (60hz/30rev)\u0027)",
"type": "expression"
},
{
"fallback": "Unknown (60hz/30rev",
"fallback": "Unknown (60hz/30rev)",
"inputType": "scalar",
"mappings": [
{
@ -1323,6 +1491,10 @@
{
"code": "\n provider \u003d self.session.custom.fc + \"_SCADA_TAG_PROVIDER\"\n baseTag \u003d self.view.params.tagProps[0]\n basePath \u003d \"[\"+ provider + \"]\" + baseTag\n child \u003d \"\"\n \n\n if value \u003d\u003d 1:\n child \u003d \"Speed_At_30rev\"\n else:\n child \u003d \"Speed_At_60Hz\"\n\n fullPath \u003d basePath + \"/\" + child\n tagValue \u003d system.tag.readBlocking([fullPath])[0]\n result \u003d tagValue.value\n\t\n \n return result",
"type": "script"
},
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
@ -1419,6 +1591,12 @@
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Cycle_Time_Factor"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
}
}
@ -1552,7 +1730,7 @@
"mappings": [
{
"input": false,
"output": "Active Maintenance Mode"
"output": "Activate Maintenance Mode"
},
{
"input": true,
@ -1598,7 +1776,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": " \tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Speed_FPM\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])"
"script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+ self.view.params.tagProps[0] + \"/Maintenance/Speed_FPM\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])"
},
"scope": "G",
"type": "script"
@ -1615,15 +1793,30 @@
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"type": "expr"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode"
},
"transforms": [
{
"expression": "if(\r\n indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || \r\n indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0,\r\n {value},\r\n false\r\n)\r\n",
"type": "expression"
},
{
"expression": "if(isNull({value}), false, {value})",
"type": "expression"
}
],
"type": "tag"
}
},
"props.value": {
"binding": {
"config": {
"bidirectional": true,
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
@ -1632,6 +1825,12 @@
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Speed_FPM"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
}
}
@ -1699,14 +1898,80 @@
],
"type": "tag"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#00D900",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#00D900"
},
{
"input": 1,
"output": "#00FF00"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "START",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "STARTED"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"backgroundColor": "#2EDF43",
"marginBottom": 10
},
"text": "Start"
}
},
"type": "ia.input.button"
},
@ -1749,14 +2014,80 @@
],
"type": "tag"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#D90000",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#D90000"
},
{
"input": 2,
"output": "#FF0000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Buttons_State"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "STOP",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "STOPPED"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"backgroundColor": "#E51A1A",
"marginBottom": 10
},
"text": "Stop"
}
},
"type": "ia.input.button"
},
@ -1806,14 +2137,76 @@
],
"type": "tag"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Jog_PB_Pressed"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#00ACAC",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "#47FFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.text": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Jog_PB_Pressed"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "JOG",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "JOG PRESSED"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
}
},
"props": {
"style": {
"backgroundColor": "#2ACCBA",
"marginBottom": 10
},
"text": "Jog"
}
},
"type": "ia.input.button"
},
@ -1874,13 +2267,9 @@
"type": "expression"
},
{
"fallback": "Direction",
"fallback": "Direction Backward",
"inputType": "scalar",
"mappings": [
{
"input": false,
"output": "Direction Backward"
},
{
"input": true,
"output": "Direction Forward"
@ -1896,7 +2285,7 @@
},
"props": {
"style": {
"backgroundColor": "#0068F7",
"backgroundColor": "#095ECD",
"marginBottom": 10
}
},
@ -1910,7 +2299,7 @@
"name": "FlexContainer"
},
"position": {
"basis": "200px",
"basis": "500px",
"grow": 1
},
"props": {
@ -1923,7 +2312,7 @@
"name": "Maintenance"
},
"position": {
"basis": "200px",
"basis": "400px",
"grow": 1
},
"props": {
@ -1960,6 +2349,7 @@
"grow": 1
},
"props": {
"currentTabIndex": 2,
"menuType": "modern",
"tabSize": {
"width": 1000

View File

@ -3,7 +3,7 @@
"params": {
"value": {
"tagProps": [
"",
"MCM01",
"value",
"value",
"value",
@ -25,7 +25,7 @@
"props": {
"defaultSize": {
"height": 50,
"width": 300
"width": 396
}
},
"root": {
@ -35,7 +35,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 1\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":1,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)"
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\t"
},
"scope": "G",
"type": "script"
@ -56,7 +56,7 @@
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Start \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\")"
"expression": "if({this.props.enabled},\u0027Start \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
@ -64,7 +64,7 @@
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
@ -72,11 +72,47 @@
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
"expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Start_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#00A700",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#41E841"
},
{
"input": 4,
"output": "#41E841"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
@ -96,7 +132,6 @@
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
@ -107,6 +142,7 @@
},
"text": "",
"textStyle": {
"color": "#000000",
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
@ -119,164 +155,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 3\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":3,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Reset \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\") "
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/refresh"
},
"position": "top",
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"meta": {
"name": "JAM_Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Jam Reset \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/sync_problem"
},
"position": "top",
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttags_to_read \u003d system.tag.readBlocking([\"Configuration/FC\"])\n\twhid \u003d tags_to_read[0].value\n\tid \u003d self.view.params.value.tagProps[0]\n\tcommandTarget\u003dstr(id)+\"/0\"#PLC01/0 --\u003etarget is the plc\n\tcommandParams\u003d\"\"\n\tif whid\u003d\u003d\"MAN2\" or whid\u003d\u003d\"BRS1\" or whid\u003d\u003d\"MAD6\":\n\t\tcommandTarget\u003d\"databridge/0\"\n\t\tcommandParams\u003d\"PLC\u003d\"+str(id)#this tells the target to data bridge\n\taction \u003d 2\n\tparameters\u003d{\"commandTarget\":commandTarget,\n\t\t\t\t\"commandCode\":2,\n\t\t\t\t\"commandTimestamp\":system.date.toMillis(system.date.now()),\n\t\t\t\t\"commandParams\":commandParams}\n\tCommands.button_commands.send_request(whid, action, parameters)"
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
@ -297,7 +176,7 @@
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Stop \u0027 + {view.params.value.tagProps[0]},\"Re-Authentication Required - Press \u0027Enable Controls\u0027 button and re-enter password\") "
"expression": "if({this.props.enabled},\u0027Stop \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
@ -305,7 +184,7 @@
"props.enabled": {
"binding": {
"config": {
"expression": "{session.custom.command_auth.enabled} \u0026\u0026 {parent.custom.has_role}"
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
@ -313,11 +192,43 @@
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#4A4A4A\u0027,\u0027#979797\u0027)"
"expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Stop_PB"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#CA0D0D",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FF0000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
@ -337,7 +248,597 @@
"width": 32
},
"style": {
"backgroundColor": "#D4D4D4",
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "MotorFaultReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Motor Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Motor_Fault_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#DCDC03",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#FCFF86"
},
{
"input": 4,
"output": "#FCFF86"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/refresh"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "PowerBranchFaultReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Power Branch Fault Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Power_Branch_Fault_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#DCDC03",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#FCFF86"
},
{
"input": 4,
"output": "#FCFF86"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/power"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "LowAirPressureReset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Low Air Pressure Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#FFFFFF\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Low_Air_Pressure_Reset_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#0A0AA4",
"inputType": "scalar",
"mappings": [
{
"input": 2,
"output": "#5D5DFF"
},
{
"input": 4,
"output": "#5D5DFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/waves"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "JAM_Reset",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Jam Reset \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Jam_Restart_PB_STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#D4D4D4",
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": "#FFFFFF"
},
{
"input": 2,
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/sync_problem"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5
},
"text": "",
"textStyle": {
"fontSize": 12,
"fontWeight": "bold",
"textAlign": "center"
}
},
"type": "ia.input.button"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+\"System/\"+tag_name +\"/\" + tag_name+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "SetupMotorSpeeds",
"tooltip": {
"enabled": true,
"location": "top-left"
}
},
"position": {
"basis": "80px"
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027Setup Motor Speeds \u0027 + {view.params.value.tagProps[0]},\"You do not have Maintenance or Administrator role!\")"
},
"type": "expr"
}
},
"props.enabled": {
"binding": {
"config": {
"expression": "indexOf({session.props.auth.user.roles}, \"Administrator\") \u003e\u003d 0 || indexOf({session.props.auth.user.roles}, \"Maintenance\") \u003e\u003d 0"
},
"type": "expr"
}
},
"props.image.icon.color": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027#000000\u0027,\u0027#979797\u0027)"
},
"type": "expr"
}
},
"props.style.backgroundColor": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]System/{0}/{0}/Setup_Motor_Speeds"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "#D4D4D4",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "tag"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"expression": "if({this.props.enabled},\u0027solid\u0027,\u0027none\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"height": 32,
"icon": {
"path": "material/speed"
},
"position": "top",
"width": 32
},
"style": {
"borderColor": "#4A4A4A",
"borderWidth": 2,
"classes": "\n",

View File

@ -3,34 +3,32 @@
"counts": {
"Critical": 0,
"Diagnostic": 0,
"High": 0,
"Low": 0,
"High": 1,
"Low": 1,
"Medium": 0,
"Total": 0
"Total": 2
},
"totalAlarms": {
"$": [
"ds",
192,
1751448128142
1752066852881
],
"$columns": [
{
"data": [
null,
"MCM01",
"MCM01",
"MCM01",
"MCM02"
"MCM01"
],
"name": "Location",
"type": "String"
},
{
"data": [
"Diagnostic",
"Low",
"High",
"Medium",
"Diagnostic"
"Low"
],
"name": "Priority",
"type": "String"
@ -38,7 +36,6 @@
{
"data": [
1,
2,
1,
1
],
@ -51,7 +48,7 @@
"params": {
"value": {
"tagProps": [
"",
"MCM01",
"value",
"value",
"value",
@ -66,35 +63,34 @@
},
"propConfig": {
"custom.counts": {
"binding": {
"config": {
"struct": {
"PLC": "{view.params.value.tagProps[0]}"
},
"waitOnAll": true
},
"transforms": [
{
"code": " MCM \u003d value.PLC\n queryData \u003d self.custom.totalAlarms\n\n # Initialize counts\n counts \u003d {\n \"Critical\": 0,\n \"High\": 0,\n \"Medium\": 0,\n \"Low\": 0,\n \"Diagnostic\": 0,\n \"Total\": 0\n }\n\n # Loop through dataset and aggregate\n for row in range(queryData.rowCount):\n mcm_val \u003d queryData.getValueAt(row, 0)\n severity \u003d queryData.getValueAt(row, 1)\n count \u003d queryData.getValueAt(row, 2)\n\n if mcm_val \u003d\u003d MCM:\n \n key \u003d severity.capitalize()\n if key in counts:\n counts[key] +\u003d count\n counts[\"Total\"] +\u003d count\n\n return counts",
"type": "script"
}
],
"type": "expr-struct"
},
"persistent": true
},
"custom.totalAlarms": {
"binding": {
"config": {
"polling": {
"enabled": true,
"rate": "3"
},
"queryPath": "GetActiveAlarmsByLocationAndPriority"
},
"type": "query"
},
"onChange": {
"enabled": null,
"script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\t# Initialize counts\n\tcounts \u003d {\n\t \"Critical\": 0,\n\t \"High\": 0,\n\t \"Medium\": 0,\n\t \"Low\": 0,\n\t \"Diagnostic\": 0,\n\t \"Total\": 0\n\t}\n\t\n\t# Loop through dataset and aggregate\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1)\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM:\n\t key \u003d severity.capitalize()\n\t if key in counts:\n\t counts[key] +\u003d count\n\t counts[\"Total\"] +\u003d count\n\t \n\tself.custom.counts \u003d counts"
},
"persistent": true
},
"params.value": {
"paramDirection": "input",
"persistent": true
},
"params.value.tagProps": {
"onChange": {
"enabled": null,
"script": "\tsystem.perspective.print(currentValue.value[0])"
}
}
},
"props": {

View File

@ -1,9 +1,41 @@
{
"custom": {},
"custom": {
"state": {
"$": [
"ds",
192,
1751989861336
],
"$columns": [
{
"data": [
null
],
"name": "Location",
"type": "String"
},
{
"data": [
"Low"
],
"name": "Priority",
"type": "String"
},
{
"data": [
1
],
"name": "Count",
"type": "Long"
}
]
},
"status": ""
},
"params": {
"value": {
"tagProps": [
"",
"value",
"value",
"value",
"value",
@ -17,6 +49,26 @@
}
},
"propConfig": {
"custom.state": {
"binding": {
"config": {
"polling": {
"enabled": true,
"rate": "1"
},
"queryPath": "GetActiveAlarmsByLocationAndPriority"
},
"type": "query"
},
"onChange": {
"enabled": null,
"script": "\tMCM \u003d self.params.value.tagProps[0]\n\tqueryData \u003d currentValue.value\n\t\n\tif not queryData:\n\t self.custom.status \u003d \"\"\n\t\n\t# Define priority order from highest to lowest\n\tpriority_order \u003d [\"Critical\", \"High\", \"Medium\", \"Low\", \"Diagnostic\"]\n\texisting_priorities \u003d set()\n\tmyPriority \u003d \"\"\n\t\n\t# Populate the set\n\tfor row in range(queryData.rowCount):\n\t mcm_val \u003d queryData.getValueAt(row, 0)\n\t severity \u003d queryData.getValueAt(row, 1).capitalize()\n\t count \u003d queryData.getValueAt(row, 2)\n\t\n\t if mcm_val \u003d\u003d MCM and count \u003e 0:\n\t existing_priorities.add(severity)\n\t\n\t# Find the highest one that exists\n\tfor priority in priority_order:\n\t if priority in existing_priorities:\n\t myPriority \u003d priority\n\t break\n\t\n\tself.custom.status \u003d myPriority"
},
"persistent": true
},
"custom.status": {
"persistent": true
},
"params.value": {
"paramDirection": "input",
"persistent": true
@ -49,59 +101,35 @@
"grow": 1
},
"propConfig": {
"custom.status": {
"binding": {
"config": {
"path": "/root.custom.status"
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "this.custom.status"
"path": "view.custom.status"
},
"transforms": [
{
"fallback": "State-Styles/State0",
"fallback": "State-Styles/Background-Fill/State5",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"input": "High",
"output": "State-Styles/Background-Fill/State1"
},
{
"input": 2,
"input": "Medium",
"output": "State-Styles/Background-Fill/State2"
},
{
"input": 3,
"input": "Low",
"output": "State-Styles/Background-Fill/State3"
},
{
"input": 4,
"input": "Diagnostic",
"output": "State-Styles/Background-Fill/State4"
},
{
"input": 5,
"output": "State-Styles/Background-Fill/State5"
},
{
"input": 6,
"output": "State-Styles/Background-Fill/State6"
},
{
"input": 0,
"output": "State-Styles/State0"
}
],
"outputType": "style-list",
"type": "map"
},
{
"expression": "if({session.custom.colours.colour_impaired},{value}+\u0027_Alt\u0027,{value})",
"type": "expression"
}
],
"type": "property"
@ -110,36 +138,28 @@
"props.text": {
"binding": {
"config": {
"path": "this.custom.status"
"path": "view.custom.status"
},
"transforms": [
{
"fallback": null,
"fallback": "HEALTHY",
"inputType": "scalar",
"mappings": [
{
"input": 5,
"output": "HEALTHY"
},
{
"input": 4,
"input": "Diagnostic",
"output": "DIAGNOSTIC"
},
{
"input": 3,
"output": "PROCESS DEGRADED"
"input": "Low",
"output": "HALF WORKFLOW"
},
{
"input": 2,
"output": "STOPPED"
"input": "Medium",
"output": "CONTROLLED STOP"
},
{
"input": 1,
"output": "FAULTED"
},
{
"input": 6,
"output": null
"input": "High",
"output": "UNCONTROLLED STOP"
}
],
"outputType": "scalar",
@ -169,78 +189,6 @@
"meta": {
"name": "root"
},
"propConfig": {
"custom.has_role": {
"binding": {
"config": {
"expression": "{session.custom.fc}"
},
"transforms": [
{
"code": "\trme_role \u003d value +\"-rme-all\"\n\troles \u003d (self.session.props.auth.user.roles)\n\tif (rme_role.lower() in roles \n\tor rme_role.upper() in roles):\n\t\treturn True\n\telse:\n\t\treturn False",
"type": "script"
}
],
"type": "expr"
}
},
"custom.status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.value.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
},
"transforms": [
{
"expression": "if(isNull({value}), 0, {value})",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": 1
},
{
"input": 3,
"output": 2
},
{
"input": 2,
"output": 3
},
{
"input": 1,
"output": 4
},
{
"input": 0,
"output": 5
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
}
},
"custom.tag_path_to_lookup": {
"binding": {
"config": {
"expression": " \"[\\\"\" + {view.params.value.tagProps[0]} + \"\\\"]\""
},
"type": "expr"
}
}
},
"props": {
"direction": "column"
},

View File

@ -208,146 +208,43 @@
"type": "ia.display.label"
},
{
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tself.session.custom.covert\u003d False\n\tnavigation.navigate_to_page.detailed_view(self, self.view.params.tagProps[0],self.view.params.tagProps[0], self.view.params.tagProps[3])"
},
"enabled": false,
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Label"
"name": "EmbeddedView"
},
"position": {
"basis": "236px"
"basis": "200px"
},
"propConfig": {
"custom.status": {
"props.params.value.tagProps[0]": {
"binding": {
"config": {
"path": "/root.custom.status"
"expression": "{view.params.tagProps[0]}"
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "this.custom.status"
},
"transforms": [
{
"fallback": "State-Styles/State0",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "State-Styles/Background-Fill/State1"
},
{
"input": 2,
"output": "State-Styles/Background-Fill/State2"
},
{
"input": 3,
"output": "State-Styles/Background-Fill/State3"
},
{
"input": 4,
"output": "State-Styles/Background-Fill/State4"
},
{
"input": 5,
"output": "State-Styles/Background-Fill/State5"
},
{
"input": 6,
"output": "State-Styles/Background-Fill/State6"
},
{
"input": 0,
"output": "State-Styles/State0"
}
],
"outputType": "style-list",
"type": "map"
},
{
"expression": "if({session.custom.colours.colour_impaired},{value}+\u0027_Alt\u0027,{value})",
"type": "expression"
}
],
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"path": "this.custom.status"
},
"transforms": [
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 5,
"output": "HEALTHY"
},
{
"input": 4,
"output": "DIAGNOSTIC"
},
{
"input": 3,
"output": "PROCESS DEGRADED"
},
{
"input": 2,
"output": "STOPPED"
},
{
"input": 1,
"output": "FAULTED"
},
{
"input": 6,
"output": null
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
"type": "expr"
}
}
},
"props": {
"style": {
"borderBottomLeftRadius": 5,
"borderBottomRightRadius": 5,
"borderColor": "#555555",
"borderStyle": "solid",
"borderTopLeftRadius": 5,
"borderTopRightRadius": 5,
"borderWidth": 2,
"marginBottom": 10,
"marginLeft": 50,
"marginRight": 10,
"marginTop": 10
},
"textStyle": {
"fontSize": 12,
"textAlign": "center"
"params": {
"key": "value",
"value": {
"tagProps": [
null,
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
}
},
"type": "ia.display.label"
"path": "Symbol-Views/Controller-Views/CommandControlStatus"
},
"type": "ia.display.view"
}
],
"meta": {
@ -357,6 +254,7 @@
"basis": "80px"
},
"props": {
"justify": "space-around",
"style": {
"borderBottomColor": "#555555",
"borderBottomStyle": "solid",
@ -530,7 +428,7 @@
"basis": "32px"
},
"props": {
"text": 2,
"text": 0,
"textStyle": {
"fontSize": 10,
"textAlign": "center"
@ -588,7 +486,7 @@
"basis": "32px"
},
"props": {
"text": 3,
"text": 0,
"textStyle": {
"fontSize": 10,
"textAlign": "center"
@ -617,7 +515,7 @@
"basis": "32px"
},
"props": {
"text": 1,
"text": 0,
"textStyle": {
"fontSize": 10,
"textAlign": "center"
@ -646,7 +544,7 @@
"basis": "32px"
},
"props": {
"text": 6,
"text": 0,
"textStyle": {
"fontSize": 10,
"textAlign": "center"
@ -711,9 +609,9 @@
"custom": {
"counts": {
"Critical": 0,
"Diagnostic": 1,
"High": 2,
"Low": 3,
"Diagnostic": 0,
"High": 0,
"Low": 0,
"Medium": 0
}
},

View File

@ -30,14 +30,14 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -218,27 +218,9 @@
"props.color": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#D3D3D3\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n"
},
"transforms": [
{
"fallback": "#00CC00",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FF0000"
},
{
"input": 0,
"output": "#00CC00"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -273,6 +255,7 @@
"name": "root",
"text": "",
"tooltip": {
"enabled": true,
"style": {}
}
},
@ -290,6 +273,14 @@
{
"input": 1,
"output": "Alarms-Styles/High"
},
{
"input": 2,
"output": "Alarms-Styles/High"
},
{
"input": 3,
"output": "Alarms-Styles/High"
}
],
"outputType": "style-list",
@ -314,37 +305,10 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"direction": "column",
"style": {}
"direction": "column"
},
"type": "ia.container.flex"
}

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "external",
"timestamp": "2025-04-08T09:28:16Z"
"timestamp": "2025-07-01T15:29:04Z"
},
"lastModificationSignature": "d3b6122f7f2c1673b8a052ba4ea86c26a488ee6a79de1d9d9bc84f0f0dd5fb0b"
"lastModificationSignature": "d1bc5856a4586e4ea93fb7c434504e9f454336875db0b324db2ef789238f84b5"
}
}

View File

@ -47,6 +47,14 @@
"grow": 1
},
"propConfig": {
"props.tagProps[0]": {
"binding": {
"config": {
"path": "view.params.panel_id"
},
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
@ -63,39 +71,9 @@
"borderWidth": "0.5px",
"cursor": "pointer"
},
"textStyle": {
"color": "#000000",
"fontFamily": "inherit",
"fontSize": "1vmin",
"fontWeight": "bold"
}
},
"type": "ia.input.button"
},
{
"meta": {
"name": "Main_Panel"
},
"position": {
"basis": "20%",
"grow": 1
},
"propConfig": {
"props.params.tagProps[0]": {
"binding": {
"config": {
"path": "view.params.panel_id"
},
"type": "property"
}
}
},
"props": {
"params": {
"has_state": false,
"tagProps": [
null,
"",
"value",
"value",
"value",
"value",
@ -104,11 +82,15 @@
"value",
"value",
"value"
]
],
"textStyle": {
"color": "#000000",
"fontFamily": "inherit",
"fontSize": "1vmin",
"fontWeight": "bold"
}
},
"path": "Symbol-Views/Equipment-Views/Main_Panel"
},
"type": "ia.display.view"
"type": "ia.input.button"
}
],
"meta": {

View File

@ -1,24 +1,19 @@
{
"custom": {
"alarm_message": null,
"covert_mode": true,
"disconnected": false,
"display_icon": true,
"error": false,
"isMatch": 0,
"plc": "value",
"plc": "System",
"priority": 0,
"priority_string": "No active alarms",
"searchId": "PLC01",
"state": 5,
"status": 0,
"visible_status": false
"priority_string": "Unknown",
"searchId": "value",
"state": 0,
"state_string": "Normal"
},
"params": {
"color": 1,
"forceFaultStatus": null,
"tagProps": [
"value",
"System/MCM01/StationR/UL1_3_JR_PB1",
"value",
"value",
"value",
@ -34,35 +29,20 @@
"custom.alarm_message": {
"persistent": true
},
"custom.covert_mode": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Pressed"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -70,39 +50,6 @@
},
"persistent": true
},
"custom.display_icon": {
"binding": {
"config": {
"expression": "{this.custom.covert_mode}||{this.custom.isMatch}\u003e0"
},
"type": "expr"
},
"persistent": true
},
"custom.error": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.isMatch": {
"binding": {
"config": {
"expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))"
},
"type": "expr"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
@ -130,7 +77,7 @@
"mappings": [
{
"input": 1,
"output": 4
"output": 1
}
],
"outputType": "scalar",
@ -144,7 +91,7 @@
"custom.priority_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Low\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -168,44 +115,7 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 4
},
{
"input": 0,
"output": 5
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
},
"persistent": true
},
"custom.status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/PR_Pressed"
},
"transforms": [
{
@ -217,10 +127,10 @@
},
"persistent": true
},
"custom.visible_status": {
"custom.state_string": {
"binding": {
"config": {
"expression": "{view.custom.state} !\u003d 5"
"expression": "case({view.custom.state},\r\n1, \"Package Release Pressed\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -259,86 +169,18 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"expression": "\u0027#B2B2B2\u0027"
"expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#999999\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#D5D5D5\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#D5D5D5\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)",
"type": "expression"
}
],
"type": "expr"
}
},
"props.elements[1].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.params.color} \u003d 1,\r\n if({view.custom.status} \u003d 1, \"#FFFFFF\", \"#D5D5D5\"),\r\nif(\r\n {view.params.color} \u003d 2,\r\n if({view.custom.status} \u003d 1, \"#00FD47\", \"#00CC00\"),\r\n \"#150808\"\r\n))\r\n"
"expression": "if(\r\n {view.custom.disconnected} \u0026\u0026 {view.params.color} \u003d 1,\r\n \"#D5D5D5\",\r\n if(\r\n {view.custom.disconnected} \u0026\u0026 {view.params.color} \u003d 2,\r\n \"#00D900\",\r\n if(\r\n {view.params.color} \u003d 1,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \"#FF0000\",\r\n \"#D5D5D5\"\r\n ),\r\n if(\r\n {view.params.color} \u003d 2,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \"#FF0000\",\r\n \"#00D900\"\r\n ),\r\n \"#D5D5D5\"\r\n )\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
},
{
"input": 201,
"output": "State-Styles/State201"
},
{
"input": 202,
"output": "State-Styles/State202"
},
{
"input": 203,
"output": "State-Styles/State203"
},
{
"input": 204,
"output": "State-Styles/State204"
},
{
"input": 205,
"output": "State-Styles/State205"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
}
},
"props": {
@ -364,7 +206,6 @@
"type": "path"
}
],
"style": {},
"viewBox": "0 0 20 20"
},
"type": "ia.shapes.svg"
@ -374,7 +215,7 @@
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
"script": "\tsystem.perspective.openDock(\u0027Docked-East-BTN\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
@ -403,20 +244,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -451,24 +278,10 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
@ -480,32 +293,6 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {

View File

@ -719,7 +719,8 @@
"aspectRatio": "40:25",
"mode": "percent",
"style": {
"cursor": "pointer"
"cursor": "pointer",
"overflow": "hidden"
}
},
"type": "ia.container.coord"

View File

@ -1,18 +1,13 @@
{
"custom": {
"alarm_message": null,
"covert_mode": true,
"disconnected": false,
"display_icon": true,
"error": false,
"isMatch": 0,
"disconnected": true,
"plc": "value",
"priority": 0,
"priority_string": "No active alarms",
"running_status": 0,
"searchId": "value",
"state": 5,
"state_string": "Unknown"
"state": 0,
"state_string": "Normal"
},
"params": {
"forceFaultStatus": null,
@ -32,38 +27,20 @@
]
},
"propConfig": {
"custom.alarm_message": {
"persistent": true
},
"custom.covert_mode": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_gateways},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm}||{session.custom.alarm_filter.show_gateways},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic}||{session.custom.alarm_filter.show_gateways},\r\n\t\t5, {session.custom.alarm_filter.show_gateways},\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -71,39 +48,6 @@
},
"persistent": true
},
"custom.display_icon": {
"binding": {
"config": {
"expression": "{this.custom.covert_mode}//||{this.custom.isMatch}\u003e0"
},
"type": "expr"
},
"persistent": true
},
"custom.error": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.isMatch": {
"binding": {
"config": {
"expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))"
},
"type": "expr"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
@ -157,33 +101,12 @@
"custom.priority_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"High\",\r\n0, \"No active alarms\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.running_status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceRunningStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.searchId": {
"binding": {
"config": {
@ -202,40 +125,12 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": 1
},
{
"input": 3,
"output": 2
},
{
"input": 2,
"output": 3
},
{
"input": 1,
"output": 4
},
{
"input": 0,
"output": 5
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
@ -245,7 +140,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Communication Faulted\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -288,80 +183,8 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.disconnected},\r\n \u0027#808080\u0027,\r\n if(\r\n {view.custom.state} \u003d 1,\r\n \u0027#FF0000\u0027,\r\n if(\r\n {view.custom.state} \u003d 0,\r\n \u0027#00D900\u0027,\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
},
{
"expression": "if({view.custom.display_icon}\u0026\u0026 {view.custom.isMatch}\u003d0,{value},{value}+\u002700\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
},
{
"input": 201,
"output": "State-Styles/State201"
},
{
"input": 202,
"output": "State-Styles/State202"
},
{
"input": 203,
"output": "State-Styles/State203"
},
{
"input": 204,
"output": "State-Styles/State204"
},
{
"input": 205,
"output": "State-Styles/State205"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
}
@ -393,7 +216,6 @@
}
],
"preserveAspectRatio": "none",
"style": {},
"viewBox": "-0.5 -0.5 62 41"
},
"type": "ia.shapes.svg"
@ -403,7 +225,7 @@
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
"script": "\tsystem.perspective.openDock(\u0027Docked-East-DS\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
@ -434,20 +256,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -482,68 +290,22 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "view.custom.display_icon"
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"aspectRatio": "68:47",
"mode": "percent",
"style": {
"cursor": "pointer"
"classes": "Disconnects/Device-Connected",
"cursor": "pointer",
"overflow": "hidden"
}
},
"type": "ia.container.coord"

View File

@ -1,29 +1,20 @@
{
"custom": {
"alarm_message": null,
"covert_mode": true,
"disconnected": false,
"display_icon": true,
"error": false,
"isMatch": 0,
"plc": "value",
"openDiverter": false,
"plc": "System",
"priority": 0,
"priority_string": "No active alarms",
"running": false,
"searchId": "PLC01",
"show_error": false,
"show_running": true,
"state": 5,
"state_string": "Unknown",
"visible_status": false
"searchId": "value",
"state": 0,
"state_string": "Closed"
},
"params": {
"forceFaultStatus": null,
"forceRunningStatus": null,
"mirror": true,
"openDiverter": true,
"tagProps": [
"value",
"System/MCM01/Station/EPC/UL1_3_EPC1",
"value",
"value",
"value",
@ -36,38 +27,20 @@
]
},
"propConfig": {
"custom.alarm_message": {
"persistent": true
},
"custom.covert_mode": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t0, {session.custom.alarm_filter.show_running},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {session.custom.alarm_filter.show_running},\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t5, {session.custom.alarm_filter.show_running},\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -75,39 +48,33 @@
},
"persistent": true
},
"custom.display_icon": {
"binding": {
"config": {
"expression": "{this.custom.covert_mode}||{this.custom.isMatch}\u003e0"
},
"type": "expr"
},
"persistent": true
},
"custom.error": {
"custom.openDiverter": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "0 \u003c {value} \u0026\u0026 {value} \u003c 5",
"type": "expression"
"fallback": false,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": true
},
{
"input": 0,
"output": false
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.isMatch": {
"binding": {
"config": {
"expression": "if({view.params.tagProps[0]}\u003d\"value\",0,\nif({this.custom.searchId}\u003d{view.params.tagProps[0]},100,0))"
},
"type": "expr"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
@ -135,18 +102,6 @@
"mappings": [
{
"input": 1,
"output": 4
},
{
"input": 2,
"output": 3
},
{
"input": 3,
"output": 2
},
{
"input": 4,
"output": 1
}
],
@ -161,41 +116,12 @@
"custom.priority_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"High\",\r\n2, \"Medium\",\r\n3, \"Low\",\r\n4, \"Diagnostic\",\r\n5, \"No active alarms\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Low\",\r\n0, \"No active alarms\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.running": {
"binding": {
"config": {
"expression": "{view.custom.running_status} \u003d 3"
},
"type": "expr"
},
"persistent": true
},
"custom.running_status": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceRunningStatus},0)",
"type": "expression"
}
],
"type": "tag"
}
},
"custom.searchId": {
"binding": {
"config": {
@ -205,36 +131,6 @@
},
"persistent": true
},
"custom.show_error": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t1, True,\r\n\t\t2, True,\r\n\t\t3, {session.custom.alarm_filter.show_low_alarm} || {view.custom.isMatch}\u003e0,\r\n\t\t4, {session.custom.alarm_filter.show_diagnostic} || {view.custom.isMatch}\u003e0,\r\n\t\tFalse)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.show_running": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case(\t{value},\r\n\t\t1, False,\r\n\t\t2, False,\r\n\t\t{session.custom.alarm_filter.show_running}\r\n\t\t)",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
@ -244,40 +140,12 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": 1
},
{
"input": 3,
"output": 2
},
{
"input": 2,
"output": 3
},
{
"input": 1,
"output": 4
},
{
"input": 0,
"output": 5
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
@ -287,16 +155,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.running_status},\r\n1, \"Faulted\",\r\n2, \"Stopped\",\r\n3, \"Running\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.visible_status": {
"binding": {
"config": {
"expression": "{view.custom.state} !\u003d 5"
"expression": "case({view.custom.state},\r\n0, \"Closed\",\r\n1, \"Open\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -314,10 +173,6 @@
"paramDirection": "input",
"persistent": true
},
"params.openDiverter": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "input",
"persistent": true
@ -325,8 +180,8 @@
},
"props": {
"defaultSize": {
"height": 1045,
"width": 1130
"height": 16,
"width": 15
}
},
"root": {
@ -342,7 +197,7 @@
"position.display": {
"binding": {
"config": {
"expression": "{view.params.openDiverter} \u0026\u0026 {view.params.mirror}"
"expression": "{view.custom.openDiverter} \u0026\u0026 {view.params.mirror}"
},
"type": "expr"
}
@ -364,15 +219,9 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -408,7 +257,7 @@
"position.display": {
"binding": {
"config": {
"expression": "!{view.params.openDiverter} \u0026\u0026 {view.params.mirror}"
"expression": "!{view.custom.openDiverter} \u0026\u0026 {view.params.mirror}"
},
"type": "expr"
}
@ -430,15 +279,9 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -474,7 +317,7 @@
"position.display": {
"binding": {
"config": {
"expression": "{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}"
"expression": "{view.custom.openDiverter} \u0026\u0026 !{view.params.mirror}"
},
"type": "expr"
}
@ -496,15 +339,9 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -541,7 +378,7 @@
"position.display": {
"binding": {
"config": {
"expression": "!{view.params.openDiverter} \u0026\u0026 !{view.params.mirror}"
"expression": "!{view.custom.openDiverter} \u0026\u0026 !{view.params.mirror}"
},
"type": "expr"
}
@ -563,15 +400,9 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.running_status"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#808080\", \"#FF0000\", \"#FFF000\"\r\n )\r\n)\r\n"
},
"transforms": [
{
"expression": "case(\t{value}, \r\n\t\t1, {session.custom.colours.state0},\r\n\t\t2, {session.custom.colours.state0},\r\n\t\t3, {session.custom.colours.state5},\r\n\t\t\u0027#000000\u0027\r\n\t)\r\n\t\t\r\n",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -633,20 +464,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state0},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n4,{session.custom.colours.state4},\r\n5,{session.custom.colours.state5},\r\n6,{session.custom.colours.state6},\r\n{session.custom.colours.Fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -659,19 +476,7 @@
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/Diagnostic"
},
{
"input": 2,
"output": "Alarms-Styles/Low"
},
{
"input": 3,
"output": "Alarms-Styles/Medium"
},
{
"input": 4,
"output": "Alarms-Styles/High"
}
],
"outputType": "style-list",
@ -681,41 +486,20 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t4,\u0027#FFFFFF\u0027,\r\n\t\t\t5,\u0027#FFFFFF\u0027,\r\n\t\t\t\u0027#000000\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
},
"meta.visible": {
"binding": {
"config": {
"path": "view.custom.display_icon"
},
"type": "property"
}
},
"props.style.borderStyle": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"enabled": false,
"transforms": [
{
"fallback": "",
@ -736,68 +520,6 @@
],
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired} \u003d True \u0026\u0026 {view.custom.isMatch} \u003e 0,\r\n{view.custom.state} + 100 + {view.custom.isMatch},\r\n{view.custom.state} + {view.custom.isMatch})"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
},
{
"input": 201,
"output": "State-Styles/State201"
},
{
"input": 202,
"output": "State-Styles/State202"
},
{
"input": 203,
"output": "State-Styles/State203"
},
{
"input": 204,
"output": "State-Styles/State204"
},
{
"input": 205,
"output": "State-Styles/State205"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
}
},
"props": {
@ -805,6 +527,7 @@
"justify": "center",
"style": {
"borderColor": "#FF0000",
"borderStyle": "none",
"borderWidth": "2px",
"cursor": "pointer"
}

View File

@ -0,0 +1,16 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": false,
"files": [
"view.json"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-24T07:17:56Z"
},
"lastModificationSignature": "bdc03d73c8ef5beb8021bd3661948edd869df058d44e67f6e471b9d2e23c3753"
}
}

View File

@ -0,0 +1,390 @@
{
"custom": {
"disconnected": true,
"plc": "value",
"priority": 0,
"priority_string": "No Active Alarms",
"searchId": "PLC01",
"state": 0,
"state_string": "Loading Not Allowed"
},
"params": {
"directionLeft": false,
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "!isGood({value})",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"expression": "split({value}, \"/\")[0]",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": 0
},
{
"input": 1,
"output": 0
},
{
"input": 2,
"output": 0
},
{
"input": 3,
"output": 3
},
{
"input": 4,
"output": 1
},
{
"input": 5,
"output": 1
},
{
"input": 6,
"output": 1
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority_string": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "Unknown",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "No Active Alarms"
},
{
"input": 1,
"output": "No Active Alarms"
},
{
"input": 2,
"output": "No Active Alarms"
},
{
"input": 3,
"output": "Low"
},
{
"input": 4,
"output": "High"
},
{
"input": 5,
"output": "High"
},
{
"input": 6,
"output": "High"
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"onChange": {
"enabled": null,
"script": "\tif self.custom.priority not in [1, 2, 3, 4, 5, 6, 0]:\n\t self.custom.priority_string \u003d \"Unknown\""
},
"persistent": true
},
"custom.searchId": {
"binding": {
"config": {
"path": "session.custom.searchId"
},
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n0, \"Loading Not Allowed\",\r\n1, \"Loading Allowed\",\r\n2, \"Running\",\r\n3, \"Full\",\r\n4, \"Communication Faulted\",\r\n5, \"Extendo Faulted\",\r\n6, \"Estopped\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"params.directionLeft": {
"paramDirection": "input",
"persistent": true
},
"params.forceFaultStatus": {
"paramDirection": "input",
"persistent": true
},
"params.forceRunningStatus": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "inout",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 20,
"width": 29
}
},
"root": {
"children": [
{
"meta": {
"name": "RunningStatus"
},
"position": {
"grow": 1
},
"propConfig": {
"position.rotate.angle": {
"binding": {
"config": {
"path": "view.params.directionLeft"
},
"transforms": [
{
"expression": "if({value}, \u0027180deg\u0027, \u00270deg\u0027)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[0].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.elements[1].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.elements[2].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#0000FF\",\r\n \"#FF0000\", \"#FF0000\", \"#FF0000\",\r\n \"#fff700\"\r\n )\r\n)\r\n"
},
"type": "expr"
}
}
},
"props": {
"elements": [
{
"d": "M 50 0 L 65 0 L 80 30 L 65 60 L 50 60 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": "2"
},
"type": "path"
},
{
"d": "M 45 0 L 25 0 L 25 30 L 25 60 L 45 60 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": "2"
},
"type": "path"
},
{
"d": "M 0 0 L 20 0 L 20 30 L 20 60 L 0 60 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": "2"
},
"type": "path"
}
],
"style": {
"overflow": "hidden"
},
"viewBox": "-1.5 -1.5 73 63"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-Extendo\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
},
"onMouseEnter": {
"config": {
"script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root",
"tooltip": {
"enabled": true,
"location": "top-left",
"style": {}
}
},
"propConfig": {
"meta.tooltip.style.classes": {
"binding": {
"config": {
"expression": "{view.custom.priority}"
},
"transforms": [
{
"fallback": "Alarms-Styles/NoAlarm",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/High"
},
{
"input": 2,
"output": "Alarms-Styles/Medium"
},
{
"input": 3,
"output": "Alarms-Styles/Low"
},
{
"input": 4,
"output": "Alarms-Styles/Diagnostic"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
}
},
"props": {
"justify": "center"
},
"type": "ia.container.flex"
}
}

View File

@ -1,5 +1,6 @@
{
"custom": {
"alarm_message": null,
"disconnected": false,
"plc": "value",
"priority": 0,
@ -29,14 +30,14 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -69,6 +70,14 @@
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 3,
"output": 1
},
{
"input": 2,
"output": 1
},
{
"input": 1,
"output": 1
@ -92,13 +101,21 @@
"fallback": "Unknown",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "No active alarms"
},
{
"input": 1,
"output": "High"
},
{
"input": 0,
"output": "No active alarms"
"input": 2,
"output": "High"
},
{
"input": 3,
"output": "High"
}
],
"outputType": "scalar",
@ -189,6 +206,28 @@
"width": 1
},
"propConfig": {
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "#585858",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "#000000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.elements[1].fill.paint": {
"binding": {
"config": {
@ -290,9 +329,7 @@
"elements": [
{
"d": "M 0,0 H 20 V 20 H 0 Z",
"fill": {
"paint": "#585858"
},
"fill": {},
"name": "path",
"stroke": {
"paint": "#000000",
@ -343,20 +380,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state5},\r\n1,{session.custom.colours.state1},\r\n2,{session.custom.colours.state2},\r\n3,{session.custom.colours.state3},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -369,7 +392,7 @@
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/Diagnostic"
"output": "Alarms-Styles/High"
},
{
"input": 2,
@ -391,24 +414,10 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#FFFFFF\u0027,\r\n\t\t\t2,\u0027#000000\u0027,\r\n\t\t\t3,\u0027#000000\u0027,\r\n\t\t\t\u0027#FFFFFF\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
@ -420,32 +429,6 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {

View File

@ -0,0 +1,17 @@
{
"scope": "G",
"version": 1,
"restricted": false,
"overridable": false,
"files": [
"view.json",
"thumbnail.png"
],
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-06-25T11:49:44Z"
},
"lastModificationSignature": "045959a70ccb798b7c70e8adac199ac94f28b69fa2525ce4644ed2f6f7e06d08"
}
}

View File

@ -0,0 +1,334 @@
{
"custom": {
"disconnected": true,
"plc": "MCM",
"priority": 0,
"priority_string": "No Active Alarms",
"searchId": "PLC01",
"state": 0,
"state_string": "Normal"
},
"params": {
"forceFaultStatus": null,
"forceRunningStatus": null,
"has_state": false,
"tagProps": [
"MCM",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value",
"value"
]
},
"propConfig": {
"custom.disconnected": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "!isGood({value})",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.plc": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"expression": "split({value}, \"/\")[0]",
"type": "expression"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
},
{
"input": 2,
"output": 1
},
{
"input": 3,
"output": 1
},
{
"input": 4,
"output": 1
},
{
"input": 5,
"output": 1
},
{
"input": 6,
"output": 1
},
{
"input": 7,
"output": 1
},
{
"input": 8,
"output": 1
},
{
"input": 9,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "property"
},
"persistent": true
},
"custom.priority_string": {
"binding": {
"config": {
"expression": "case({view.custom.priority},\r\n1, \"High\",\r\n0, \"No Active Alarms\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"custom.searchId": {
"binding": {
"config": {
"path": "session.custom.searchId"
},
"type": "property"
},
"persistent": true
},
"custom.state": {
"binding": {
"config": {
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
}
],
"type": "tag"
},
"persistent": true
},
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"Motor Was Faulted\",\r\n2, \"Power Branch Was Faulted\",\r\n3, \"Low Air Pressure Fault Was Present\",\r\n4, \"Encoder Fault\",\r\n5, \"Jam Fault\",\r\n6, \"Communication Faulted\",\r\n7, \"Estop Was Actuated\",\r\n8, \"Estopped Locally\",\r\n9, \"System Started\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
"persistent": true
},
"params.forceFaultStatus": {
"paramDirection": "input",
"persistent": true
},
"params.forceRunningStatus": {
"paramDirection": "input",
"persistent": true
},
"params.has_state": {
"paramDirection": "input",
"persistent": true
},
"params.tagProps": {
"paramDirection": "inout",
"persistent": true
}
},
"props": {
"defaultSize": {
"height": 46,
"width": 68
}
},
"root": {
"children": [
{
"meta": {
"name": "MCM"
},
"position": {
"height": 1,
"width": 1
},
"propConfig": {
"props.elements[0].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \r\n \"#B3B3B3\", \"#FF0000\", \"#FF0000\", \"#FF0000\", \"#FF8C00\",\r\n \"#FF8C00\", \"#FF0000\", \"#FF0000\", \"#FF0000\", \"#00FF00\",\r\n \"#FFFF00\"\r\n )\r\n)\r\n"
},
"type": "expr"
},
"onChange": {
"enabled": false,
"script": ""
}
},
"props.elements[1].style.fill": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "#000000",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "#FFFFFF"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"elements": [
{
"d": "M 1 0 H 60 V 40 H 1 Z",
"fill": {},
"name": "path",
"stroke": {
"paint": "#4c4c4c",
"width": 4
},
"type": "path"
},
{
"style": {
"classes": "",
"fontWeight": "bold"
},
"text": "MCM",
"type": "text",
"x": 11,
"y": 26
}
],
"preserveAspectRatio": "none",
"viewBox": "-0.5 -0.5 62 41"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.openDock(\u0027Docked-East-MCM\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})"
},
"scope": "G",
"type": "script"
},
"onMouseEnter": {
"config": {
"script": "\tfrom time import sleep\n\t\n\talarm \u003d []\n\tmessage \u003d None\n\t\n\tsleep(0.5)\n\t\n\tif system.tag.exists(\"System/aws_data\"):\n\t\tif self.view.params.tagProps[0] !\u003d \"\":\n\t\t\ttags_to_read \u003d system.tag.readBlocking(\"System/aws_data\")\n\t\t\tdecode_alarm_data \u003d system.util.jsonDecode(tags_to_read[0].value)\n\t\t\talarm \u003d [decode_alarm_data[i] for i in decode_alarm_data\n\t\t\t\t\tif decode_alarm_data[i][\u0027sourceId\u0027].startswith(self.view.params.tagProps[0])]\n\t\tif alarm:\n\t\t\talarm \u003d sorted(alarm, key \u003d lambda t:t[\u0027timestamp\u0027], reverse\u003dTrue)\n\t\t\tmessage \u003d max(alarm, key \u003d lambda p:p[\u0027priority\u0027]).get(\u0027message\u0027)\n\t\t\tif len(alarm) \u003e 1:\n\t\t\t\tmessage +\u003d \" (+\" + str(len(alarm)-1) + \")\"\n\tself.view.custom.alarm_message \u003d message"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root",
"tooltip": {
"enabled": true,
"location": "top-left",
"style": {}
}
},
"propConfig": {
"meta.tooltip.style.classes": {
"binding": {
"config": {
"expression": "{view.custom.priority}"
},
"transforms": [
{
"fallback": "Alarms-Styles/NoAlarm",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "Alarms-Styles/High"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
}
},
"props": {
"aspectRatio": "68:47",
"mode": "percent",
"style": {
"cursor": "pointer",
"overflow": "hidden"
}
},
"type": "ia.container.coord"
}
}

View File

@ -1,11 +1,10 @@
{
"custom": {
"alarm_message": null,
"disconnected": false,
"plc": "value",
"plc": "System",
"priority": 0,
"priority_string": "No active alarms",
"searchId": "PLC01",
"searchId": "value",
"state": 0,
"state_string": "Normal"
},
@ -13,7 +12,7 @@
"forceFaultStatus": null,
"forceRunningStatus": null,
"tagProps": [
"value",
"System/Station/EPC/UL1_3_EPC1",
"value",
"value",
"value",
@ -32,14 +31,14 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -92,16 +91,12 @@
},
"transforms": [
{
"fallback": "Unknown",
"fallback": "No active alarms",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "High"
},
{
"input": 0,
"output": "No active alarms"
}
],
"outputType": "scalar",
@ -136,22 +131,6 @@
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
@ -161,7 +140,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"Active\",\r\n0, \"Normal\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Actuated\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -202,27 +181,9 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#AAAAAA\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#AAAAAA\", \"#AAAAAA\", \r\n \"#FFFF00\"\r\n )\r\n)"
},
"transforms": [
{
"fallback": "#AC0000",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#AAAAAA"
},
{
"input": 1,
"output": "#AAAAAA"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
"type": "expr"
}
},
"props.elements[1].fill.paint": {
@ -242,29 +203,17 @@
"props.elements[2].visibility": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.state} \u003d 0 \u0026\u0026 \r\n {parent.meta.visible}, \r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)"
},
"transforms": [
{
"expression": "if(\r\n !{value} \u0026\u0026 \r\n {view.custom.state} \u003d 0 \u0026\u0026 \r\n {parent.meta.visible}, \r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
},
"props.elements[3].visibility": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.state} \u003e\u003d 1 \u0026\u0026 \r\n {parent.meta.visible}, \r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)"
},
"transforms": [
{
"expression": "if(\r\n {value} \u0026\u0026 \r\n {view.custom.state} \u003e\u003d 1 \u0026\u0026 \r\n {parent.meta.visible}, \r\n \u0027visible\u0027, \r\n \u0027hidden\u0027\r\n)",
"type": "expression"
}
],
"type": "property"
"type": "expr"
}
}
},
@ -367,20 +316,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state5},\r\n1,{session.custom.colours.state1},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -403,24 +338,10 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#000000\u0027,\r\n\t\t\t\u0027#FFFFFF\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
@ -432,32 +353,6 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {

View File

@ -4,7 +4,7 @@
"plc": "value",
"priority": 0,
"priority_string": "No active alarms",
"searchId": "PLC01",
"searchId": "value",
"state": 0,
"state_string": "Normal"
},
@ -31,14 +31,14 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -68,12 +68,12 @@
},
"transforms": [
{
"fallback": 1,
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": 0
"input": 1,
"output": 1
}
],
"outputType": "scalar",
@ -91,16 +91,12 @@
},
"transforms": [
{
"fallback": "Unknown",
"fallback": "No active alarms",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "High"
},
{
"input": 0,
"output": "No active alarms"
}
],
"outputType": "scalar",
@ -135,22 +131,6 @@
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
@ -160,7 +140,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"Active\",\r\n0, \"Normal\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Actuated\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -199,88 +179,8 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"path": "view.custom.state"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#AAAAAA\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#AAAAAA\", \"#FF0000\", \r\n \"#FFFF00\"\r\n )\r\n)\r\n"
},
"transforms": [
{
"fallback": "#AC0000",
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": "#AAAAAA"
},
{
"input": 1,
"output": "#B79D9D"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"expression": "if({session.custom.colours.colour_impaired} \u003d True,\r\n{view.custom.state} + 100,\r\n{view.custom.state})"
},
"transforms": [
{
"fallback": "",
"inputType": "scalar",
"mappings": [
{
"input": 101,
"output": "State-Styles/State101"
},
{
"input": 102,
"output": "State-Styles/State102"
},
{
"input": 103,
"output": "State-Styles/State103"
},
{
"input": 104,
"output": "State-Styles/State104"
},
{
"input": 105,
"output": "State-Styles/State105"
},
{
"input": 106,
"output": "State-Styles/State106"
},
{
"input": 201,
"output": "State-Styles/State201"
},
{
"input": 202,
"output": "State-Styles/State202"
},
{
"input": 203,
"output": "State-Styles/State203"
},
{
"input": 204,
"output": "State-Styles/State204"
},
{
"input": 205,
"output": "State-Styles/State205"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "expr"
}
}
@ -299,7 +199,6 @@
}
],
"preserveAspectRatio": "none",
"style": {},
"viewBox": "-0.5 -0.5 27 42"
},
"type": "ia.shapes.svg"
@ -340,20 +239,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state5},\r\n1,{session.custom.colours.state1},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -376,24 +261,10 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#000000\u0027,\r\n\t\t\t\u0027#FFFFFF\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
@ -405,32 +276,6 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {

View File

@ -1,11 +1,10 @@
{
"custom": {
"alarm_message": null,
"disconnected": false,
"disconnected": true,
"plc": "value",
"priority": 0,
"priority_string": "No active alarms",
"searchId": "PLC01",
"searchId": "value",
"state": 0,
"state_string": "Normal"
},
@ -32,14 +31,14 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"fc": "{session.custom.fc}",
"plc": "{view.custom.plc}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
"expression": "if(isNull({value}), False, {value})",
"expression": "!isGood({value})",
"type": "expression"
}
],
@ -69,12 +68,12 @@
},
"transforms": [
{
"fallback": 1,
"fallback": 0,
"inputType": "scalar",
"mappings": [
{
"input": 0,
"output": 0
"input": 1,
"output": 1
}
],
"outputType": "scalar",
@ -92,16 +91,12 @@
},
"transforms": [
{
"fallback": "Unknown",
"fallback": "No active alarms",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "High"
},
{
"input": 0,
"output": "No active alarms"
}
],
"outputType": "scalar",
@ -136,22 +131,6 @@
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": 1
},
{
"input": 0,
"output": 0
}
],
"outputType": "scalar",
"type": "map"
}
],
"type": "tag"
@ -161,7 +140,7 @@
"custom.state_string": {
"binding": {
"config": {
"expression": "case({view.custom.state},\r\n1, \"Active\",\r\n0, \"Normal\",\r\n\"Unknown\")"
"expression": "case({view.custom.state},\r\n1, \"Actuated\",\r\n0, \"Normal\",\r\n\"Unknown\")"
},
"type": "expr"
},
@ -197,61 +176,15 @@
"width": 1
},
"propConfig": {
"props.elements[0].stroke.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#000000\",\r\n switch(\r\n toInt({view.custom.state}),\r\n 0, 1, \r\n \"#00D900\", \"#FF0000\", \r\n \"#FFFF00\"\r\n )\r\n)\r\n"
},
"type": "expr"
}
},
"props.elements[0].visibility": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if(\r\n ({value} \u003d 0 || {value} \u003d 1 || !{parent.meta.visible}),\r\n \u0027hidden\u0027,\r\n \u0027visible\u0027\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[1].visibility": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if(\r\n ({value} \u003d 0 || {value} \u003d 1 || !{parent.meta.visible}),\r\n \u0027hidden\u0027,\r\n \u0027visible\u0027\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"props.elements[2].stroke.paint": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"fallback": "#800000",
"inputType": "scalar",
"mappings": [
{
"input": 1,
"output": "#FF0000"
},
{
"input": 0,
"output": "#000000"
}
],
"outputType": "color",
"type": "map"
}
],
"type": "property"
}
},
"props.elements[2].visibility": {
"binding": {
"config": {
"expression": "if({parent.meta.visible}, \u0027visible\u0027, \u0027hidden\u0027)"
@ -262,30 +195,6 @@
},
"props": {
"elements": [
{
"d": "m -0.38931298,0.28431365 c 33.95623398,0 67.91246898,0 101.86870298,0",
"fill": {
"paint": "#FFFFFF"
},
"name": "path",
"stroke": {
"paint": "#000000",
"width": 1
},
"type": "path"
},
{
"d": "m -0.38931298,10.850587 c 33.95623398,0 67.91246898,0 101.86870298,0",
"fill": {
"paint": "#FFFFFF"
},
"name": "path",
"stroke": {
"paint": "#000000",
"width": 1
},
"type": "path"
},
{
"d": "m -0.38931298,5.5674501 c 33.95623398,0 67.91246898,0 101.86870298,0",
"fill": {
@ -344,20 +253,6 @@
}
},
"propConfig": {
"meta.tooltip.style.backgroundColor": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "case({value},\r\n0,{session.custom.colours.state5},\r\n1,{session.custom.colours.state1},\r\n{session.custom.colours.fallback}\r\n)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.style.classes": {
"binding": {
"config": {
@ -380,24 +275,10 @@
"type": "expr"
}
},
"meta.tooltip.style.color": {
"binding": {
"config": {
"path": "view.custom.state"
},
"transforms": [
{
"expression": "if({session.custom.colours.colour_impaired},\r\n\t\u0027#000000\u0027,\r\n\tcase(\t{value},\r\n\t\t\t1,\u0027#000000\u0027,\r\n\t\t\t\u0027#FFFFFF\u0027)\r\n\t)",
"type": "expression"
}
],
"type": "property"
}
},
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "if({view.custom.disconnected} \u003d False,\n\tif(isNull({view.custom.alarm_message}),\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string},\n\t\"Source Id: \" + {view.params.tagProps[0]} +\n\t\", Alarm: \" + {view.custom.alarm_message} +\n\t\", Priority: \" + {view.custom.priority_string} +\n\t\", State: \" + {view.custom.state_string}),\n\"Source Id: \" +{view.params.tagProps[0]} + \", Priority: Unknown, State: Unknown\")"
"expression": "if(\n {view.custom.disconnected} \u003d false,\n \"Source Id: \" + {view.params.tagProps[0]} + \", Priority: \" + {view.custom.priority_string} + \", State: \" + {view.custom.state_string},\n \"Device Disconnected\"\n)\n"
},
"type": "expr"
}
@ -409,32 +290,6 @@
},
"type": "property"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {

View File

@ -195,7 +195,7 @@
"props.elements[0].fill.paint": {
"binding": {
"config": {
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#FFFFFF\",\r\n if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#C9FCC0\u0027,\r\n 2, \u0027#7F83FF\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n 5, \u0027#FF4487\u0027,\r\n 6, \u0027#92FF00\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#C9FCC0\u0027,\r\n 2, \u0027#7F83FF\u0027,\r\n 3, \u0027#0008FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n \u0027#FFFFFF\u0027\r\n ),\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n )\r\n)\r\n"
"expression": "if(\r\n {view.custom.disconnected},\r\n \"#FFFFFF\",\r\n if(\r\n {view.custom.type} \u003d 0,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 3, \u0027#0000FF\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 1,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#CCFFCC\u0027,\r\n 2, \u0027#FFFF00\u0027,\r\n 3, \u0027#0000FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n 5, \u0027#FF4487\u0027,\r\n 6, \u0027#92FF00\u0027,\r\n \u0027#fff700\u0027\r\n ),\r\n if(\r\n {view.custom.type} \u003d 2,\r\n case(\r\n {view.custom.state},\r\n 0, \u0027#c2c2c2\u0027,\r\n 1, \u0027#CCFFCC\u0027,\r\n 2, \u0027#FFFF00\u0027,\r\n 3, \u0027#0000FF\u0027,\r\n 4, \u0027#FF8C00\u0027,\r\n \u0027#FFFFFF\u0027\r\n ),\r\n \u0027#fff700\u0027\r\n )\r\n )\r\n )\r\n)\r\n"
},
"type": "expr"
}
@ -290,40 +290,10 @@
},
"type": "expr"
}
},
"props.style.classes": {
"binding": {
"config": {
"path": "view.custom.disconnected"
},
"enabled": false,
"transforms": [
{
"fallback": "Disconnects/Device-Connected",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "Disconnects/Device-Disconnected"
},
{
"input": false,
"output": "Disconnects/Device-Connected"
}
],
"outputType": "style-list",
"type": "map"
}
],
"type": "property"
}
}
},
"props": {
"justify": "center",
"style": {
"classes": "Disconnects/Device-Connected"
}
"justify": "center"
},
"type": "ia.container.flex"
}

View File

@ -7,7 +7,7 @@
version="1.1"
id="svg118"
sodipodi:docname="MCM04_Bulk_Inbound_Problem_Solve.svg"
inkscape:version="1.4 (86a8ad7, 2024-10-11)"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -23,15 +23,15 @@
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="6.98078"
inkscape:cx="477.16731"
inkscape:cy="768.32388"
inkscape:zoom="39.489255"
inkscape:cx="926.55585"
inkscape:cy="416.65765"
inkscape:window-width="3840"
inkscape:window-height="2043"
inkscape:window-x="-11"
inkscape:window-height="2054"
inkscape:window-x="3829"
inkscape:window-y="-11"
inkscape:window-maximized="1"
inkscape:current-layer="g1"
inkscape:current-layer="svg118"
showgrid="true"
showguides="true"><inkscape:grid
id="grid2"
@ -135,19 +135,19 @@
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
d="m 59.008697,416.91576 c 0,0 2.3949,0.1384 4.8483,1.9519 2.4535,1.8135 2.6298,4.0417 2.6298,4.0417 l 19.1843,0.042 c 0,0 -1.2877,-10.5083 -9.0574,-17.6276 -7.7698,-7.1193 -17.605,-7.7898 -17.605,-7.7898 z"
d="m 59.008697,417.0232 c 0,0 2.215837,0.0668 4.669237,1.88027 2.4535,1.8135 2.737238,3.93426 2.737238,3.93426 l 19.578239,0.11363 c 0,0 1.774278,-11.77965 -5.995422,-18.89895 -7.7698,-7.1193 -20.989292,-6.51845 -20.989292,-6.51845 z"
id="path3-3-2"
sodipodi:nodetypes="czcczcc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
d="m 93.149893,639.21225 c 0,0 -2.3949,-0.13845 -4.8483,-1.95195 -2.4535,-1.8135 -2.6298,-4.04161 -2.6298,-4.04161 l -19.1843,-0.042 c 0,0 1.2877,10.50828 9.0574,17.62757 7.7698,7.11929 17.605,7.78977 17.605,7.78977 z"
d="m 93.078268,639.10841 c 0,0 -1.892778,-0.12579 -4.346178,-1.93929 -2.4535,-1.8135 -2.617138,-4.07705 -2.617138,-4.07705 l -19.627459,0.0846 c 0,0 -0.932682,10.93803 6.837018,18.05732 7.7698,7.11929 19.825382,7.36002 19.825382,7.36002 z"
id="path3-0-9"
sodipodi:nodetypes="czcczcc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
d="m 752.91823,492.16401 c 0,0 0.13845,-2.3949 1.95195,-4.8483 1.8135,-2.4535 4.04161,-2.6298 4.04161,-2.6298 l 0.042,-19.1843 c 0,0 -10.50828,1.2877 -17.62757,9.0574 -7.11929,7.7698 -7.78977,17.605 -7.78977,17.605 z"
d="m 753.06148,492.27145 c 0,0 -0.14805,-2.50234 1.66545,-4.95574 1.8135,-2.4535 4.18486,-2.6298 4.18486,-2.6298 l 0.11363,-19.43499 c 0,0 -13.23004,-0.75362 -20.34933,7.01608 -7.11929,7.7698 -5.13964,19.89701 -5.13964,19.89701 z"
id="path3-0"
sodipodi:nodetypes="czcczcc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
d="m 1772.5334,765.97207 c 0,0 -2.3949,-0.1384 -4.8483,-1.9519 -2.4535,-1.8135 -2.6298,-4.0417 -2.6298,-4.0417 l -19.1843,-0.042 c 0,0 1.2877,10.5083 9.0574,17.6276 7.7698,7.1193 17.605,7.7898 17.605,7.7898 z"
d="m 1772.6347,765.66819 c 0,0 -2.1417,0.14016 -4.5951,-1.67334 -2.4535,-1.8135 -2.7057,-4.01638 -2.7057,-4.01638 l -19.4629,-0.042 c 0,0 -1.903,11.87576 5.8667,18.99506 7.7698,7.1193 20.9223,6.14378 20.9223,6.14378 z"
id="path3-3"
sodipodi:nodetypes="czcczcc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
@ -867,11 +867,11 @@
id="path37"
sodipodi:nodetypes="ccccc" /></g><path
style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none;image-rendering:auto"
d="m 914.34742,432.43882 18.97498,0.0328 c -0.002,-11.31853 7.37708,-16.43786 12.16059,-16.65275 l 0.003,-19.30793 c -20.10517,-0.0865 -21.72008,18.58541 -21.72008,18.58541 0,0 -3.58485,-18.79666 -21.84108,-18.64348 l -2e-5,19.34248 c 4.67775,0.10544 12.39117,5.31276 12.4226,16.64347 z"
d="m 914.34742,432.43882 18.97498,0.0328 c -0.002,-11.31853 7.37708,-16.43786 12.16059,-16.65275 l 0.003,-19.30793 c -20.91584,0 -22.37849,12.81169 -22.37849,12.81169 0,0 -1.10124,-12.86976 -21.18267,-12.86976 l -2e-5,19.34248 c 4.67775,0.10544 12.39117,5.31276 12.4226,16.64347 z"
id="path2"
sodipodi:nodetypes="ccccccccc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none"
d="m 1738.0969,484.8898 c 0,0 2.3949,0.13845 4.8483,1.95195 2.4535,1.8135 2.6298,4.04161 2.6298,4.04161 l 19.1843,0.042 c 0,0 -1.2877,-10.50828 -9.0574,-17.62757 -7.7698,-7.11929 -17.605,-7.78977 -17.605,-7.78977 z"
d="m 1738.0969,484.8898 c 0,0 2.3949,0.13845 4.8483,1.95195 2.4535,1.8135 2.5582,4.0058 2.5582,4.0058 l 19.5424,0.0778 c 0,0 1.5057,-12.87191 -6.264,-19.9912 -7.7698,-7.11929 -20.7923,-5.6052 -20.7923,-5.6052 z"
id="path3"
sodipodi:nodetypes="czcczcc" /><path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-dashoffset:0"

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 412 KiB

View File

@ -8,7 +8,7 @@
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.4 (86a8ad7, 2024-10-11)"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
sodipodi:docname="MCM05_Bulk_Inbound_Problem_Solve_+_Fluid_Inbound.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -23,15 +23,15 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
inkscape:zoom="7.9999995"
inkscape:cx="367.50002"
inkscape:cy="108.43751"
inkscape:zoom="31.999998"
inkscape:cx="221.43751"
inkscape:cy="526.98441"
inkscape:window-width="3840"
inkscape:window-height="2043"
inkscape:window-height="2054"
inkscape:window-x="-11"
inkscape:window-y="-11"
inkscape:window-maximized="1"
inkscape:current-layer="g65"
inkscape:current-layer="layer1"
showguides="false"><sodipodi:guide
position="2817.1135,105.93272"
orientation="0,-1"
@ -132,15 +132,15 @@
id="path112"
sodipodi:nodetypes="ccccc" /><path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="m 1493.7517,513.23584 18.9448,0.0677 c 0.7002,16.45429 -12.8604,29.39305 -30.2172,28.20171 l 0.043,-19.00614 c 6.404,0.16342 10.8266,-3.09935 11.2143,-9.26332 z"
d="m 1493.7517,513.23584 18.9448,0.0677 c 0.9621,22.9891 -9.7558,29.26218 -30.2172,28.20171 l 0.043,-19.40389 c 5.7411,-0.49949 9.9869,-3.27612 11.2143,-8.86557 z"
id="path15"
sodipodi:nodetypes="cccccc" /><path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="m 186.85843,512.0006 c -0.7002,16.45429 7.0418,30.48237 24.3986,29.29103 l 0.015,-18.97482 c 0,-0.0828 -5.435,-1.00346 -5.2997,-10.23295 0,0 -18.9255,-0.16092 -19.1135,-0.0833 z"
d="m 186.88968,513.7506 c -1.02254,18.28126 2.7637,28.0196 24.36735,27.54103 l 0.10875,-19.28732 c -0.1875,-0.1453 -5.84125,-1.22221 -5.45595,-8.3267 z"
id="path16"
sodipodi:nodetypes="cccccc" /><path
sodipodi:nodetypes="ccccc" /><path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="m 1493.978,253.40872 18.9975,0.0778 c -0.095,-16.3659 -4.589,-23.42684 -21.9016,-23.00894 l 0.1839,19.00369 c 2.3176,0.80836 2.6729,2.68116 2.7202,3.92742 z"
d="m 1493.978,253.40872 18.9975,0.0778 c -0.095,-16.3659 -4.589,-23.42684 -21.9016,-23.00894 l 0.1839,19.22466 c 2.3176,0.80836 2.6729,2.46019 2.7202,3.70645 z"
id="path2"
sodipodi:nodetypes="cccccc" /><path
style="fill:#ffffff;stroke:#000000"

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,251 @@
{
"name": "",
"tagType": "Provider",
"tags": [
{
"name": "_types_",
"tagType": "Folder",
"tags": [
{
"name": "Extendo",
"tagType": "UdtType",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Unloading_Mode"
},
"valueSource": "opc",
"name": "Unloading_Mode",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.PEC_Override_PB"
},
"valueSource": "opc",
"name": "PEC_Override_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Loading_Mode"
},
"valueSource": "opc",
"name": "Loading_Mode",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Saving_Mode"
},
"valueSource": "opc",
"name": "Power_Saving_Mode",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Extendo_Faults_Reset_PB"
},
"valueSource": "opc",
"name": "Extendo_Faults_Reset_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Aopen_Active"
},
"valueSource": "opc",
"name": "Aopen_Active",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Fully_Retracted"
},
"valueSource": "opc",
"name": "Fully_Retracted",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Fully_Extended"
},
"valueSource": "opc",
"name": "Fully_Extended",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE"
},
"valueSource": "opc",
"name": "STATE",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Faulted"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Communication Faulted",
"priority": "High"
}
],
"name": "Communication_Faulted",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Extendo_Faulted"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Extendo Faulted",
"priority": "High"
}
],
"name": "Extendo_Faulted",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.EStopped"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Estopped"
}
],
"name": "Estopped",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Full"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Full"
}
],
"name": "Full",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
}
]
}
]
},
{
"name": "Extendo",
"tagType": "Folder",
"tags": [
{
"name": "FL4066_4_EX1",
"typeId": "Extendo",
"tagType": "UdtInstance",
"tags": [
{
"name": "Power_Saving_Mode",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Faulted",
"tagType": "AtomicTag"
},
{
"name": "Extendo_Faulted",
"tagType": "AtomicTag"
},
{
"name": "Estopped",
"tagType": "AtomicTag"
},
{
"name": "Full",
"tagType": "AtomicTag"
}
]
},
{
"name": "Fully_Retracted",
"tagType": "AtomicTag"
},
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Aopen_Active",
"tagType": "AtomicTag"
},
{
"name": "Fully_Extended",
"tagType": "AtomicTag"
},
{
"name": "PEC_Override_PB",
"tagType": "AtomicTag"
},
{
"name": "Extendo_Faults_Reset_PB",
"tagType": "AtomicTag"
},
{
"name": "Loading_Mode",
"tagType": "AtomicTag"
},
{
"name": "Unloading_Mode",
"tagType": "AtomicTag"
}
]
}
]
}
]
}

622
tags/Simulation/MCM.json Normal file
View File

@ -0,0 +1,622 @@
{
"name": "",
"tagType": "Provider",
"tags": [
{
"name": "MCM",
"typeId": "MCM",
"tagType": "UdtInstance",
"tags": [
{
"name": "EStop_Actuated_LT",
"tagType": "AtomicTag"
},
{
"name": "Motor_Fault_Reset_PB_LT",
"tagType": "AtomicTag"
},
{
"name": "Jam_Restart_PB_LT",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Estop_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "Jam_Restart_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "Power_Branch_Fault_Reset_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "On_UPS_Battery",
"tagType": "AtomicTag"
},
{
"name": "Stop_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "NAT_Switch_Fault",
"tagType": "AtomicTag"
},
{
"name": "UPS_Battery_On",
"tagType": "AtomicTag"
},
{
"name": "Stopped",
"tagType": "AtomicTag"
},
{
"name": "Jam_Fault",
"tagType": "AtomicTag"
},
{
"name": "Encoder_Fault",
"tagType": "AtomicTag"
},
{
"name": "UPS_Fault",
"tagType": "AtomicTag"
},
{
"name": "EStopped",
"tagType": "AtomicTag"
},
{
"name": "Motor_Fault_Reset_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "UPS_Battery_Low",
"tagType": "AtomicTag"
},
{
"name": "Motor_Fault",
"tagType": "AtomicTag"
},
{
"name": "Low_Air_Pressure_Reset_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "UPS_Battery_Fault",
"tagType": "AtomicTag"
},
{
"name": "Start_PB_Pressed",
"tagType": "AtomicTag"
},
{
"name": "Fire_Relay_De_Energized",
"tagType": "AtomicTag"
}
]
},
{
"name": "Power_Branch_Fault_Reset_PB",
"tagType": "AtomicTag"
},
{
"name": "Local_Estop_LT",
"tagType": "AtomicTag"
},
{
"name": "Motor_Fault_Reset_PB",
"tagType": "AtomicTag"
},
{
"name": "Start_PB",
"tagType": "AtomicTag"
},
{
"name": "Stop_PB",
"tagType": "AtomicTag"
},
{
"name": "Low_Air_Pressure_Reset_PB_LT",
"tagType": "AtomicTag"
},
{
"name": "Jam_Restart_PB",
"tagType": "AtomicTag"
},
{
"name": "Setup_Motor_Speeds",
"tagType": "AtomicTag"
},
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Start_PB_LT",
"tagType": "AtomicTag"
},
{
"name": "Low_Air_Pressure_Reset_PB",
"tagType": "AtomicTag"
}
]
},
{
"name": "_types_",
"tagType": "Folder",
"tags": [
{
"name": "MCM",
"tagType": "UdtType",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Low_Air_Pressure_Reset_PB"
},
"valueSource": "opc",
"name": "Low_Air_Pressure_Reset_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Motor_Fault_Reset_PB"
},
"valueSource": "opc",
"name": "Motor_Fault_Reset_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB_LT"
},
"valueSource": "opc",
"name": "Start_PB_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE"
},
"valueSource": "opc",
"name": "STATE",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Stop_PB"
},
"valueSource": "opc",
"name": "Stop_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Branch_Fault_Reset_PB"
},
"valueSource": "opc",
"name": "Setup_Motor_Speeds",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Start_PB"
},
"valueSource": "opc",
"name": "Start_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Restart_PB"
},
"valueSource": "opc",
"name": "Jam_Restart_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Low_Air_Pressure_Reset_PB_LT"
},
"valueSource": "opc",
"name": "Low_Air_Pressure_Reset_PB_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Power_Branch_Fault_Reset_PB"
},
"valueSource": "opc",
"name": "Power_Branch_Fault_Reset_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Local_Estop_LT"
},
"valueSource": "opc",
"name": "Local_Estop_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.EStop_Actuated_LT"
},
"valueSource": "opc",
"name": "EStop_Actuated_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Jam_Restart_PB_LT"
},
"valueSource": "opc",
"name": "Jam_Restart_PB_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.UPS_Battery_Low"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "UPS Battery Low"
}
],
"name": "UPS_Battery_Low",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Motor_Fault_Reset_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Motor Fault Reset PB Pressed"
}
],
"name": "Motor_Fault_Reset_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Jam_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Jam Fault",
"priority": "High"
}
],
"name": "Jam_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Stopped"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Stopped",
"priority": "High"
}
],
"name": "Stopped",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.UPS_Battery_On"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "UPS Battery On"
}
],
"name": "UPS_Battery_On",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Encoder_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Encoder Fault",
"priority": "High"
}
],
"name": "Encoder_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Fire_Relay_De_Energized"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Fire Relay De Energized",
"priority": "High"
}
],
"name": "Fire_Relay_De_Energized",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.UPS_Battery_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "UPS Battery Fault",
"priority": "High"
}
],
"name": "UPS_Battery_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Jam_Restart_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Jam Restart PB Pressed"
}
],
"name": "Jam_Restart_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Motor_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Motor Fault",
"priority": "High"
}
],
"name": "Motor_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.EStopped"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "EStopped",
"priority": "Critical"
}
],
"name": "EStopped",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Power_Branch_Fault_Reset_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Power_Branch Fault Reset PB Pressed"
}
],
"name": "Power_Branch_Fault_Reset_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Low_Air_Pressure_Reset_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Low Air Pressure Reset PB Pressed"
}
],
"name": "Low_Air_Pressure_Reset_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Stop_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Stop PB Pressed"
}
],
"name": "Stop_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Start_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Start PB Pressed"
}
],
"name": "Start_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.NAT_Switch_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Nat Switch Fault",
"priority": "High"
}
],
"name": "NAT_Switch_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.On_UPS_Battery"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "On UPS Battery"
}
],
"name": "On_UPS_Battery",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.UPS_Fault"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "UPS Fault",
"priority": "High"
}
],
"name": "UPS_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.EStop_PB_Pressed"
},
"valueSource": "opc",
"alarms": [
{
"setpointA": 1.0,
"name": "Estop PB Pressed"
}
],
"name": "Estop_PB_Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Motor_Fault_Reset_PB_LT"
},
"valueSource": "opc",
"name": "Motor_Fault_Reset_PB_LT",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
}
]
}
]
}

300
tags/Simulation/MCM04.json Normal file
View File

@ -0,0 +1,300 @@
{
"name": "",
"tagType": "Provider",
"tags": [
{
"name": "System",
"tagType": "Folder",
"tags": [
{
"name": "MCM4",
"tagType": "Folder",
"tags": [
{
"name": "Field_Devices",
"tagType": "Folder",
"tags": [
{
"name": "DPM",
"tagType": "Folder",
"tags": [
{
"name": "FL1034_2_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "PRS3_5_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "VSA_DPM1_7",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "VSC_DPM2",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "PS10_2_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
},
{
"name": "PS11_7_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "VSA_DPM2",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
},
{
"name": "VSC_DPM3",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
},
{
"name": "VSC_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
},
{
"name": "FL3016_2_DPM1",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
},
{
"name": "VSA_DPM3",
"typeId": "Field_Devices",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Communication_Fault",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
}
]
}
]
}
]
}
]
},
{
"name": "_types_",
"tagType": "Folder",
"tags": [
{
"name": "Field_Devices",
"typeId": "",
"tagType": "UdtType",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Fault"
},
"valueSource": "opc",
"name": "Communication_Fault",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE"
},
"valueSource": "opc",
"name": "STATE",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
}
]
}
]
}