From 6ed69c4c952eb0e2789e6300368c4f3b55cd3166 Mon Sep 17 00:00:00 2001 From: "gigi.mamaladze" Date: Sat, 14 Jun 2025 17:05:02 +0400 Subject: [PATCH] MTN6-245 --- .../page-config/config.json | 14 + .../ignition/global-props/data.bin | Bin 453 -> 603 bytes .../page-config/config.json | 14 + .../Information-Docked-East-VFD/resource.json | 17 + .../Information-Docked-East-VFD/thumbnail.png | Bin 0 -> 26540 bytes .../Information-Docked-East-VFD/view.json | 1859 +++++++++++++++++ .../Equipment-Views/Status/view.json | 81 +- tags/Simulation/Conveyor.json | 650 ++++++ 8 files changed, 2612 insertions(+), 23 deletions(-) create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/resource.json create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/thumbnail.png create mode 100644 SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json create mode 100644 tags/Simulation/Conveyor.json diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json b/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json index 02c17fd..a042c38 100644 --- a/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json +++ b/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json @@ -119,6 +119,20 @@ "size": 400, "viewParams": {}, "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-JR-PB" + }, + { + "anchor": "fixed", + "autoBreakpoint": 480, + "content": "cover", + "handle": "hide", + "iconUrl": "", + "id": "Docked-East-VFD", + "modal": false, + "resizable": false, + "show": "onDemand", + "size": 400, + "viewParams": {}, + "viewPath": "PopUp-Views/Controller-Equipment/Information-Docked-East-VFD" } ], "top": [ diff --git a/MTN6_Simulation/ignition/global-props/data.bin b/MTN6_Simulation/ignition/global-props/data.bin index 6e704c444b1f590b494921ce36563a40af9dc489..0da33b512cd7c2e561fb7e1a629a4da11b3a4b17 100644 GIT binary patch literal 603 zcmV-h0;K&PiwFP!00000|8-N_Zqq;z9VfI+Qc9cjmfnzs5E2hqacE0bcri_srpm2N zfX8TKZ<1|&iM;EeegxtT_y%5(_zU$6 zzB>K%?FRrP0JP8D`fm&V|9gnfJizWd>gZ>YubZZB9vv5+A0O=Nm2yWf7K#T5Spmp% zDoV6ZB3G1%AUuddn>L6?RiTBTcS&u*F})9vL$DQzVJi&!%>4`70Z5J_f!Qv~YGT|5 z*t{fTVnl+uMveJb)Hx-5SSKUAUBUz5tMxZEt5a<@y6qFIWOX}MrQ5n_zO9zZ7YLjKNDJmsE{G?I8>p*?F@w>@m@jFcp!;s!n9qQH?fV-uV7iOc2uS)8X%LPkoj z)oQXwhH31-Fr>?cV)4){;&}>PvR%ntL=~R&7Gr?%0p4&CVz!1`Loce16upGk626BF zK?cu;jEf+=#uE)&^g}fNeGpz5V;XYQi|0vzCwGlCW_%K6;2c)I*?s%G)*%Cq3`V6(9 p_JhX7QTZ8aEAEDbYjMubgp*Jo*W^k3t9WnH>JN}-CuSl90037l8`1y( literal 453 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 BUN-;$ literal 0 HcmV?d00001 diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json new file mode 100644 index 0000000..d6c892d --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-VFD/view.json @@ -0,0 +1,1859 @@ +{ + "custom": { + "PLC_list": null, + "running_state": -1, + "state": 0, + "views_data": [] + }, + "params": { + "tagProps": [ + "/System/Conveyor/UL1_11_VFD1", + "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-JR\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": "Header" + }, + "position": { + "basis": "30px", + "shrink": 0 + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px", + "display": false + }, + "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", + "justify": "space-around" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "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": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "VFD" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "text": "State" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "State" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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, \"VFD Faulted\",\r\n8, \"Communication Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running in Maintenance Mode\",\r\n\"Unknown\")" + }, + "type": "expr" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "expression": "switch(\r\n toInt({..../State.custom.state}),\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14,61,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#00ffd0\", \"#ff8c00\",\r\n \"#0008ff\", \"#946446\", \"#ff0000\", \"#ff0000\", \"#ff0000\", \"#ff8c00\", \"#c2c2c2\", \"#B45C5C\",\r\n \"#000000\"\r\n)\r\n\r\n" + }, + "type": "expr" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "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": "State" + }, + "position": { + "basis": "35px" + }, + "propConfig": { + "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},404)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "text": "FPM" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "FPM" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/FPM" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" FPM\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FPM" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "text": "Frequency" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Frequency" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/Frequenncy" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" Hz\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Frequency" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "text": "Amperage" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Amperage" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/STATE" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" A\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Amperage" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 100 + }, + "text": "Voltage" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Voltage" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/Voltage" + }, + "transforms": [ + { + "expression": "if(coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027) \u003d \u0027Unknown\u0027, \u0027Unknown\u0027, coalesce({value},{view.params.forceFaultStatus}) + \" V\")", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Voltage" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 35 + }, + "text": "Communication Fault Code" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Communication_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/Communication_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Communication_Fault_Code" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 80 + }, + "text": "VFD Fault Code" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "VFD_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/VFD_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "VFD_Fault_Code" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "NameField" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 70 + }, + "text": "Last VFD Fault Code" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Last_VFD_Fault_Code" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "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}/Last_VFD_Fault_Code" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#FFFFFF", + "classes": "Text-Styles/Ariel-Bold-12pt", + "paddingLeft": 10 + } + }, + "type": "ia.display.label" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Last_VFD_Fault_Code" + }, + "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" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "32px" + }, + "props": { + "text": "Commands", + "textStyle": { + "color": "#060606" + } + }, + "type": "ia.display.label" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Speed_At_60Hz" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "style": { + "padding": 20 + }, + "text": "Speed At 60Hz", + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Speed_At_60Hz\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "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.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Speed_At_60Hz" + }, + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "200px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Speed_At_60Hz" + }, + "position": { + "basis": "46px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Cycle_Time_Factor" + }, + "position": { + "basis": "50px", + "grow": 1 + }, + "props": { + "style": { + "padding": 20 + }, + "text": "Cycle Time Factor", + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Cycle_Time_Factor\"\n\tvalue \u003d self.props.value\n\tsystem.tag.writeAsync([propMaintMode], [value])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "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.value": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Cycle_Time_Factor" + }, + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "Property" + }, + "position": { + "basis": "200px" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Cycle_Time_Factor" + }, + "position": { + "basis": "46px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands" + }, + "position": { + "basis": "200px" + }, + "props": { + "alignContent": "flex-start", + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "events": { + "component": { + "onActionPerformed": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tpropMaintMode \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Maintenance_Mode\"\n\tinMaintenanceMode \u003d system.tag.readBlocking([propMaintMode])[0].value\n\t\n\n\tsystem.tag.writeBlocking([propMaintMode], [not inMaintenanceMode])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Maintenance" + }, + "position": { + "basis": "34px" + }, + "propConfig": { + "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.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/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027#000000\u0027)", + "type": "expression" + }, + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "#0000FF" + }, + { + "input": true, + "output": "#7E5A5A" + } + ], + "outputType": "scalar", + "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/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\u0027Unknown\u0027)", + "type": "expression" + }, + { + "fallback": "Maintenance Mode: Unknown", + "inputType": "scalar", + "mappings": [ + { + "input": false, + "output": "Active Maintenance Mode" + }, + { + "input": true, + "output": "Disable Maintenance Mode" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "marginBottom": 10 + } + }, + "type": "ia.input.button" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Label" + }, + "position": { + "basis": "50px" + }, + "props": { + "text": "FPM", + "textStyle": { + "color": "#7D7D7D" + } + }, + "type": "ia.display.label" + }, + { + "events": { + "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])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "NumericEntryField" + }, + "position": { + "basis": "150px" + }, + "propConfig": { + "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.value": { + "binding": { + "config": { + "bidirectional": true, + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Speed_FPM" + }, + "type": "tag" + } + } + }, + "props": { + "inputBounds": { + "maximum": 1000, + "minimum": 0 + } + }, + "type": "ia.input.numeric-entry-field" + } + ], + "meta": { + "name": "FPM" + }, + "position": { + "basis": "65px", + "shrink": 0 + }, + "props": { + "justify": "center", + "style": { + "marginBottom": 10 + } + }, + "type": "ia.container.flex" + }, + { + "events": { + "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+\"/Maintenance/Start_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Start" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\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)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#2EDF43", + "marginBottom": 10 + }, + "text": "Start" + }, + "type": "ia.input.button" + }, + { + "events": { + "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+\"/Maintenance/Stop_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Stop" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\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)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#E51A1A", + "marginBottom": 10 + }, + "text": "Stop" + }, + "type": "ia.input.button" + }, + { + "events": { + "dom": { + "onMouseDown": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tspeedFPM \u003d self.parent.getChild(\"FPM\").getChild(\"NumericEntryField\").props.value\n\tif (speedFPM !\u003d 0):\t\n\t\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Jog_PB_Pressed\"\n\t\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + }, + "onMouseUp": { + "config": { + "script": "\ttag_name \u003d self.view.params.tagProps[0]\n\tspeedFPM \u003d self.parent.getChild(\"FPM\").getChild(\"NumericEntryField\").props.value\n\ttag_path \u003d \"[\" + self.session.custom.fc+ \"_SCADA_TAG_PROVIDER]\"+tag_name+\"/Maintenance/Jog_PB_Pressed\"\n\tsystem.tag.writeBlocking([tag_path],[False])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Jog" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\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)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#2ACCBA", + "marginBottom": 10 + }, + "text": "Jog" + }, + "type": "ia.input.button" + }, + { + "events": { + "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+\"/Maintenance/Direction_PB_Pressed\"\n\tdirection \u003d system.tag.readBlocking([tag_path])[0].value\n\tsystem.tag.writeBlocking([tag_path], [not direction])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Direction" + }, + "position": { + "basis": "80px", + "shrink": 0 + }, + "propConfig": { + "props.enabled": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Maintenance_Mode" + }, + "transforms": [ + { + "expression": "coalesce(\r\n {value},\r\n {view.params.forceFaultStatus},\r\n False\r\n) \u0026\u0026 (\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)", + "type": "expression" + } + ], + "type": "tag" + } + } + }, + "props": { + "style": { + "backgroundColor": "#0068F7", + "marginBottom": 10 + }, + "text": "Direction" + }, + "type": "ia.input.button" + } + ], + "custom": { + "errorMessage": "" + }, + "meta": { + "name": "FlexContainer" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Maintenance" + }, + "position": { + "basis": "200px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "marginTop": -40 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "alignItems": "center", + "direction": "column", + "enabled": false, + "justify": "space-between", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "currentTabIndex": 2, + "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", + "Commands" + ] + }, + "type": "ia.container.tab" + } + ], + "meta": { + "name": "Main" + }, + "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" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json index 0574fc2..85d3106 100644 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/Status/view.json @@ -5,13 +5,14 @@ "display_icon": true, "plc": "value", "priority": 0, - "priority_string": "No Active Alarms", + "priority_string": "Medium", "running": false, "searchId": "PLC01", - "state": 0, - "state_string": "Off(Inactive)" + "state": 131, + "state_string": "Disconnected" }, "params": { + "angle": 0, "directionLeft": false, "forceFaultStatus": null, "forceRunningStatus": null, @@ -36,7 +37,7 @@ }, "transforms": [ { - "expression": "case(\t{value},\r\n\t\t0, True,\r\n\t\t1, True,\r\n\t\t2, {session.custom.alarm_filter.show_running},\r\n\t\t3, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t4, True,\r\n\t\t5, True,\r\n\t\t6, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t7, True,\r\n\t\t8, True,\r\n\t\t9, True,\r\n\t\t13, True,\r\n\t\t14, True,\r\n\t\tFalse )", + "expression": "case(\t{value},\r\n\t\t0, True,\r\n\t\t1, True,\r\n\t\t2, {session.custom.alarm_filter.show_running},\r\n\t\t3, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t4, True,\r\n\t\t5, True,\r\n\t\t6, {session.custom.alarm_filter.show_diagnostic} || {session.custom.alarm_filter.show_running},\r\n\t\t7, True,\r\n\t\t8, True,\r\n\t\t9, True,\r\n\t\t13, True,\r\n\t\t14, True,\r\n\t\t61, True,\r\n 131, True,\t\r\n\t\tFalse )", "type": "expression" } ], @@ -121,7 +122,7 @@ }, { "input": 5, - "output": 1 + "output": 3 }, { "input": 6, @@ -146,6 +147,10 @@ { "input": 14, "output": 2 + }, + { + "input": 61, + "output": 4 } ], "outputType": "scalar", @@ -188,7 +193,7 @@ }, { "input": 5, - "output": "High" + "output": "Low" }, { "input": 6, @@ -213,6 +218,14 @@ { "input": 14, "output": "Medium" + }, + { + "input": 61, + "output": "Diagnostic" + }, + { + "input": 131, + "output": "Medium" } ], "outputType": "scalar", @@ -265,12 +278,16 @@ "custom.state_string": { "binding": { "config": { - "expression": "case({view.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\",\r\n7, \"VFD Faulted\",\r\n8, \"Communication Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n\"Unknown\")" + "expression": "case({view.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, \"VFD Faulted\",\r\n8, \"Communication Fault\",\r\n9, \"E-Stop\",\r\n13,\"Encoder_Fault\",\r\n14,\"Stopped\",\r\n61,\"Conveyor Running In Maintenance Mode\",\r\n131, \"Disconnected\",\r\n\"Unknown\")" }, "type": "expr" }, "persistent": true }, + "params.angle": { + "paramDirection": "input", + "persistent": true + }, "params.directionLeft": { "paramDirection": "input", "persistent": true @@ -312,27 +329,45 @@ "type": "expr" } }, - "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, 7, 8, 9, 13, 14,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#00ffd0\", \"#ff8c00\",\r\n \"#0008ff\", \"#946446\", \"#ff0000\", \"#ff0000\", \"#ff0000\", \"#ff8c00\", \"#c2c2c2\",\r\n \"#fff700\"\r\n )\r\n)\r\n" + "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, 13, 14, 61, 131,\r\n \"#c2c2c2\", \"#c9fcc0\", \"#00ff11\", \"#00ffd0\", \"#ff8c00\",\r\n \"#0008ff\", \"#946446\", \"#ff0000\", \"#ff0000\", \"#ff0000\", \"#ff8c00\", \"#c2c2c2\", \"#B45C5C\", \"#c2c2c2\",\r\n \"#fff700\"\r\n )\r\n)\r\n" }, "type": "expr" } + }, + "props.style.transform": { + "binding": { + "config": { + "fallbackDelay": 2.5, + "mode": "indirect", + "references": { + "0": "{view.params.tagProps[0]}", + "fc": "{session.custom.fc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Maintenance/Direction" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},\"\")", + "type": "expression" + }, + { + "fallback": "", + "inputType": "scalar", + "mappings": [ + { + "input": true, + "output": "scaleX(-1)" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } } }, "props": { @@ -360,7 +395,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-VFD\u0027,params\u003d{\u0027tagProps\u0027:self.view.params.tagProps})" }, "scope": "G", "type": "script" diff --git a/tags/Simulation/Conveyor.json b/tags/Simulation/Conveyor.json new file mode 100644 index 0000000..c101d5b --- /dev/null +++ b/tags/Simulation/Conveyor.json @@ -0,0 +1,650 @@ +{ + "name": "", + "tagType": "Provider", + "tags": [ + { + "name": "Latency", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "StringArray", + "name": "rolling_latency", + "alarmEvalEnabled": true, + "value": [ + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0", + "0" + ], + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "first_pass", + "value": true, + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[~]System/aws_data.value", + "name": "aws_data_copy", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "prev_key", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "last_alarm_change_ts", + "formatString": "yyyy-MM-dd h:mm:ss aa", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "avg_latency", + "value": "", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Configuration", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "String", + "name": "SiteLatLng", + "value": "{\"lat\":40.19567891533845, \"lng\":-74.56542081870408}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "PLC", + "value": "{ \"MCM07\": { \"Area\": \"Bypass\", \"SubArea\": \"\" }, \t\"MCM06\": { \"Area\": \"Non Con Sorters\", \"SubArea\": \"\" }, \t\"MCM05\": { \"Area\": \"North Bulk Inbound, Fluid Outbound and Problem Solve\", \"SubArea\": \"\" }, \t\"MCM04\": { \"Area\": \"South Bulk Inbound, Fluid Outbound and Problem Solve\", \"SubArea\": \"\" }, \t\"MCM03\": { \"Area\": \"Non Con Merge\", \"SubArea\": \"\" }, \t\"MCM02\": { \"Area\": \"Fluid Inbound Merges 5-7\", \"SubArea\": \"\" }, \t\"MCM01\": { \"Area\": \"Fluid Inbound Merges 1-4\", \"SubArea\": \"\" } }", + "tagType": "AtomicTag" + }, + { + "valueSource": "reference", + "dataType": "String", + "sourceTagPath": "[System]Gateway/SystemName", + "name": "SystemName", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "aws", + "value": "{\"prefix\":\"na\",\"region\":\"us-east-1\"}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "FC", + "alarmEvalEnabled": false, + "value": "MTN6_SIMULATION", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "DetailedViews", + "value": "{ \"MCM07 Bypass\": [ \"MCM07\" ], \t\"MCM06 Non Con\": [ \"MCM06\" ],\t \t\"MCM05 South Bulk Inbound, Fluid Outbound and Problem Solve\": [ \"MCM05\" ],\t \t\"MCM04 North Bulk Inbound, Fluid Outbound and Problem Solve\": [ \"MCM04\" ], \t\"MCM03 Non Con\": [ \"MCM03\" ], \t\"MCM02 Fluid Inbound Merges 5-7\": [ \"MCM02\" ], \t\"MCM01 Fluid Inbound Merges 1-4\": [ \"MCM01\" ]}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "BACKEND_EDGE_DEVICE", + "value": "quattro", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "_types_", + "tagType": "Folder", + "tags": [ + { + "name": "Conveyor", + "tagType": "UdtType", + "tags": [ + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Maintenance_Mode" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Maintenance_Mode", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Direction_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Jog_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Stop_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Start_PB_Pressed" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Start_PB_Pressed", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Speed_FPM" + }, + "valueSource": "opc", + "dataType": "Int4", + "name": "Speed_FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Disconnected" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Disconnected", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.VFD_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "VFD_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Communication_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Fault_Code" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "VFD_Reset_Required", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Communication_Fault_Reset_Required" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Communication_Fault_Reset_Required", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Safe_Off_Fault" + }, + "valueSource": "opc", + "dataType": "Boolean", + "name": "Safe_Off_Fault", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.FPM" + }, + "valueSource": "opc", + "name": "FPM", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Last_VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "Last_VFD_Fault_Code", + "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.Voltage" + }, + "valueSource": "opc", + "name": "Voltage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Amperage" + }, + "valueSource": "opc", + "name": "Amperage", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Communication_Fault_Code" + }, + "valueSource": "opc", + "name": "Communication_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.VFD_Fault_Code" + }, + "valueSource": "opc", + "name": "VFD_Fault_Code", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Frequency" + }, + "valueSource": "opc", + "name": "Frequenncy", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Cycle_Time_Factor" + }, + "valueSource": "opc", + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag", + "opcServer": "PLC" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Speed_At_60Hz" + }, + "valueSource": "opc", + "name": "Speed_At_60Hz", + "tagType": "AtomicTag", + "opcServer": "PLC" + } + ] + } + ] + }, + { + "name": "System", + "tagType": "Folder", + "tags": [ + { + "valueSource": "memory", + "dataType": "String", + "name": "download", + "value": "", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "wbsckt_messages_send", + "value": "{\"message_list\":[{\"action\":\"pageview\",\"parameters\":{\"siteId\":\"MTN6_SIMULATION\",\"sessionId\":\"bd3d002d-ce53-4953-a26d-14c9290a8d90\",\"pageId\":\"Home\",\"timestamp\":1749137391093}}]}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "device_count", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "IdToStatus", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_logging", + "value": false, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "thread_id", + "value": "2162", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "String", + "name": "aws_data", + "value": "{}", + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "close_socket", + "value": true, + "tagType": "AtomicTag" + }, + { + "name": "Conveyor", + "tagType": "Folder", + "tags": [ + { + "name": "UL1_3_VFD1", + "typeId": "Conveyor", + "tagType": "UdtInstance", + "tags": [ + { + "name": "Voltage", + "tagType": "AtomicTag" + }, + { + "name": "Speed_At_60Hz", + "tagType": "AtomicTag" + }, + { + "value": 14, + "name": "STATE", + "tagType": "AtomicTag" + }, + { + "name": "Last_VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Maintenance", + "tagType": "Folder", + "tags": [ + { + "name": "Maintenance_Mode", + "tagType": "AtomicTag" + }, + { + "name": "Speed_FPM", + "tagType": "AtomicTag" + }, + { + "name": "Direction_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Start_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Stop_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Jog_PB_Pressed", + "tagType": "AtomicTag" + }, + { + "name": "Direction", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Alarms", + "tagType": "Folder", + "tags": [ + { + "alarms": [ + { + "setpointA": 1.0, + "name": "Communication Fault", + "priority": "High", + "displayPath": "" + } + ], + "name": "Communication_Fault", + "tagType": "AtomicTag" + }, + { + "alarms": [ + { + "setpointA": 1.0, + "name": "Safe Off Fault", + "priority": "High" + } + ], + "name": "Safe_Off_Fault", + "tagType": "AtomicTag" + }, + { + "alarms": [ + { + "setpointA": 1.0, + "name": "VFD Fault", + "priority": "High" + } + ], + "name": "VFD_Fault", + "tagType": "AtomicTag" + }, + { + "alarms": [ + { + "setpointA": 1.0, + "name": "Communication Fault Reset Required", + "priority": "Diagnostic" + } + ], + "name": "Communication_Fault_Reset_Required", + "tagType": "AtomicTag" + }, + { + "opcItemPath": { + "bindType": "parameter", + "binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.VFD_Reset_Required" + }, + "alarms": [ + { + "setpointA": 1.0, + "name": "VFD Reset Required", + "priority": "Diagnostic" + } + ], + "name": "VFD_Reset_Required", + "tagType": "AtomicTag" + }, + { + "alarms": [ + { + "setpointA": 1.0, + "name": "Disconnected", + "priority": "Medium" + } + ], + "name": "Disconnected", + "tagType": "AtomicTag" + } + ] + }, + { + "name": "Amperage", + "tagType": "AtomicTag" + }, + { + "name": "Frequenncy", + "tagType": "AtomicTag" + }, + { + "name": "VFD_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "FPM", + "tagType": "AtomicTag" + }, + { + "name": "Communication_Fault_Code", + "tagType": "AtomicTag" + }, + { + "name": "Cycle_Time_Factor", + "tagType": "AtomicTag" + } + ] + } + ] + }, + { + "valueSource": "memory", + "dataType": "DateTime", + "name": "wbsckt_heartbeat_interval", + "value": 1749905376025, + "tagType": "AtomicTag" + }, + { + "valueSource": "memory", + "dataType": "Boolean", + "name": "wbsckt_running", + "value": true, + "tagType": "AtomicTag" + } + ] + } + ] +} \ No newline at end of file