Merge pull request 'MTN6-253, MTN6-247' (#121) from beka-7 into main

Reviewed-on: #121
This commit is contained in:
gigi.mamaladze 2025-06-10 13:32:26 +00:00
commit 34b16fa31c
3 changed files with 700 additions and 213 deletions

View File

@ -1,13 +1,21 @@
{
"custom": {
"PLC_list": null,
"PLC_list": [
"MCM01",
"MCM02",
"MCM03",
"MCM04",
"MCM05",
"MCM06",
"MCM07"
],
"running_state": -1,
"state": 5,
"state": 1,
"views_data": []
},
"params": {
"tagProps": [
"UL1_3_JR_PB1/HMI",
"/System/Station/Buttons/UL1_3_JR_PB2",
"value",
"value",
"value",
@ -64,7 +72,7 @@
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/ALARMST"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/STATE"
},
"transforms": [
{
@ -75,25 +83,21 @@
"fallback": null,
"inputType": "scalar",
"mappings": [
{
"input": 4,
"output": 1
},
{
"input": 3,
"output": 2
},
{
"input": 2,
"output": 3
},
{
"input": 2,
"output": 2
},
{
"input": 1,
"output": 4
"output": 1
},
{
"input": 0,
"output": 5
"output": 0
}
],
"outputType": "scalar",
@ -216,164 +220,6 @@
},
"type": "ia.container.flex"
},
{
"children": [
{
"children": [
{
"meta": {
"name": "Label"
},
"position": {
"basis": "200px",
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"path": "session.custom.command_auth.enabled"
},
"type": "property"
}
},
"props.text": {
"binding": {
"config": {
"expression": "\u0027Control Enabled Timeout: \\n\u0027 + ({session.custom.command_auth.timeout_sp} - {session.custom.command_auth.auth_timeout}) + \u0027 seconds\u0027"
},
"type": "expr"
}
}
},
"props": {
"style": {
"color": "#000000",
"fontFamily": "Arial",
"fontSize": 14,
"fontWeight": "bold",
"marginBottom": 5,
"marginLeft": 5,
"marginRight": 5,
"marginTop": 5,
"whiteSpace": "pre"
},
"textStyle": {
"textAlign": "center"
}
},
"type": "ia.display.label"
},
{
"events": {
"component": {
"onActionPerformed": {
"config": {
"script": "\tif self.session.custom.command_auth.enabled:\n\t\t\tself.session.custom.command_auth.enabled \u003d False\n\telse:\n\t\t#self.session.custom.command_auth.enabled \u003d True\n\t\tsystem.perspective.openPopup(\u0027command-auth\u0027, \u0027PopUp-Views/Command-Authenticate\u0027, showCloseIcon \u003d False, draggable \u003d False, modal \u003d True, overlayDismiss \u003d True)"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "Button_0",
"tooltip": {
"enabled": true,
"location": "bottom",
"style": {
"whiteSpace": "pre"
}
}
},
"position": {
"basis": "170px",
"shrink": 0
},
"propConfig": {
"meta.tooltip.text": {
"binding": {
"config": {
"expression": "//if({this.props.enabled}, \u0027Re-Authenticate to Enable Command Controls\u0027, \u0027Insufficient Privileges - User Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)\r\nif({session.custom.command_auth.enabled},\u0027Click to Disable Controls.\u0027, \u0027Re-Authenticate to Enable Command Controls \\nUser Role Required: \u0027 + {session.custom.fc} + \u0027-rme-all\u0027)"
},
"type": "expr"
}
},
"props.image.icon.path": {
"binding": {
"config": {
"expression": "if({session.custom.command_auth.enabled},\u0027material/lock_open\u0027,\u0027material/lock\u0027)"
},
"type": "expr"
}
},
"props.text": {
"binding": {
"config": {
"expression": "if({session.custom.command_auth.enabled},\u0027Disable Controls\u0027,\u0027Enable Controls\u0027)"
},
"type": "expr"
}
}
},
"props": {
"image": {
"icon": {}
},
"primary": false,
"style": {
"marginBottom": 5,
"marginRight": 25,
"marginTop": 5
}
},
"type": "ia.input.button"
}
],
"meta": {
"name": "FlexContainer"
},
"position": {
"basis": "50px",
"grow": 1
},
"props": {
"justify": "center"
},
"type": "ia.container.flex"
}
],
"meta": {
"name": "FlexContainer_0"
},
"position": {
"basis": "100px",
"shrink": 0
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\n\tplcList \u003d self.view.custom.PLC_list\n\n\tshowCommand \u003d False\n\n\tfor i in plcList:\n\t\tif value \u003d\u003d i:\n\t\t\tshowCommand \u003d True\n\n\treturn showCommand",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"direction": "column",
"style": {
"classes": "Buttons/Clear-Background"
}
},
"type": "ia.container.flex"
},
{
"children": [
{
@ -385,7 +231,8 @@
"name": "Label"
},
"position": {
"basis": "32px"
"basis": "32px",
"display": false
},
"propConfig": {
"position.display": {
@ -393,6 +240,7 @@
"config": {
"expression": "if({../AlarmTable.props.params.length_of_table_data} \u003d 0, True, False)"
},
"enabled": false,
"type": "expr"
}
}
@ -408,48 +256,64 @@
},
{
"meta": {
"name": "AlarmTable"
"name": "AlarmStatusTable"
},
"position": {
"basis": "733px",
"basis": "400px",
"grow": 1
},
"propConfig": {
"position.display": {
"binding": {
"config": {
"expression": "if({this.props.params.length_of_table_data} \u003e 0, True, False)"
},
"type": "expr"
}
},
"props.params.tagProps[0]": {
"props.filters.active.text": {
"binding": {
"config": {
"path": "view.params.tagProps[0]"
},
"transforms": [
{
"code": "\treturn value[1:]",
"type": "script"
}
],
"type": "property"
}
}
},
"props": {
"params": {
"alarm_states": [
"Shelved",
"Active",
"Not Active"
],
"length_of_table_data": 0,
"show_severity_column": true,
"show_state_column": true,
"table_type": "Docked-East",
"tagProps": [
null
]
"columns": {
"active": {
"displayPath": {
"enabled": false
},
"priority": {
"enabled": false
},
"source": {
"enabled": false
},
"state": {
"enabled": false
}
}
},
"path": "Alarm-Views/AlarmTable"
"filters": {
"active": {
"priorities": {
"critical": false,
"high": false,
"low": false,
"medium": false
},
"states": {
"clearUnacked": false
}
}
},
"refreshRate": 500,
"toolbar": {
"enabled": false
}
},
"type": "ia.display.view"
"type": "ia.display.alarmstatustable"
}
],
"meta": {
@ -498,7 +362,7 @@
},
"transforms": [
{
"code": "\treturn value[:-4]",
"code": "\treturn value[24:]",
"type": "script"
}
],
@ -524,7 +388,8 @@
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
"classes": "PopUp-Styles/InfoLabel",
"overflow": "hidden"
}
},
"type": "ia.container.flex"
@ -602,22 +467,27 @@
"fallbackDelay": 2.5,
"mode": "indirect",
"references": {
"0": "{view.params.tagProps[0]}"
"0": "{view.params.tagProps[0]}",
"fc": "{session.custom.fc}"
},
"tagPath": "[MTN6_SCADA_TAG_PROVIDER]{0}/JR_PB_LT"
"tagPath": "[{fc}_SCADA_TAG_PROVIDER]{0}/Alarm/Pressed"
},
"transforms": [
{
"expression": "coalesce({value},{view.params.forceFaultStatus},0)",
"type": "expression"
},
{
"fallback": "OFF",
"inputType": "scalar",
"mappings": [
{
"input": true,
"output": "ON"
},
{
"input": false,
"output": "OFF"
},
{
"input": true,
"output": "ON"
}
],
"outputType": "scalar",
@ -697,7 +567,10 @@
"tabIndex": 1
},
"props": {
"direction": "column"
"direction": "column",
"style": {
"margin-left": ""
}
},
"type": "ia.container.flex"
},
@ -712,7 +585,7 @@
"component": {
"onActionPerformed": {
"config": {
"script": "\ttag_name \u003d self.view.params.value.tagProps[0]\n\ttag_path \u003d \"[MTN6_SCADA_TAG_PROVIDER]\"+tag_name+\"/Start_PB\"\n\tsystem.perspective.print(tag_path)\n\tsystem.tag.writeBlocking([tag_path],[True])\n\tsystem.perspective.print(tag_path)\n"
"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\"\n\tsystem.tag.writeBlocking([tag_path],[True])"
},
"scope": "G",
"type": "script"
@ -726,8 +599,24 @@
"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": {
"image": {
"icon": {
"path": "material/sync_problem"
}
},
"style": {
"backgroundColor": "#FE9240",
"classes": "Background-Styles/Controller"
},
"text": "RESET JAM"
@ -741,9 +630,20 @@
"position": {
"basis": "35px"
},
"propConfig": {
"meta.visible": {
"binding": {
"config": {
"expression": "if(isNull(tag(\"[\" + {session.custom.fc} + \"_SCADA_TAG_PROVIDER]\" + {view.params.tagProps[0]} + \"/Maintenance/Start_PB\")), False, True)"
},
"type": "expr"
}
}
},
"props": {
"style": {
"classes": "PopUp-Styles/InfoLabel"
"classes": "PopUp-Styles/InfoLabel",
"padding": ""
}
},
"type": "ia.container.flex"
@ -757,7 +657,14 @@
"grow": 1
},
"props": {
"direction": "column"
"direction": "column",
"style": {
"gap": 6,
"paddingBottom": 20,
"paddingLeft": 10,
"paddingRight": 10,
"paddingTop": 13
}
},
"type": "ia.container.flex"
}
@ -769,7 +676,10 @@
"tabIndex": 2
},
"props": {
"direction": "column"
"direction": "column",
"style": {
"paddingTop": 1
}
},
"type": "ia.container.flex"
}
@ -781,7 +691,6 @@
"grow": 1
},
"props": {
"currentTabIndex": 2,
"menuType": "modern",
"tabSize": {
"width": 1000
@ -820,6 +729,12 @@
"basis": "670px",
"grow": 1
},
"props": {
"style": {
"border-top": "1px solid white",
"gap": ""
}
},
"type": "ia.container.flex"
}
],

View File

@ -0,0 +1,572 @@
{
"name": "",
"tagType": "Provider",
"tags": [
{
"name": "System",
"tagType": "Folder",
"tags": [
{
"valueSource": "memory",
"dataType": "String",
"name": "device_count",
"value": "{}",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "String",
"name": "download",
"value": "",
"tagType": "AtomicTag"
},
{
"name": "Station",
"tagType": "Folder",
"tags": [
{
"name": "Buttons",
"tagType": "Folder",
"tags": [
{
"name": "UL1_3_JR_PB1",
"typeId": "Station",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Maintenance",
"tagType": "Folder",
"tags": [
{
"name": "Start_PB",
"tagType": "AtomicTag"
},
{
"name": "Stop_PB",
"tagType": "AtomicTag"
}
]
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Estopped",
"tagType": "AtomicTag"
},
{
"name": "Stopped",
"tagType": "AtomicTag"
},
{
"alarms": [
{
"setpointA": 1.0,
"name": "Pressed"
}
],
"tagGroup": "Alarm",
"name": "Pressed",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "UL1_3_JR_PB2",
"typeId": "Station",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Estopped",
"tagType": "AtomicTag"
},
{
"alarms": [
{
"setpointA": 1.0,
"name": "Pressed"
}
],
"tagGroup": "Alarm",
"name": "Pressed",
"tagType": "AtomicTag"
},
{
"name": "Stopped",
"tagType": "AtomicTag"
}
]
},
{
"name": "Maintenance",
"tagType": "Folder",
"tags": [
{
"name": "Start_PB",
"tagType": "AtomicTag"
},
{
"name": "Stop_PB",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "EPC",
"tagType": "Folder",
"tags": [
{
"name": "UL1_3_EPC2",
"typeId": "Station",
"tagType": "UdtInstance",
"tags": [
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Stopped",
"tagType": "AtomicTag"
},
{
"name": "Estopped",
"tagType": "AtomicTag"
},
{
"name": "Pressed",
"tagType": "AtomicTag"
}
]
},
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Maintenance",
"tagType": "Folder",
"tags": [
{
"name": "Start_PB",
"tagType": "AtomicTag"
},
{
"name": "Stop_PB",
"tagType": "AtomicTag"
}
]
}
]
},
{
"name": "UL1_3_EPC1",
"typeId": "Station",
"tagType": "UdtInstance",
"tags": [
{
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"name": "Pressed",
"tagType": "AtomicTag"
},
{
"name": "Estopped",
"tagType": "AtomicTag"
},
{
"name": "Stopped",
"tagType": "AtomicTag"
}
]
},
{
"name": "Maintenance",
"tagType": "Folder",
"tags": [
{
"name": "Stop_PB",
"tagType": "AtomicTag"
},
{
"name": "Start_PB",
"tagType": "AtomicTag"
}
]
}
]
}
]
}
]
},
{
"valueSource": "memory",
"dataType": "Boolean",
"name": "close_socket",
"value": true,
"tagType": "AtomicTag"
},
{
"name": "Conveyor",
"tagType": "Folder",
"tags": [
{
"name": "UL1_3_VFD1",
"typeId": "TagProp",
"tagType": "UdtInstance",
"tags": [
{
"name": "ALARMST",
"tagType": "AtomicTag"
},
{
"value": 3,
"name": "STATE",
"tagType": "AtomicTag"
},
{
"name": "DCN",
"tagType": "AtomicTag"
}
]
}
]
},
{
"valueSource": "memory",
"dataType": "String",
"name": "IdToStatus",
"value": "{}",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"name": "wbsckt_running",
"value": true,
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"name": "wbsckt_logging",
"value": false,
"tagGroup": "Default",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "String",
"name": "thread_id",
"value": "5610",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "DateTime",
"name": "wbsckt_heartbeat_interval",
"value": 1749560917384,
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "String",
"name": "aws_data",
"value": "{}",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "String",
"name": "wbsckt_messages_send",
"value": "{\"message_list\":[]}",
"tagType": "AtomicTag"
}
]
},
{
"name": "Configuration",
"tagType": "Folder",
"tags": [
{
"valueSource": "memory",
"dataType": "String",
"name": "BACKEND_EDGE_DEVICE",
"value": "quattro",
"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": "memory",
"dataType": "String",
"name": "aws",
"value": "{\"prefix\":\"na\",\"region\":\"us-east-1\"}",
"tagType": "AtomicTag"
},
{
"valueSource": "reference",
"dataType": "String",
"sourceTagPath": "[System]Gateway/SystemName",
"name": "SystemName",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "String",
"name": "SiteLatLng",
"value": "{\"lat\":40.19567891533845, \"lng\":-74.56542081870408}",
"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"
}
]
},
{
"name": "_types_",
"tagType": "Folder",
"tags": [
{
"name": "TagProp",
"tagType": "UdtType",
"tags": [
{
"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.ALARMST"
},
"valueSource": "opc",
"name": "ALARMST",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.DISC"
},
"valueSource": "opc",
"name": "DCN",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
},
{
"name": "Station",
"tagType": "UdtType",
"tags": [
{
"name": "Maintenance",
"tagType": "Folder",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Start_PB"
},
"valueSource": "opc",
"name": "Start_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Maintenance.Stop_PB"
},
"valueSource": "opc",
"name": "Stop_PB",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
},
{
"name": "Alarm",
"tagType": "Folder",
"tags": [
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Pressed"
},
"valueSource": "opc",
"dataType": "Boolean",
"name": "Pressed",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.Stopped"
},
"valueSource": "opc",
"dataType": "Boolean",
"name": "Stopped",
"tagType": "AtomicTag",
"opcServer": "PLC"
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.Alarm.EStopped"
},
"valueSource": "opc",
"dataType": "Boolean",
"name": "Estopped",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
},
{
"opcItemPath": {
"bindType": "parameter",
"binding": "ns\u003d1;s\u003d[PLC]{InstanceName}.HMI.STATE"
},
"valueSource": "opc",
"name": "STATE",
"tagType": "AtomicTag",
"opcServer": "PLC"
}
]
}
]
},
{
"name": "Latency",
"tagType": "Folder",
"tags": [
{
"valueSource": "memory",
"dataType": "String",
"name": "avg_latency",
"value": "",
"tagType": "AtomicTag"
},
{
"valueSource": "reference",
"dataType": "String",
"sourceTagPath": "[~]System/aws_data.value",
"name": "aws_data_copy",
"tagType": "AtomicTag"
},
{
"valueSource": "memory",
"dataType": "Boolean",
"name": "first_pass",
"value": true,
"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": "prev_key",
"value": "",
"tagType": "AtomicTag"
},
{
"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"
}
]
}
]
}