diff --git a/data_list.csv b/data_list.csv new file mode 100644 index 0000000..d678f1f --- /dev/null +++ b/data_list.csv @@ -0,0 +1,217 @@ +"NodeId", "Einheit" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit4.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule2.stHMIInterfaceUnit4.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule3.stHMIInterfaceUnit4.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule1.stHMIInterfaceUnit4.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule2.stHMIInterfaceUnit4.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit1.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit2.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit3.stE31.rValue", "V" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stNS11.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stNS21.stProcessValue.rValue", "%" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP11.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP12.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP21.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stP22.rValue", "mbar" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stT11.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stT21.rValue", "°C" +"ns=4;s=GVL_SCADA.stHMIInterface[1].stHMIInterfaceModule3.stHMIInterfaceUnit4.stE31.rValue", "V" \ No newline at end of file diff --git a/get_scada_list.py b/get_scada_list.py new file mode 100644 index 0000000..4029b8c --- /dev/null +++ b/get_scada_list.py @@ -0,0 +1,81 @@ +import asyncio +from asyncua import Client, Node +from asyncua import ua +from asyncua.crypto.security_policies import SecurityPolicyBasic256Sha256 + +url = "opc.tcp://10.103.32.50:4840" +namespace = "urn:BeckhoffAutomation:Ua:PLC1" +cert = "uaexpert.der" +key = "uaexpert_key.pem" + +async def crawl(node : Node, client): + children = await node.get_children() + for childId in children: + ch = client.get_node(childId) + if await ch.read_node_class() == ua.NodeClass.Object: + await crawl(ch, client) + elif await ch.read_node_class() == ua.NodeClass.Variable: + if ch.nodeid.NamespaceIndex == 4: + await WriteNodeData(ch) + +async def getAllScadaStructures(node: Node, client, node_list: list) -> list: + children = await node.get_children() + for childId in children: + ch = client.get_node(childId) + node_class = await ch.read_node_class() + if node_class == ua.NodeClass.Object: + node_list = await getAllScadaStructures(ch, client, node_list) + elif node_class == ua.NodeClass.Variable: + if ch.nodeid.NamespaceIndex == 4: + display_name = await ch.read_display_name() + if display_name.Text == "rValue": + parent_node = await ch.get_parent() + parent_nodeid = parent_node.nodeid.to_string() + if ".stSetpoint" not in parent_nodeid: + unit_node = client.get_node(f"{parent_nodeid}.sUnit") + unit_node_value = await unit_node.read_value() + node_list.append(f"\"{parent_nodeid}.rValue\", \"{unit_node_value}\"") + return node_list + return node_list + + +async def WriteNodeData(node: Node): + browse_name = await node.read_display_name() + nodeId = node.nodeid.to_string() + if browse_name.Text == "rValue": + data_type = "float32" + print(f"\"{nodeId}\", \"{browse_name.Text}\" ,\"{data_type}\"") + if browse_name.Text == "sUnit": + value = await node.read_value() + print(f"\"{nodeId}\", \"{value}\"") + +async def main(): + print(f"Connecting to {url} ...") + client = Client(url=url) + client.set_user("telegraf") + client.set_password("telegraf") + await client.set_security( + SecurityPolicyBasic256Sha256, + certificate=str(cert), + private_key=str(key), + server_certificate="CP-86768C.der", + ) + print("Connected!") + async with client: + root = client.get_root_node() + # await crawl(root, client) + node_list = [] + print("Crawling opc-ua ...") + node_list = await getAllScadaStructures(root, client, node_list) + print(f"Crawling finished! Found {len(node_list)} entries") + + with open("data_list.csv", "w") as f: + f.write("\"NodeId\", \"Einheit\"\n") + for line in node_list: + f.write(f"{line}\n") + + print("Finished writing file") + + +if __name__ == "__main__": + asyncio.run(main()) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e9d687f Binary files /dev/null and b/requirements.txt differ diff --git a/source/conf.py b/source/conf.py index fc97795..2289615 100644 --- a/source/conf.py +++ b/source/conf.py @@ -24,12 +24,12 @@ language = 'de' # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output #html_theme = 'alabaster' -#html_theme = "sphinx_rtd_theme" -html_theme = "pydata_sphinx_theme" +html_theme = "sphinx_rtd_theme" +#html_theme = "pydata_sphinx_theme" html_static_path = ['_static'] -html_css_files = [ - 'theme_overrides.css', -] +#html_css_files = [ +# 'theme_overrides.css', +#] html_theme_options = { # ... diff --git a/source/general_overview/changelog.rst b/source/general_overview/changelog.rst index 486e136..e060d32 100644 --- a/source/general_overview/changelog.rst +++ b/source/general_overview/changelog.rst @@ -10,4 +10,88 @@ Changelog Alle Versionsänderung bei den Schnittstellen und am BMS werden hier dokumentiert und aufgelistet. Die Version wird nach dem folgendem Muster aufgebaut. ``MAJOR.MINOR.PATCH``, wobei ``MAJOR``, -``MINOR`` und ``PATCH`` aus Zahlen bestehen. \ No newline at end of file +``MINOR`` und ``PATCH`` aus Zahlen bestehen. + +Die Versionierung folgt den folgenen Regel: + +- Eine Änderung der ``MAJOR`` Version kann Änderungen an der Schnittstelle haben, + welche nicht mit der vorherigen Version kompatibel sein müssen. +- ``MINOR`` Änderungen enthalten Verbesserungen oder fügen neue Features hinzu. + Diese Änderungen sind jedoch zu vorherigen Versionen kompatibel. +- Eine Änderung an ``PATCH`` beschreibt behebungen von fehlern oder kleine Verbesserungen der aktuellen Version. + +***** +1.0.0 +***** +In dieser Version wurde das Interface bezüglich der Fehlermeldungen angepasst. +Die bisherigen Register (11.040 und 11.044) sind nun obsolet und werden durch die Register 13.000 - 15.000 ersetzt. +Dadurch können nun Fehler und Warnung bis zu den einzelnen Sensoren einer Unit hinunter vom EMS angezeigt werden. + +Weiterhin wurden einige Register als nicht implementiert markiert, da die Entwicklung der entsprechenden Algorithmen, +welche für die Berechnung der Werte zuständig wären, pausiert worden ist. +Auch die Register 12.002 und 12.004 wurde als obsolet markiert, da die Batterie in diesem Projekt nicht mit Blindleistung +betrieben werden soll. + + +Hinzugekommen +============= +- Register 13.000 - 13.004 +- Register 14.000 - 14.046 +- Register 15.000 - 15.046 + + +Geändert +======== +- Register 12.002 - Setpoint CosPhi - Keine Funktion mehr +- Register 12.004 - Reactive Power Type - Keine Funktion mehr +- Register 11.002 bis 11.010 - Werden nicht bedient +- Register 11.022 - Wird nicht bedient + + +Obsolet +======= +- Register 11.040 - Warning Bitmap +- Register 11.044 - Error Bitmap +- Register 12.002 - Setpoint CosPhi +- Register 12.004 - Reactive Power Type + + +Entfernt +======== +- + + +Fixed +===== +- + + + +***** +0.9.0 +***** +- Erste Version des Interfaces. + + +Hinzugekommen +============= +- Erste Version des Interfaces. + + +Geändert +======== +- + +Obsolet +======= +- + + +Entfernt +======== +- + + +Fixed +===== +- \ No newline at end of file diff --git a/source/index.rst b/source/index.rst index 9d447cd..e6890ba 100644 --- a/source/index.rst +++ b/source/index.rst @@ -22,10 +22,10 @@ Willkommen zur Dokumentation des Uniperprojektes. Die Dokumentation gliedert sich in folgende Teile: -#. Generelle Übersicht +#. :ref:`Generelle_Übersicht` #. Betriebsmodi -#. OPC-UA Schnittstellenbeschreibung -#. Modbus-TCP/IP Schnittstellenbeschreibung +#. :ref:`OPC-UA_Schnittstellenbeschreibung` +#. :ref:`Modbus` #. Fehlermeldungen #. Entwickler Handbuch @@ -65,9 +65,26 @@ Dokumentations-Regeln Alle genannten Abschnitte sind hier zu finden: +.. _Generelle_Übersicht: + .. toctree:: :maxdepth: 2 - :caption: Contents: + :caption: Generelle Übersicht: ./general_overview/changelog + +.. _OPC-UA_Schnittstellenbeschreibung: + +.. toctree:: + :maxdepth: 2 + :caption: OPC-UA + + ./opcua/opcua_schnittstelle + +.. _Modbus: + +.. toctree:: + :maxdepth: 2 + :caption: Modbus-TCP/IP + ./modbus/EMS_Schnittstelle \ No newline at end of file diff --git a/source/modbus/EMS_Schnittstelle.rst b/source/modbus/EMS_Schnittstelle.rst index 598baae..a8b17d8 100644 --- a/source/modbus/EMS_Schnittstelle.rst +++ b/source/modbus/EMS_Schnittstelle.rst @@ -14,6 +14,16 @@ Allgemeine Informationen zu der Schnittstelle zwischen BMS und EMS: * Der Adressbereicht ist: 10.000...16.000 +************************ +Verbindungseinstellungen +************************ +IP-Adresse + 192.168.42.1 + +Port + 502 + + ********** Datentypen ********** diff --git a/source/opcua/RuI_Uniper.pdf b/source/opcua/RuI_Uniper.pdf new file mode 100644 index 0000000..8ec5c6e Binary files /dev/null and b/source/opcua/RuI_Uniper.pdf differ diff --git a/source/opcua/node_list.ods b/source/opcua/node_list.ods new file mode 100644 index 0000000..72b8c4f Binary files /dev/null and b/source/opcua/node_list.ods differ diff --git a/source/opcua/opcua_schnittstelle.rst b/source/opcua/opcua_schnittstelle.rst new file mode 100644 index 0000000..5462a11 --- /dev/null +++ b/source/opcua/opcua_schnittstelle.rst @@ -0,0 +1,52 @@ +#################### +OPC-UA-Schnittstelle +#################### + +Im folgenden wird die OPC-UA Schnittstelled es BMS beschrieben. Diese Schnittstelle +dient zum aktuellen Zeitpunkt nur zum Auslesen von Prozessdaten. Die Steuerung der Batterie erfolgt ausschließlich +über die Modbus-Schnittstelle. + + +************************ +Verbindungseinstellungen +************************ + +IP-Adresse + 10.103.32.50 + +Port + 4840 + +Security Policies + * Basic256Sha256 + * Aes256_Sha256_RsaPss + * Aes128_Sha256_RsaOaep + + +*************************** +Aufbau des SCADA-Interfaces +*************************** +Im folgenden wird ein Überblick über das SCADA-Interface des BMS gegeben. +Das Interface besteht aus einem Array von Datenstrukturen. +Dabei besteht ist jeder Arrayeintrag einem entsprechendem String zugeordnet. +Die Root-NodeId für das Interface ist somit folgende: ``ns=4;s=GVL_SCADA.stHMIInterface[i]``, +wobei ``i = 0`` dem ersten String, ``i = 1`` dem zweiten String etc. entspricht. + +Innerhalb eines Strings gibt es jeweils drei weitere Datenstrukturen, welche die drei Module eines Strings repräsentieren. +Jedes Modul wiederum, besteht aus vier weiteren Datenstrukturen, welche die vier einzelnen Units innerhalb eines Moduls beschreiben. +Zu guter letzt enthalten die Units Datenstrukturen für alle ihnen zugehörigen Aktoren und Sensoren. +Diese sind anhand ihrer im R&I (siehe :download:`RuI_Uniper.pdf`) angegebenen Tag-Nummern benannt. +Somit hat zum Beispiel, der Posolyt Temperatursensor, die Bezeichnung ``stT11``. +Die komplette NodeId des Sensors der Unit eins im Modul eins im String eins wäre sommit::: + + ns=4;s=GVL_SCADA.stHMIInterface[0].stHMIInterfaceModule1.stHMIInterfaceUnit1.stT11 + +Innerhalb dieser Datenstruktur gibt es den Member ``rValue``, welcher den aktuellen Prozesswert enthält. +Über die Datenstrukturen können noch mehr Informationen ausgelesen werden. Nachfolgend ist eine Liste mit NodeIds, +welche die Werte auflistet, welche sich als interessant zu beobachten herausgestellt haben. + + +******* +NodeIds +******* +Eine Auflistung aller NodeIds, deren Datentyp, Einheit und Beschreibung ist in der Datei :download:`node_list.ods` zu finden.