diff --git a/.resources/061f21d1cc05d18b933f67b969cb6801141e84e05aab8df99453f512835b6939 b/.resources/061f21d1cc05d18b933f67b969cb6801141e84e05aab8df99453f512835b6939 new file mode 100644 index 0000000..e432b1a Binary files /dev/null and b/.resources/061f21d1cc05d18b933f67b969cb6801141e84e05aab8df99453f512835b6939 differ diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json b/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json index 88b3f0c..ca7786f 100644 --- a/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json +++ b/MTN6_Simulation/com.inductiveautomation.perspective/page-config/config.json @@ -35,6 +35,10 @@ "title": "", "viewPath": "Additional-Home-View/MAP-Home" }, + "/MCM": { + "title": "", + "viewPath": "Simulations/MCM" + }, "/Monitron": { "viewPath": "Main-Views/Monitron" }, @@ -177,6 +181,20 @@ "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" } ], "top": [ diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/resource.json b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/resource.json new file mode 100644 index 0000000..47a3781 --- /dev/null +++ b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/resource.json @@ -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" + } +} \ No newline at end of file diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/thumbnail.png b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/thumbnail.png new file mode 100644 index 0000000..e432b1a Binary files /dev/null and b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/thumbnail.png differ diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/view.json b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/view.json new file mode 100644 index 0000000..3b80fdd --- /dev/null +++ b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/MCM/view.json @@ -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" + } +} \ No newline at end of file diff --git a/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/Nav/view.json b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/Nav/view.json index ce7a8e8..0a6e6a8 100644 --- a/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/Nav/view.json +++ b/MTN6_Simulation/com.inductiveautomation.perspective/views/Simulations/Nav/view.json @@ -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" @@ -111,23 +112,55 @@ "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" } ], "meta": { "name": "root" }, + "props": { + "mode": "percent" + }, "type": "ia.container.coord" } } \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json index a6cfc9a..ccbfd5e 100644 --- a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/page-config/config.json @@ -161,6 +161,20 @@ "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" } ], "top": [ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json new file mode 100644 index 0000000..c8e3309 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/resource.json @@ -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" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png new file mode 100644 index 0000000..82b02cb Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json new file mode 100644 index 0000000..47be597 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/PopUp-Views/Controller-Equipment/Information-Docked-East-MCM/view.json @@ -0,0 +1,3050 @@ +{ + "custom": { + "PLC_list": [ + "MCM01", + "MCM02", + "MCM03", + "MCM04", + "MCM05", + "MCM06", + "MCM07" + ], + "running_state": -1, + "state": 0, + "views_data": [] + }, + "params": { + "tagProps": [ + "MCM", + "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-MCM\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": "Name" + }, + "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": "Property" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "overflow": "hidden" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Name" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "MOTOR FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Motor Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/Motor_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "Motor Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "JAM FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Jam Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/Jam_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "Jam Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "FIRE RELAY DE ENERGIZED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Fire Relay De Energized" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/Fire_Relay_De_Energized" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "Fire Relay De Energized" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "ESTOPPED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Estopped" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/EStopped" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "Estopped" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "STOPPED" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "Stopped" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/Stopped" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "Stopped" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "NAT SWITCH FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "NAT Switch Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/NAT_Switch_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "NAT Switch Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "ON UPS BATTERY" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "On UPS Battery" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/On_UPS_Battery" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "On UPS Battery" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/UPS_Battery_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "UPS Battery Fault" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY LOW" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery Low" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/UPS_Battery_Low" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "UPS Battery Low" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS BATTERY ON" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Battery On" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/UPS_Battery_On" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "UPS Battery On" + }, + "position": { + "basis": "35px" + }, + "props": { + "direction": "column" + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "children": [ + { + "meta": { + "name": "Name" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "props": { + "style": { + "paddingLeft": 20 + }, + "text": "UPS FAULT" + }, + "type": "ia.display.label" + }, + { + "meta": { + "name": "UPS Fault" + }, + "position": { + "basis": "50%", + "grow": 1 + }, + "propConfig": { + "props.style.backgroundColor": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FFFFFF" + }, + { + "input": "FALSE", + "output": "#D5D5D5" + } + ], + "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/UPS_Fault" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "FALSE", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "TRUE" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + }, + "props.textStyle.color": { + "binding": { + "config": { + "path": "this.props.text" + }, + "transforms": [ + { + "fallback": "#000000", + "inputType": "scalar", + "mappings": [ + { + "input": "TRUE", + "output": "#FF0000" + }, + { + "input": "FALSE", + "output": "#47FF47" + } + ], + "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": "UPS Fault" + }, + "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": [ + { + "children": [ + { + "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+\"/Start_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Start_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#00D900", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#009400" + } + ], + "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}/Start_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "START", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "START PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/not_started" + } + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Start" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Stop_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Stop_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#FF0000", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FF8787" + } + ], + "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}/Stop_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "STOP", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "STOP PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/stop_circle" + } + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Stop" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Motor_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Motor_Fault_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#FFFF00", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FFFF86" + } + ], + "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}/Motor_Fault_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "MOTOR FAULT RESET", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "MOTOR FAULT RESET PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Motor Fault Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Power_Branch_Fault_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Power_Branch_Fault_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#FFFF00", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#FFFF86" + } + ], + "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}/Power_Branch_Fault_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "POWER BRANCH FAULT RESET", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "POWER BRANCH FAULT RESET PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Power Branch Fault Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Low_Air_Pressure_Reset_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Low_Air_Pressure_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#0000FF", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#7070FF" + } + ], + "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}/Low_Air_Pressure_Reset_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "LOW AIR PRESSURE RESET", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "POWER BRANCH FAULT RESET PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Low Air Pressure Reset" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Jam_Restart_PB\"\n\tsystem.tag.writeBlocking([tag_path],[True])\n\tsystem.perspective.print(tag_path)" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Jam_Restart_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#D0D0D0" + } + ], + "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}/Jam_Restart_PB" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "JAM RESTART", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "JAM RESTART PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Jam Restart" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + }, + { + "children": [ + { + "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+\"/Setup_Motor_Speeds\"\n\tsystem.tag.writeBlocking([tag_path],[True])" + }, + "scope": "G", + "type": "script" + } + } + }, + "meta": { + "name": "Button" + }, + "position": { + "basis": "80px", + "grow": 1 + }, + "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}/Setup_Motor_Speeds" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "#FFFFFF", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "#D0D0D0" + } + ], + "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}/Setup_Motor_Speeds" + }, + "transforms": [ + { + "expression": "coalesce({value},{view.params.forceFaultStatus},0)", + "type": "expression" + }, + { + "fallback": "SETUP MOTOR SPEEDS", + "inputType": "scalar", + "mappings": [ + { + "input": 1, + "output": "SETUP MOTOR SPEEDS PRESSED" + } + ], + "outputType": "scalar", + "type": "map" + } + ], + "type": "tag" + } + } + }, + "props": { + "image": { + "icon": { + "color": "#000000", + "path": "material/sync_problem" + } + }, + "style": { + "classes": "Background-Styles/Controller" + }, + "textStyle": { + "color": "#000000" + } + }, + "type": "ia.input.button" + } + ], + "meta": { + "name": "Setup Motor Speeds" + }, + "position": { + "basis": "35px" + }, + "props": { + "style": { + "classes": "PopUp-Styles/InfoLabel", + "padding": "" + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "FlexContainer_0" + }, + "position": { + "basis": "100px", + "grow": 1 + }, + "props": { + "direction": "column", + "style": { + "gap": 6, + "paddingBottom": 20, + "paddingLeft": 10, + "paddingRight": 10, + "paddingTop": 13 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "Commands_tab" + }, + "position": { + "tabIndex": 2 + }, + "props": { + "direction": "column", + "style": { + "paddingTop": 1 + } + }, + "type": "ia.container.flex" + } + ], + "meta": { + "name": "tabs" + }, + "position": { + "grow": 1 + }, + "props": { + "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": "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" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json new file mode 100644 index 0000000..96d2016 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/resource.json @@ -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" + } +} \ No newline at end of file diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png new file mode 100644 index 0000000..60a7c81 Binary files /dev/null and b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/thumbnail.png differ diff --git a/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json new file mode 100644 index 0000000..45aaa94 --- /dev/null +++ b/SCADA_PERSPECTIVE_PARENT_PROJECT/com.inductiveautomation.perspective/views/Symbol-Views/Equipment-Views/MCM/view.json @@ -0,0 +1,311 @@ +{ + "custom": { + "disconnected": false, + "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": { + "fc": "{session.custom.fc}", + "plc": "{view.custom.plc}" + }, + "tagPath": "[{fc}_SCADA_TAG_PROVIDER]{plc}/DCN" + }, + "transforms": [ + { + "expression": "if(isNull({value}), False, {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 \"#FFFFFF\",\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": [ + { + "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" + } + }, + "type": "ia.container.coord" + } +} \ No newline at end of file diff --git a/tags/Simulation/MCM.json b/tags/Simulation/MCM.json new file mode 100644 index 0000000..0ee21bd --- /dev/null +++ b/tags/Simulation/MCM.json @@ -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" + } + ] + } + ] + } + ] +} \ No newline at end of file