diff --git a/.gitignore b/.gitignore
index 178135c..b1113da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,4 @@
/dist/
+__pycache__/
+~$*
+MTPPy.egg-info/
\ No newline at end of file
diff --git a/examples/data_objects.py b/examples/data_objects.py
new file mode 100644
index 0000000..27dafd8
--- /dev/null
+++ b/examples/data_objects.py
@@ -0,0 +1,270 @@
+from opcua import Client
+
+from mtppy.opcua_server_pea import OPCUAServerPEA
+
+from mtppy.indicator_elements import *
+from mtppy.operation_elements import *
+from mtppy.active_elements import *
+from mtppy.suc_data_assembly import SUCDataAssembly
+from mtppy.attribute import Attribute
+
+import time
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s]; '
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.indicator_elements").setLevel(logging.DEBUG)
+logging.getLogger("mtppy.operation_elements").setLevel(logging.DEBUG)
+logging.getLogger("mtppy.active_elements").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
+
+
+module = OPCUAServerPEA(endpoint="opc.tcp://127.0.0.1:4840/")
+
+### Indicator elements ###
+bin_view = BinView('indicator_bin', 'demo object', v_state_0='Off', v_state_1='On')
+dint_view = DIntView('indicator_dint', 'demo object', v_scl_min=0, v_scl_max=100, v_unit=1342)
+ana_view = AnaView('indicator_ana', 'demo object', v_scl_min=0, v_scl_max=100, v_unit=1342)
+str_view = StringView('indicator_str', 'demo object')
+
+# add indicator elements to the module
+module.add_indicator_element(bin_view)
+module.add_indicator_element(dint_view)
+module.add_indicator_element(ana_view)
+module.add_indicator_element(str_view)
+
+
+### Operation elements ###
+bin_man = BinMan('op_bin', 'demo object', v_state_0='Off', v_state_1='On', init_value=0)
+dint_man = DIntMan('op_dint', 'demo object', v_min=0, v_max=100,
+ v_scl_min=0, v_scl_max=100, v_unit=1342, init_value=0)
+ana_man = AnaMan('op_ana', 'demo object', v_min=0, v_max=100,
+ v_scl_min=0, v_scl_max=100, v_unit=1342, init_value=0)
+
+# add operation elements to the module
+module.add_operation_element(bin_man)
+module.add_operation_element(dint_man)
+module.add_operation_element(ana_man)
+
+
+## Internal operation elements ##
+bin_man_int = BinManInt('op_bin_int', 'demo object', v_state_0='Off', v_state_1='On', init_value=0)
+dint_man_int = DIntManInt('op_dint_int', 'demo object', v_min=0, v_max=100,
+ v_scl_min=0, v_scl_max=100, v_unit=1342, init_value=0)
+ana_man_int = AnaManInt('op_ana_int', 'demo object', v_min=0, v_max=100,
+ v_scl_min=0, v_scl_max=100, v_unit=1342, init_value=0)
+
+# add internal operation elements to the module
+module.add_operation_element(bin_man_int)
+module.add_operation_element(dint_man_int)
+module.add_operation_element(ana_man_int)
+
+
+### Active elements ###
+bin_vlv = BinVlv('active_bin', 'demo object', safe_pos=0, safe_pos_en=True,
+ perm_en=True, intl_en=True, prot_en=True)
+
+# add active elements to the module
+module.add_active_element(bin_vlv)
+
+
+### Custom Data Assembly ###
+# it is also possible to create custom data assemblies by inheriting from SUCDataAssembly
+# Attributes can be using the self._add_attribute() function inside the __init__ function
+class CustomDataAssembly(SUCDataAssembly):
+ def __init__(self, tag_name: str, tag_description: str = '', pol_request: int = 0):
+ super().__init__(tag_name, tag_description)
+
+ self._add_attribute(Attribute('POLRequest', int,
+ init_value=pol_request, sub_cb=self._set_pol_request))
+ self._add_attribute(Attribute('PEAResponse', str, init_value='Hello World'))
+
+ self.pol_request = pol_request
+
+ def set_pea_response(self, value: str):
+ self.attributes['PEAResponse'].set_value(value)
+ _log.info(f'PEAResponse set to {value}')
+
+ def get_pol_request(self) -> int:
+ return self.pol_request
+
+ def _set_pol_request(self, value: int):
+ # ignore reset callback
+ if value == 0:
+ return
+ self.pol_request = value
+ _log.info(f'POLRequest set to {value} ')
+
+ if value == 42:
+ self.set_pea_response('The answer to life, the universe and everything.')
+ else:
+ self.set_pea_response(f'POLRequest was {value}.')
+
+ self.attributes['POLRequest'].set_value(0) # reset POLRequest after reading
+
+
+custom_da = CustomDataAssembly('custom_da_1', 'demo object', pol_request=123)
+module.add_custom_data_assembly(custom_da, "custom_data_assemblies")
+
+# start the OPC UA server
+module.run_opcua_server()
+
+# while True:
+# time.sleep(1)
+
+###############################################################################################
+# Test
+opcua_client = Client(module.endpoint)
+opcua_client.connect()
+time.sleep(1)
+
+
+print('--- Set values of indicator elements ---')
+bin_view.set_v(1)
+dint_view.set_v(55)
+ana_view.set_v(33.3)
+str_view.set_v('Hello MTPPy!')
+time.sleep(1)
+
+print('--- Print values of indicator elements (Simulating HMI side) ---')
+print(f"bin_view: {opcua_client.get_node('ns=3;s=indicator_elements.indicator_bin.V').get_value()}")
+print(f"dint_view: {opcua_client.get_node('ns=3;s=indicator_elements.indicator_dint.V').get_value()}")
+print(f"ana_view: {opcua_client.get_node('ns=3;s=indicator_elements.indicator_ana.V').get_value()}")
+print(f"str_view: {opcua_client.get_node('ns=3;s=indicator_elements.indicator_str.V').get_value()}")
+time.sleep(2)
+
+
+print()
+print('--- Set values of operation elements (Simulating HMI side) ---')
+opcua_client.get_node('ns=3;s=operation_elements.op_bin.VMan').set_value(1)
+opcua_client.get_node('ns=3;s=operation_elements.op_dint.VMan').set_value(77)
+opcua_client.get_node('ns=3;s=operation_elements.op_ana.VMan').set_value(44.4)
+time.sleep(1)
+
+print('--- Print values of operation elements ---')
+print(f"bin_man: {bin_man.get_v_out()}")
+print(f"dint_man: {dint_man.get_v_out()}")
+print(f"ana_man: {ana_man.get_v_out()}")
+time.sleep(2)
+
+
+print()
+print('--- Set values of internal operation elements ---')
+bin_man_int.set_v_int(1)
+dint_man_int.set_v_int(88)
+ana_man_int.set_v_int(55.5)
+time.sleep(1)
+
+print('--- Print values of internal operation elements ---')
+print(
+ f"bin_man_int: {opcua_client.get_node('ns=3;s=operation_elements.op_bin_int.VOut').get_value()}")
+print(
+ f"dint_man_int: {opcua_client.get_node('ns=3;s=operation_elements.op_dint_int.VOut').get_value()}")
+print(
+ f"ana_man_int: {opcua_client.get_node('ns=3;s=operation_elements.op_ana_int.VOut').get_value()}")
+time.sleep(2)
+
+print('--- Set SrcChannel to 0 (operator switches)')
+opcua_client.get_node(
+ 'ns=3;s=operation_elements.op_bin_int.op_src_mode.SrcChannel').set_value(False)
+print('--- Set to Manual via operator ---')
+opcua_client.get_node('ns=3;s=operation_elements.op_bin_int.op_src_mode.SrcManOp').set_value(True)
+print('--- Set value via operator ---')
+opcua_client.get_node('ns=3;s=operation_elements.op_bin_int.VMan').set_value(0)
+time.sleep(1)
+print(f"bin_man_int: {bin_man_int.get_v_out()}")
+time.sleep(1)
+
+print('--- Set SrcChannel to 1 (internal control) ---')
+opcua_client.get_node(
+ 'ns=3;s=operation_elements.op_bin_int.op_src_mode.SrcChannel').set_value(True)
+print('--- Set to Automatic via internal control ---')
+opcua_client.get_node('ns=3;s=operation_elements.op_bin_int.op_src_mode.SrcIntAut').set_value(True)
+print('--- Set value via internal control ---')
+bin_man_int.set_v_int(1)
+time.sleep(1)
+print(
+ f"bin_man_int: {opcua_client.get_node('ns=3;s=operation_elements.op_bin_int.VOut').get_value()}")
+time.sleep(2)
+
+
+print()
+print('--- Set values of active element ---')
+bin_vlv.set_open_aut(True)
+time.sleep(1)
+print(
+ f"bin_vlv position: {opcua_client.get_node('ns=3;s=active_elements.active_bin.Ctrl').get_value()}")
+time.sleep(1)
+bin_vlv.set_close_aut(True)
+time.sleep(1)
+print(
+ f"bin_vlv position: {opcua_client.get_node('ns=3;s=active_elements.active_bin.Ctrl').get_value()}")
+time.sleep(2)
+
+print('--- Demonstrate bin_vlv locks ---')
+locks = bin_vlv.locks
+
+print(f"Initial permit status: {locks.permit_status()}")
+print(f"Initial interlock status: {locks.interlock_status()}")
+print(f"Initial protect status: {locks.protect_status()}")
+
+# Enable and disable permit
+locks.set_permit(False)
+print(f"Permit status after disabling: {locks.permit_status()}")
+bin_vlv.set_open_aut(True)
+time.sleep(1)
+print(
+ f"bin_vlv position (should not change): {opcua_client.get_node('ns=3;s=active_elements.active_bin.Ctrl').get_value()}")
+time.sleep(1)
+locks.set_permit(True)
+print(f"Permit status after enabling: {locks.permit_status()}")
+time.sleep(1)
+bin_vlv.set_open_aut(True)
+time.sleep(1)
+print(
+ f"bin_vlv position (should change now): {opcua_client.get_node('ns=3;s=active_elements.active_bin.Ctrl').get_value()}")
+time.sleep(2)
+
+# Enable and disable interlock
+locks.set_interlock(True)
+print(f"Interlock status after enabling: {locks.interlock_status()}")
+sleep(1)
+print(f"Interlock triggered, valve should close automatically: valve status: {bin_vlv.get_ctrl()}")
+locks.set_interlock(False)
+print(f"Interlock status after disabling: {locks.interlock_status()}")
+
+# Enable and disable protect
+locks.set_protect(True)
+print(f"Protect status after enabling: {locks.protect_status()}")
+bin_vlv.reset_vlv()
+print(f"Protect status after disabling: {locks.protect_status()}")
+time.sleep(2)
+
+
+print()
+print('--- Set and read Custom Data Assembly attributes ---')
+print("--- Set POLRequest to 42 (Simulating HMI side) ---")
+opcua_client.get_node('ns=3;s=custom_data_assemblies.custom_da_1.POLRequest').set_value(42)
+time.sleep(1)
+print("--- Read POLRequest and PEAResponse attributes ---")
+print(f"POLRequest: {custom_da.get_pol_request()}")
+print(
+ f"PEAResponse: {opcua_client.get_node('ns=3;s=custom_data_assemblies.custom_da_1.PEAResponse').get_value()}")
+time.sleep(1)
+print("--- Try setting the PEAResponse attribute from HMI side (should have no effect) ---")
+try:
+ opcua_client.get_node('ns=3;s=custom_data_assemblies.custom_da_1.PEAResponse').set_value(
+ 'PEAResponse set from from HMI')
+except Exception as e:
+ print(f"Caught exception as expected: {e}")
+time.sleep(1)
+print(
+ f"PEAResponse on server (should not be changed): {opcua_client.get_node('ns=3;s=custom_data_assemblies.custom_da_1.PEAResponse').get_value()}")
+time.sleep(2)
+
+print('--- Demo complete ---')
+opcua_client.disconnect()
+module.get_opcua_server().stop()
diff --git a/examples/virtual_pea_exception_handling.py b/examples/virtual_pea_exception_handling.py
new file mode 100644
index 0000000..01a8797
--- /dev/null
+++ b/examples/virtual_pea_exception_handling.py
@@ -0,0 +1,159 @@
+import time
+import random
+import logging
+
+from opcua import Client
+
+from mtppy.opcua_server_pea import OPCUAServerPEA
+from mtppy.service import Service
+from mtppy.procedure import Procedure
+from mtppy.indicator_elements import *
+
+from mtppy.command_codes import CommandCodes
+from mtppy.state_codes import StateCodes
+
+CommandCodes = CommandCodes()
+StateCodes = StateCodes()
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s];'
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.service").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
+
+
+class ErrorException(Exception):
+ pass
+
+
+class WarningException(Exception):
+ pass
+
+
+class RandomNumberGenerator(Service):
+ def __init__(self, tag_name, tag_description):
+ super().__init__(tag_name, tag_description, self.exception_callback)
+
+ # Procedure definition
+ proc_1 = Procedure(1, 'default', is_self_completing=False, is_default=True)
+
+ # Adding procedure report value
+ proc_1.add_report_value(
+ AnaView('generated_value', v_scl_min=0, v_scl_max=100, v_unit=23),
+ )
+
+ # Allocating procedure to the service
+ self.add_procedure(proc_1)
+
+ self.enable_hold_loop()
+
+ self.cycle_count = 0
+
+ def starting(self):
+ _log.info('- Starting -')
+ _log.info('Applying procedure parameters...')
+ self.cycle_count = 0
+
+ def execute(self):
+ _log.info('- Execute -')
+ lower_bound = 0
+ upper_bound = 10
+ while self.is_state('execute'):
+ _log.info(f'Execute cycle {self.cycle_count}')
+
+ # Execute random number generation
+ generated_number = random.randint(lower_bound, upper_bound)
+
+ # Return report value
+ self.procedures[1].report_values['generated_value'].set_v(generated_number)
+ if generated_number == 5:
+ raise WarningException('This is a warning exception for testing.')
+ if generated_number == 8:
+ raise ErrorException('This is an error exception for testing.')
+ self.cycle_count += 1
+ time.sleep(0.1)
+
+ def completing(self):
+ _log.info('- Completing -')
+
+ def exception_callback(self, exception: Exception):
+ if isinstance(exception, WarningException):
+ _log.warning(f'Warning exception handled in exception_callback: {str(exception)}')
+ # handle warning exception (e.g., set service to hold state)
+ self.state_machine.hold()
+ elif isinstance(exception, ErrorException):
+ _log.error(f'Error exception handled in exception_callback: {str(exception)}')
+ # handle error exception (e.g., set service to aborted state)
+ self.state_machine.abort()
+ else:
+ _log.error(f'Unknown exception handled in exception_callback: {str(exception)}')
+ self.state_machine.abort()
+
+ # starting, execute, completing methods have to be defined for each service
+ # other state methods (see service documentation) can be overridden as needed,
+ # by default they only log state entries
+
+
+if __name__ == '__main__':
+
+ module = OPCUAServerPEA()
+
+ # Service definition
+ service_1 = RandomNumberGenerator('rand_num_gen', 'This services generates random number')
+ module.add_service(service_1)
+
+ # Start server
+ print('--- Start OPC UA server ---')
+ module.run_opcua_server()
+
+ ###############################################################################################
+ # Test
+ opcua_client = Client(module.endpoint)
+ opcua_client.connect()
+ time.sleep(1)
+
+ print('--- Set service to Operator mode ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOpOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Start service ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.start)
+
+ cycle = 0
+ while cycle < 12:
+ if opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.StateCur').get_value() == StateCodes.held:
+ print(f'--- Unholding service at cycle ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.unhold)
+ if opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.StateCur').get_value() == StateCodes.aborted:
+ print(f'--- Resetting service at cycle ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ break
+
+ time.sleep(1)
+ cycle += 1
+
+ if cycle >= 12:
+ print('--- Complete service ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.complete)
+ time.sleep(1)
+
+ print('--- Reset service ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ time.sleep(1)
+
+ time.sleep(1)
+ print('--- Set service to Offline mode ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOffOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Demo complete ---')
+ opcua_client.disconnect()
+ module.get_opcua_server().stop()
diff --git a/examples/virtual_pea_minimal.py b/examples/virtual_pea_minimal.py
index 8e9f797..e899cca 100644
--- a/examples/virtual_pea_minimal.py
+++ b/examples/virtual_pea_minimal.py
@@ -1,17 +1,32 @@
+import time
+import random
+from datetime import datetime
+import logging
+
+from opcua import Client
+
from mtppy.opcua_server_pea import OPCUAServerPEA
from mtppy.mtp_generator import MTPGenerator
from mtppy.service import Service
from mtppy.procedure import Procedure
-from mtppy.operation_elements import *
+from mtppy.parameter_elements import *
from mtppy.indicator_elements import *
from mtppy.active_elements import *
-import time
-import random
-from datetime import datetime
+from mtppy.command_codes import CommandCodes
+from mtppy.state_codes import StateCodes
+
+CommandCodes = CommandCodes()
+StateCodes = StateCodes()
-logging.basicConfig(format='%(asctime)s.%(msecs)03d [%(levelname)s] %(module)s.%(funcName)s: %(message)s',
- datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO)
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s];'
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.service").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
class RandomNumberGenerator(Service):
@@ -19,94 +34,55 @@ def __init__(self, tag_name, tag_description):
super().__init__(tag_name, tag_description)
# Procedure definition
- proc_0 = Procedure(0, 'cont', is_self_completing=False, is_default=True)
+ proc_1 = Procedure(1, 'cont', is_self_completing=False, is_default=True)
# Adding two procedure parameters
- proc_0.add_procedure_parameter(
+ proc_1.add_procedure_parameter(
DIntServParam('lower_bound', v_min=0, v_max=100, v_scl_min=0, v_scl_max=100, v_unit=23))
- proc_0.add_procedure_parameter(
+ proc_1.add_procedure_parameter(
DIntServParam('upper_bound', v_min=0, v_max=100, v_scl_min=0, v_scl_max=100, v_unit=23))
+ # optional: link op_src_mode of procedure parameters to service op_src_mode
+ for parameter in proc_1.procedure_parameters.values():
+ self.op_src_mode.add_linked_op_src_mode(parameter.op_src_mode)
+
# Adding procedure report value
- proc_0.add_report_value(
+ proc_1.add_report_value(
AnaView('generated_value', v_scl_min=0, v_scl_max=100, v_unit=23),
)
# Allocating procedure to the service
- self.add_procedure(proc_0)
-
- def idle(self):
- print('- Idle -')
- cycle = 0
- while self.is_state('idle'):
- print(f'Idle cycle {cycle}')
- print('Doing nothing...')
- cycle += 1
- time.sleep(1)
+ self.add_procedure(proc_1)
def starting(self):
- print('- Starting -')
- print('Applying procedure parameters...')
- self.state_change()
+ _log.info('- Starting -')
+ _log.info('Applying procedure parameters...')
def execute(self):
- print('- Execute -')
+ _log.info('- Execute -')
cycle = 0
while self.is_state('execute'):
- print('Execute cycle %i' % cycle)
+ _log.info('Execute cycle %i' % cycle)
# Read procedure parameters
- lower_bound = self.procedures[0].procedure_parameters['lower_bound'].get_v_out()
- upper_bound = self.procedures[0].procedure_parameters['upper_bound'].get_v_out()
+ lower_bound = self.procedures[1].procedure_parameters['lower_bound'].get_v_out()
+ upper_bound = self.procedures[1].procedure_parameters['upper_bound'].get_v_out()
# Execute random number generation
generated_number = random.randint(lower_bound, upper_bound)
# Return report value
- self.procedures[0].report_values['generated_value'].set_v(generated_number)
+ self.procedures[1].report_values['generated_value'].set_v(generated_number)
cycle += 1
time.sleep(0.1)
def completing(self):
- self.state_change()
+ _log.info('- Completing -')
- def completed(self):
- pass
-
- def pausing(self):
- pass
-
- def paused(self):
- pass
-
- def resuming(self):
- pass
-
- def holding(self):
- pass
-
- def held(self):
- pass
-
- def unholding(self):
- pass
-
- def stopping(self):
- pass
-
- def stopped(self):
- pass
-
- def aborting(self):
- pass
-
- def aborted(self):
- pass
-
- def resetting(self):
- print('- Resetting -')
- self.state_change()
+ # starting, execute, completing methods have to be defined for each service
+ # other state methods (see service documentation) can be overridden as needed,
+ # by default they only log state entries
if __name__ == '__main__':
@@ -119,7 +95,7 @@ def resetting(self):
manifest_template_path = '../manifest_files/manifest_template.xml'
mtp_generator = MTPGenerator(writer_info_dict, export_manifest_path, manifest_template_path)
- module = OPCUAServerPEA(mtp_generator)
+ module = OPCUAServerPEA(mtp_generator, endpoint="opc.tcp://127.0.0.1:4840/")
# Service definition
service_1 = RandomNumberGenerator('rand_num_gen', 'This services generates random number')
@@ -133,36 +109,49 @@ def resetting(self):
print('--- Start OPC UA server ---')
module.run_opcua_server()
+ ###############################################################################################
# Test
- opcua_server = module.get_opcua_server()
- opcua_ns = module.get_opcua_ns()
+ opcua_client = Client(module.endpoint)
+ opcua_client.connect()
time.sleep(1)
print('--- Set procedure parameters to Operator mode ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpOp').set_value(True)
- opcua_server.get_node('ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpOp').set_value(True)
+ opcua_client.get_node(
+ 'ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpOp').set_value(True)
+ opcua_client.get_node(
+ 'ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpOp').set_value(True)
time.sleep(1)
print('--- Set procedure parameter values ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOp').set_value(40)
- opcua_server.get_node('ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOp').set_value(60)
+ opcua_client.get_node(
+ 'ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOp').set_value(40)
+ opcua_client.get_node(
+ 'ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOp').set_value(60)
time.sleep(1)
print('--- Set service to Operator mode ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOpOp').set_value(True)
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOpOp').set_value(True)
time.sleep(1)
print('--- Start service ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(4)
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.start)
time.sleep(10)
print('--- Complete service ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(1024)
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.complete)
time.sleep(1)
print('--- Reset service ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(2)
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ time.sleep(1)
- print('--- Set service dummy to Offline mode ---')
- opcua_server.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOffOp').set_value(True)
+ print('--- Set service to Offline mode ---')
+ opcua_client.get_node('ns=3;s=services.rand_num_gen.op_src_mode.StateOffOp').set_value(True)
time.sleep(1)
+
+ print('--- Demo complete ---')
+ opcua_client.disconnect()
+ module.get_opcua_server().stop()
diff --git a/examples/virtual_pea_with_events.py b/examples/virtual_pea_with_events.py
new file mode 100644
index 0000000..f58e50d
--- /dev/null
+++ b/examples/virtual_pea_with_events.py
@@ -0,0 +1,205 @@
+import time
+import threading
+import logging
+
+from opcua import Client
+
+from mtppy.opcua_server_pea import OPCUAServerPEA
+from mtppy.service import Service
+from mtppy.procedure import Procedure
+from mtppy.parameter_elements import *
+from mtppy.indicator_elements import *
+from mtppy.active_elements import *
+
+from mtppy.command_codes import CommandCodes
+from mtppy.state_codes import StateCodes
+
+CommandCodes = CommandCodes()
+StateCodes = StateCodes()
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s]; '
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.service").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
+
+external_event = threading.Event()
+
+###################################################################################################
+# Function to wait for two events at the same time
+# !!! This modifies the standard threading.Event, could break if it would be changed in the library !!!
+
+
+def _or_set(self):
+ # calls the original set method and then calls the changed callback
+ self._set()
+ self.changed()
+
+
+def _or_clear(self):
+ # calls the original clear method and then calls the changed callback
+ self._clear()
+ self.changed()
+
+
+def _orify(e: threading.Event, changed_callback):
+ # save original methods to also be called when set/clear is called
+ e._set = e.set
+ e._clear = e.clear
+ # add changed callback, which is called when the event is set or cleared
+ e.changed = changed_callback
+ # redefine set and clear methods to call modified methods that also call changed
+ e.set = lambda: _or_set(e)
+ e.clear = lambda: _or_clear(e)
+
+
+def OrEvent(*events: threading.Event):
+ or_event = threading.Event()
+
+ # check if any of the events are the same
+ if len(events) != len(set(events)):
+ raise ValueError("Events must be unique.")
+
+ # check if any of the events are already orified
+ for e in events:
+ if hasattr(e, 'changed'):
+ raise ValueError("Events must not be orified already.")
+
+ def changed():
+ bools = [e.is_set() for e in events]
+ if any(bools):
+ or_event.set()
+ else:
+ or_event.clear()
+
+ # Make every event able to call the changed function
+ # when it is set or cleared.
+ for e in events:
+ _orify(e, changed)
+ changed()
+ return or_event
+
+
+def wait_for_either(e1, e2, timeout: float = None) -> bool:
+ """
+ Waits for either of the two events to be set.
+ Args:
+ e1 (threading.Event): First event to wait for.
+ e2 (threading.Event): Second event to wait for.
+ timeout (float): Maximum time to wait in seconds. If None, waits indefinitely.
+
+ Returns:
+ bool: True if either event is set, False if timeout occurs.
+ """
+ return OrEvent(e1, e2).wait(timeout=timeout)
+###################################################################################################
+
+
+class WaitForExternalEvent(Service):
+ def __init__(self, tag_name, tag_description):
+ super().__init__(tag_name, tag_description)
+
+ # Procedure definition
+ proc_1 = Procedure(1, 'default', is_self_completing=True, is_default=True)
+
+ # Adding procedure report value
+ proc_1.add_report_value(
+ BinView('event_status', v_state_0='no', v_state_1='yes'),
+ )
+
+ # Allocating procedure to the service
+ self.add_procedure(proc_1)
+
+ def starting(self):
+ _log.info('- Starting -')
+ _log.info('Creating external event...')
+
+ global external_event
+ external_event = threading.Event()
+
+ def execute(self):
+ _log.info('- Execute -')
+
+ global external_event
+
+ # This will wait until either the external event is set
+ # or the service is requested to stop.
+ wait_for_either(external_event, self.get_state_stop_event())
+
+ if external_event.is_set():
+ _log.info('External event detected!')
+ self.get_current_procedure().report_values['event_status'].set_v(1)
+ else:
+ _log.info('Service stop requested before external event.')
+ self.get_current_procedure().report_values['event_status'].set_v(0)
+
+ def completing(self):
+ _log.info('- Completing -')
+
+ # starting, execute, completing methods have to be defined for each service
+ # other state methods (see service documentation) can be overridden as needed,
+ # by default they only log state entries
+
+
+if __name__ == '__main__':
+ module = OPCUAServerPEA(endpoint="opc.tcp://127.0.0.1:4840/")
+
+ # Service definition
+ service = WaitForExternalEvent('WaitForEvent',
+ 'Service that waits for an external event')
+ module.add_service(service)
+
+ # Start server
+ print('--- Start OPC UA server ---')
+ module.run_opcua_server()
+
+ ###############################################################################################
+ # Test
+ opcua_client = Client(module.endpoint)
+ opcua_client.connect()
+ time.sleep(1)
+
+ print('--- Set service to Operator mode ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.op_src_mode.StateOpOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Start service ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.state_machine.CommandOp').set_value(
+ CommandCodes.start)
+ time.sleep(4)
+
+ print('--- Trigger external event ---')
+ external_event.set()
+ time.sleep(2)
+
+ print('--- Reset service ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ external_event.clear()
+ time.sleep(1)
+
+ print('--- Start service ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.state_machine.CommandOp').set_value(
+ CommandCodes.start)
+ time.sleep(4)
+
+ print('--- Stop service before external event ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.state_machine.CommandOp').set_value(
+ CommandCodes.stop)
+ time.sleep(2)
+
+ print('--- Reset service ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ time.sleep(1)
+
+ print('--- Set service to Offline mode ---')
+ opcua_client.get_node('ns=3;s=services.WaitForEvent.op_src_mode.StateOffOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Demo complete ---')
+ opcua_client.disconnect()
+ module.get_opcua_server().stop()
diff --git a/examples/virtual_pea_with_pause_hold_restart.py b/examples/virtual_pea_with_pause_hold_restart.py
new file mode 100644
index 0000000..a6fa55f
--- /dev/null
+++ b/examples/virtual_pea_with_pause_hold_restart.py
@@ -0,0 +1,175 @@
+import time
+import logging
+
+from opcua import Client
+
+from mtppy.opcua_server_pea import OPCUAServerPEA
+from mtppy.service import Service
+from mtppy.procedure import Procedure
+from mtppy.parameter_elements import *
+from mtppy.indicator_elements import *
+from mtppy.active_elements import *
+
+from mtppy.command_codes import CommandCodes
+from mtppy.state_codes import StateCodes
+
+CommandCodes = CommandCodes()
+StateCodes = StateCodes()
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s]; '
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.service").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
+
+
+class Counter(Service):
+ def __init__(self, tag_name, tag_description):
+ super().__init__(tag_name, tag_description)
+
+ # Procedure definition
+ proc_1 = Procedure(1, 'cont', is_self_completing=True, is_default=True)
+
+ # Adding procedure report value
+ proc_1.add_report_value(
+ DIntView('count', v_scl_min=0, v_scl_max=100, v_unit=23),
+ )
+
+ # Allocating procedure to the service
+ self.add_procedure(proc_1)
+
+ # Enable pause and hold functionality
+ self.enable_pause_loop()
+ self.enable_hold_loop()
+
+ # Enable reset functionality
+ # self.enable_restart()
+
+ # add count variable
+ self.count = 0
+
+ def starting(self):
+ _log.info('- Starting -')
+ self.count = 0
+ self.get_current_procedure().report_values['count'].set_v(self.count)
+ # time.sleep(1)
+
+ def execute(self):
+ _log.info('- Execute -')
+ start_time = int(time.time() % 100)
+ # state_stop_event = self.get_state_stop_event()
+ # _log.info(f"State stop event: {state_stop_event.is_set()} for start at {start_time}")
+
+ while self.is_state("execute") and self.count < 100:
+
+ # Execute counting
+ self.count += 1
+ self.get_current_procedure().report_values['count'].set_v(self.count)
+ _log.info(f'Count value: {self.count:3d} start at {start_time}')
+
+ time.sleep(0.1)
+
+ def completing(self):
+ _log.info('- Completing -')
+
+ _log.info(f'Final count value: {self.count}')
+
+ # starting, execute, completing methods have to be defined for each service
+
+ # if enabled at least one of the pausing/ holding functions should be implemented
+ def pausing(self):
+ _log.info(f'Count value at pausing: {self.count}')
+
+ def paused(self):
+ _log.info(f"Count value at paused: {self.count}")
+
+ def resuming(self):
+ return super().resuming()
+
+ def holding(self):
+ _log.info(f"Count value at holding: {self.count}")
+
+ def hold(self):
+ _log.info(f'Count value at hold: {self.count}')
+
+ def unholding(self):
+ return super().unholding()
+
+ def restarting(self):
+ _log.info('- Restarting -')
+
+ _log.info("Resetting count value")
+ # other state methods (see service documentation) can be overridden as needed,
+ # by default they only log state entries
+
+
+if __name__ == '__main__':
+
+ module = OPCUAServerPEA(endpoint="opc.tcp://127.0.0.1:4840/")
+
+ # Service definition
+ service_1 = Counter('counter', 'Counts from 0 to 100')
+ module.add_service(service_1)
+
+ # Start server
+ print('--- Start OPC UA server ---')
+ module.run_opcua_server()
+
+ ###############################################################################################
+ # Test
+ opcua_client = Client(module.endpoint)
+ opcua_client.connect()
+ time.sleep(1)
+
+ print('--- Set service to Operator mode ---')
+ opcua_client.get_node('ns=3;s=services.counter.op_src_mode.StateOpOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Start service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.start)
+ time.sleep(4)
+
+ print('--- Restart service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.restart)
+ time.sleep(4)
+
+ print('--- Pause service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.pause)
+ time.sleep(2)
+
+ print('--- Resume service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.resume)
+ time.sleep(4)
+
+ print('--- Hold service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.hold)
+ time.sleep(2)
+
+ print('--- Unhold service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.unhold)
+
+ print('--- Waiting until service completes ---')
+ while opcua_client.get_node('ns=3;s=services.counter.state_machine.StateCur').get_value() != StateCodes.completed:
+ time.sleep(1)
+
+ print('--- Reset service ---')
+ opcua_client.get_node('ns=3;s=services.counter.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ time.sleep(1)
+
+ print('--- Set service to Offline mode ---')
+ opcua_client.get_node('ns=3;s=services.counter.op_src_mode.StateOffOp').set_value(True)
+ time.sleep(1)
+
+ print('--- Demo complete ---')
+ opcua_client.disconnect()
+ module.get_opcua_server().stop()
diff --git a/examples/virtual_pea_with_recipe.py b/examples/virtual_pea_with_recipe.py
index 903fcd0..950e9e0 100644
--- a/examples/virtual_pea_with_recipe.py
+++ b/examples/virtual_pea_with_recipe.py
@@ -1,13 +1,31 @@
+import time
+import random
+from datetime import datetime
+import logging
+
+from opcua import Client
+
from mtppy.opcua_server_pea import OPCUAServerPEA
from mtppy.mtp_generator import MTPGenerator
from mtppy.service import Service
from mtppy.procedure import Procedure
-from mtppy.operation_elements import *
+from mtppy.parameter_elements import *
from mtppy.indicator_elements import *
-import time
-import random
-from datetime import datetime
+from mtppy.command_codes import CommandCodes
+from mtppy.state_codes import StateCodes
+
+CommandCodes = CommandCodes()
+StateCodes = StateCodes()
+
+logging.basicConfig(
+ format='%(asctime)s.%(msecs)03d; [%(levelname)s];'
+ '%(module)s.%(funcName)s: %(message)s',
+ datefmt='%H:%M:%S', level=logging.INFO)
+logging.getLogger("opcua").setLevel(logging.ERROR)
+logging.getLogger("mtppy.service").setLevel(logging.DEBUG)
+
+_log = logging.getLogger(__name__)
class ServiceDummy(Service):
@@ -18,24 +36,28 @@ def __init__(self, tag_name, tag_description):
def add_service_parameters(self):
serv_parameters = [AnaServParam('serv_param_ana', v_min=0, v_max=50, v_scl_min=0, v_scl_max=10, v_unit=23),
- DIntServParam('serv_param_dint', v_min=-10, v_max=10, v_scl_min=0, v_scl_max=-10, v_unit=23),
- BinServParam('serv_param_bin', v_state_0='state_0', v_state_1='state_1'),
+ DIntServParam('serv_param_dint', v_min=-10, v_max=10,
+ v_scl_min=0, v_scl_max=-10, v_unit=23),
+ BinServParam('serv_param_bin', v_state_0='state_0',
+ v_state_1='state_1'),
StringServParam('serv_param_str')
]
[self.add_configuration_parameter(serv_param) for serv_param in serv_parameters]
def add_procedures(self):
# Procedure 1
- proc_1 = Procedure(0, 'proc_1', is_self_completing=False, is_default=False)
+ proc_1 = Procedure(1, 'proc_1', is_self_completing=False, is_default=False)
# Procedure 2
- proc_2 = Procedure(1, 'proc_2', is_self_completing=True, is_default=True)
+ proc_2 = Procedure(2, 'proc_2', is_self_completing=True, is_default=True)
# Procedure 3
- proc_3 = Procedure(2, 'proc_3', is_self_completing=True, is_default=False)
+ proc_3 = Procedure(3, 'proc_3', is_self_completing=True, is_default=False)
proc_parameters = [AnaServParam('proc_param_ana', v_min=0, v_max=50, v_scl_min=0, v_scl_max=10, v_unit=23),
- DIntServParam('proc_param_dint', v_min=-10, v_max=10, v_scl_min=0, v_scl_max=-10, v_unit=23),
- BinServParam('proc_param_bin', v_state_0='state_0', v_state_1='state_1'),
+ DIntServParam('proc_param_dint', v_min=-10, v_max=10,
+ v_scl_min=0, v_scl_max=-10, v_unit=23),
+ BinServParam('proc_param_bin', v_state_0='state_0',
+ v_state_1='state_1'),
StringServParam('proc_param_str'),
]
[proc_3.add_procedure_parameter(proc_param) for proc_param in proc_parameters]
@@ -51,86 +73,40 @@ def add_procedures(self):
self.add_procedure(proc_2)
self.add_procedure(proc_3)
- def idle(self):
- print('- Idle -')
- cycle = 0
- while self.is_state('idle'):
- print('Idle cycle %i' % cycle)
- cycle += 1
- time.sleep(1)
-
def starting(self):
- print('- Starting -')
- self.state_change()
+ _log.info('- Starting -')
def execute(self):
- print('- Execute -')
+ _log.info('- Execute -')
cycle = 0
while self.is_state('execute'):
- print('Execute cycle %i' % cycle)
- print(f'ProcedureCur is {self.procedure_control.get_procedure_cur()}')
- print('ServParameter %s has value %r'
- % (self.configuration_parameters['serv_param_ana'].tag_name,
- self.configuration_parameters['serv_param_ana'].get_v_out()))
- print('ServParameter %s has value %r'
- % (self.configuration_parameters['serv_param_dint'].tag_name,
- self.configuration_parameters['serv_param_dint'].get_v_out()))
- print('ServParameter %s has value %r'
- % (self.configuration_parameters['serv_param_bin'].tag_name,
- self.configuration_parameters['serv_param_bin'].get_v_out()))
- print('ServParameter %s has value %r'
- % (self.configuration_parameters['serv_param_str'].tag_name,
- self.configuration_parameters['serv_param_str'].get_v_out()))
-
- if self.procedure_control.get_procedure_cur() == 2:
- self.procedures[2].report_values['proc_rv_ana'].set_v(random.random())
- self.procedures[2].report_values['proc_rv_bin'].set_v(
- not self.procedures[2].report_values['proc_rv_bin'].attributes['V'].value)
- self.procedures[2].report_values['proc_rv_dint'].set_v(random.randint(-100, 100))
- self.procedures[2].report_values['proc_rv_str'].set_v(str(random.random()))
+ _log.info('Execute cycle %i' % cycle)
+ _log.info(f'ProcedureCur is {self.procedure_control.get_procedure_cur()}')
+ _log.info('ServParameter %s has value %r'
+ % (self.configuration_parameters['serv_param_ana'].tag_name,
+ self.configuration_parameters['serv_param_ana'].get_v_out()))
+ _log.info('ServParameter %s has value %r'
+ % (self.configuration_parameters['serv_param_dint'].tag_name,
+ self.configuration_parameters['serv_param_dint'].get_v_out()))
+ _log.info('ServParameter %s has value %r'
+ % (self.configuration_parameters['serv_param_bin'].tag_name,
+ self.configuration_parameters['serv_param_bin'].get_v_out()))
+ _log.info('ServParameter %s has value %r'
+ % (self.configuration_parameters['serv_param_str'].tag_name,
+ self.configuration_parameters['serv_param_str'].get_v_out()))
+
+ if self.procedure_control.get_procedure_cur() == 3:
+ self.procedures[3].report_values['proc_rv_ana'].set_v(random.random())
+ self.procedures[3].report_values['proc_rv_bin'].set_v(
+ not self.procedures[3].report_values['proc_rv_bin'].attributes['V'].value)
+ self.procedures[3].report_values['proc_rv_dint'].set_v(random.randint(-100, 100))
+ self.procedures[3].report_values['proc_rv_str'].set_v(str(random.random()))
cycle += 1
time.sleep(1)
def completing(self):
- self.state_change()
-
- def completed(self):
- pass
-
- def pausing(self):
- pass
-
- def paused(self):
- pass
-
- def resuming(self):
- pass
-
- def holding(self):
- pass
-
- def held(self):
- pass
-
- def unholding(self):
- pass
-
- def stopping(self):
- pass
-
- def stopped(self):
- pass
-
- def aborting(self):
- pass
-
- def aborted(self):
- pass
-
- def resetting(self):
- print('- Resetting -')
- self.state_change()
+ _log.info('- Completing -')
if __name__ == '__main__':
@@ -140,7 +116,8 @@ def resetting(self):
'WriterVersion': '1.0.0', 'WriterRelease': '', 'LastWritingDateTime': str(datetime.now()),
'WriterProjectTitle': 'tu/plt/mtp', 'WriterProjectID': ''}
export_manifest_path = '../manifest_files/example_recipe_manifest.aml'
- mtp_generator = MTPGenerator(writer_info_dict, export_manifest_path)
+ manifest_template_path = '../manifest_files/manifest_template.xml'
+ mtp_generator = MTPGenerator(writer_info_dict, export_manifest_path, manifest_template_path)
module = OPCUAServerPEA(mtp_generator)
@@ -153,52 +130,65 @@ def resetting(self):
module.run_opcua_server()
# Test
- opcua_server = module.get_opcua_server()
- opcua_ns = module.get_opcua_ns()
+ opcua_client = Client(module.endpoint)
+ opcua_client.connect()
time.sleep(1)
print('--- Set parameters of service dummy to Operator mode ---')
- opcua_server.get_node(
+ opcua_client.get_node(
'ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOpOp').set_value(True)
- opcua_server.get_node(
+ opcua_client.get_node(
'ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOpOp').set_value(True)
- opcua_server.get_node(
+ opcua_client.get_node(
'ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOpOp').set_value(True)
- opcua_server.get_node(
+ opcua_client.get_node(
'ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOpOp').set_value(True)
time.sleep(1)
print('--- Set parameters VOp of service dummy to different values ---')
- opcua_server.get_node('ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VOp').set_value(10.54)
- opcua_server.get_node('ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VOp').set_value(-5.11)
- opcua_server.get_node('ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VOp').set_value(True)
- opcua_server.get_node('ns=3;s=services.dummy.configuration_parameters.serv_param_str.VOp').set_value('hello there')
+ opcua_client.get_node(
+ 'ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VOp').set_value(10.54)
+ opcua_client.get_node(
+ 'ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VOp').set_value(-5.11)
+ opcua_client.get_node(
+ 'ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VOp').set_value(True)
+ opcua_client.get_node(
+ 'ns=3;s=services.dummy.configuration_parameters.serv_param_str.VOp').set_value('hello there')
time.sleep(1)
print('--- Change procedure to 2 ---')
- opcua_server.get_node('ns=3;s=services.dummy.procedure_control.ProcedureOp').set_value(2)
+ opcua_client.get_node('ns=3;s=services.dummy.procedure_control.ProcedureOp').set_value(2)
time.sleep(1)
print('--- Set service dummy to Operator mode ---')
- opcua_server.get_node('ns=3;s=services.dummy.op_src_mode.StateOpOp').set_value(True)
+ opcua_client.get_node('ns=3;s=services.dummy.op_src_mode.StateOpOp').set_value(True)
time.sleep(2)
print('--- Start service dummy ---')
- opcua_server.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(4)
- time.sleep(500)
+ opcua_client.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(
+ CommandCodes.start)
+ time.sleep(10)
print('--- Try to unhold service dummy ---')
- opcua_server.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(32)
+ opcua_client.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(
+ CommandCodes.unhold)
time.sleep(2)
print('--- Complete service dummy ---')
- opcua_server.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(1024)
+ opcua_client.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(
+ CommandCodes.complete)
time.sleep(1)
print('--- Reset service dummy ---')
- opcua_server.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(2)
+ opcua_client.get_node('ns=3;s=services.dummy.state_machine.CommandOp').set_value(
+ CommandCodes.reset)
+ time.sleep(1)
print('--- Set service dummy to Offline mode ---')
- opcua_server.get_node('ns=3;s=services.dummy.op_src_mode.StateOffOp').set_value(True)
+ opcua_client.get_node('ns=3;s=services.dummy.op_src_mode.StateOffOp').set_value(True)
time.sleep(1)
+
+ print('--- Demo complete ---')
+ opcua_client.disconnect()
+ module.get_opcua_server().stop()
diff --git a/manifest_files/example_minimal_manifest.aml b/manifest_files/example_minimal_manifest.aml
index 0d20e80..dfd00d1 100644
--- a/manifest_files/example_minimal_manifest.aml
+++ b/manifest_files/example_minimal_manifest.aml
@@ -17,7 +17,7 @@
www.tud.de
1.0.0
- 2022-08-19 18:45:58.883245
+ 2025-10-26 16:33:34.065599
tu/plt/mtp
@@ -2355,153 +2355,159 @@
-
-
+
+
1.0.0
-
-
-
+
+
+
rand_num_gen
This services generates random number
-
- 0
- DG3F-agAc-7UQ4-H7pG-vyfN
-
255
- OyQ1-lAaU-M0N3-k9qp-6oL5
+ qy8r-oydw-OK6h-X7jG-vhew
+
+
+ 0
+ YriX-2HPW-bN1f-7xRw-EP7g
0
- hi6Y-Y2RM-J1kb-Gm8V-4EeO
+ hgqX-vAP6-5W6k-mQ8C-z7i2
0
- j1H7-HWQx-1wor-Qke8-dV2h
+ QCIp-lBwp-HsCY-9hr2-vr0T
0
- GE25-ykm6-vNC8-xqgp-QvAO
+ Hv5t-N2zf-4vqp-4Vlz-gbel
False
- RxI2-hAUI-9RGh-xeGK-9gCT
+ Mujr-27zs-OYb9-mt7S-H9Rh
False
- oIUR-CsH6-w12J-OnVH-jVmR
+ mJWV-MN8U-sA89-JvE4-M7nX
False
- cBgH-NOSL-qHOA-QMsN-rzli
+ rjKz-es36-aqOS-43xg-lmfc
False
- b7oO-vCFL-mCpg-UElL-itW8
+ ANtP-KZsn-3PB6-rPkJ-TQyK
False
- jJIV-0hIS-K4iW-KvoA-5Wiz
+ oqwi-7QUg-PL2p-PMu2-pcxf
False
- SbGF-n3Th-YXKO-0JDg-ewMu
+ BpaM-jW17-mE6K-4fWQ-ExFt
False
- vP1s-tWms-TY5N-pM72-CJy0
+ 4tuq-HCTN-Bj5Y-Tk6x-JoE4
False
- 5eZ8-KhM6-YR29-LAfx-wQDE
+ cODk-U0AM-AqRn-YfwA-o89k
False
- kP6j-nmTQ-QtLr-rMhB-bALl
+ P6zU-q3u4-Ldy1-Yg6X-TPQC
True
- UsvK-B1v9-EJ3s-07dA-srjl
+ Epz3-Byzi-Z5dR-bKsU-63ZP
False
- enKT-YXF0-fLY7-wS6K-R6wJ
+ cW5d-N9ZR-k9eq-Ipd8-K5fX
False
- pDjQ-qsyb-rIOG-WZmB-Dnzu
+ oVvF-XiBc-6ry8-BYmK-nNMG
False
- 3EmL-iJY8-hzmG-Ulki-W1zy
+ Hrxp-eHxg-0Q2A-MABU-oBXm
False
- pj2L-1GAd-fRv4-MgyU-HuM5
+ 6ZPL-loB6-N0VT-IpTC-5K8w
False
- 0xQE-k59L-JcB3-9hXn-6HmS
+ Q4gO-ZYpf-YJ67-JKq5-qGlH
False
- 24W9-RUmj-8mIF-eM1d-4NS0
+ xHQj-qA4z-FcZT-cUYg-jhMp
False
- BZ4l-ELaW-pGZ7-fLGY-2Npj
+ GTfr-PujU-U91R-fTM7-SH4V
-
- 0
- eniN-JyA5-i5aP-yrhw-zLsM
+
+ ZME4-BY5b-xYo0-fTsD-w35X
-
- 0
- K2zx-HrXP-Ktqb-62oV-VsFh
+
+ ZME4-BY5b-xYo0-fTsD-w35X
-
- 0
- dyZu-g43v-i39z-Bocl-FUBR
+
+ 1
+ yUZn-Jjce-u6r2-l9GE-z12a
-
- 16
- FHKf-ji0g-Mw2k-AqkE-NbPg
+
+ 1
+ 23xa-WzSy-Dizq-vR1h-qY76
-
- 0
- NGcL-zgMG-81nM-FIMN-nUoZ
+
+ 1
+ eazg-oETc-USsn-eCTL-bE6h
-
+
0
- ByLT-EL5F-8gIh-07gs-jTSG
+ fCOg-C1xy-lH7C-fHRe-JLMa
-
+
+ 1
+ 9hbt-kr3E-ENDe-vt8Y-z10f
+
+
0
- DN8v-gACd-5OTJ-5umT-8GOx
+ gs3b-Yi48-kgLY-CJ6y-xfIN
-
+
0
- fWau-QYJZ-htU2-7VZE-3scw
+ 3O9I-3saC-hmUJ-btGd-NCFw
-
+
0
- PjwS-SkUQ-uJ8n-pPsI-Nij3
+ ZTXt-gJYc-5GdE-i187-u4qW
-
+
+ 16
+ wohG-ohIS-VpgZ-Enxd-VndK
+
+
0
- Ss87-SQjo-pHPG-GfnQ-Swyd
+ HJu8-aHP3-g6jO-Wj9E-MDjP
- riqc-7XYh-Xufb-dnF1-Z8Gq
+ ZME4-BY5b-xYo0-fTsD-w35X
-
+
cont
@@ -2510,286 +2516,298 @@
255
- JSFi-CrHo-qbc7-aoKX-Y56d
+ Jynk-Elvp-ZrKd-qz7n-0PO9
+
+
+ nieu-k9TJ-c31P-Pp0D-9d1F
+
+
+ nieu-k9TJ-c31P-Pp0D-9d1F
+
+
+ nieu-k9TJ-c31P-Pp0D-9d1F
+
+
+ nieu-k9TJ-c31P-Pp0D-9d1F
- wXfS-FX8T-7QC0-5wkJ-Owzp
+ nieu-k9TJ-c31P-Pp0D-9d1F
-
+
lower_bound
-
- 0
- xi4p-uhWG-d5Om-U8VP-FVqE
-
255
- HSoC-L2Pn-b4dv-kjUP-esuH
+ 7eHI-ibT2-8l1O-Iz7O-zCcb
+
+
+ 0
+ CAO3-eW3A-lBL4-Ftzm-hqDI
0
- 2RgF-SBfj-oSU4-u3rg-osx5
+ o3D2-7yR8-Lziu-XMYQ-EKh3
0
- 26L3-0ahM-gf38-x0rT-4BHM
+ NzSZ-kfeC-ls6Y-ZplC-PViZ
0
- Ot1l-CTZW-veLZ-4QrB-I06U
+ hxAF-lHEW-INKq-qxZo-TckJ
0
- jhbM-xwHT-tbdB-rv3D-iEPr
+ pJEH-gMGF-G9kb-AGxu-fWUY
0
- 8iN5-8FVd-dFBm-JIlx-WYVf
+ mIKF-LJcn-L4k9-0Qts-AOBr
0
- CXmH-Xvqp-xDqM-eZg3-m8ny
+ 9J3w-Z1jb-leL2-BbqP-uXlh
23
- Hlsd-0t2P-POzh-WpyR-tPAL
+ yIkZ-HxoG-Gv37-GZlm-IekO
0
- jatA-O3Zw-fzRl-CUkO-C6cQ
+ Y2wN-wnCh-Hqgh-XnAS-to8u
100
- 1pKS-q4uG-NkSg-j4or-qRb0
+ AsD8-ay4P-QaDJ-uB0A-ULR1
0
- qutT-s4em-u0Iy-YW23-fUTI
+ F6Is-vU1R-RY8K-XrUJ-AjfM
100
- 4MOJ-iTga-mACt-fbXZ-3TDa
+ 1KXB-dIu0-BQ1r-rgT4-LFvg
False
- dlew-BCsr-QspF-jzWZ-iG4a
+ bWK6-RHLJ-zX5e-76F0-ZxXp
False
- 8FGT-I8wG-1ozd-P4Tx-C0uS
+ hJ4x-Yij7-69lW-0zKJ-mpPF
False
- DuoH-noGz-Wd2P-fjQT-INOM
+ uJks-4mys-tsOg-TFGZ-ZXOp
False
- RMCq-PYOG-3CMv-4NiK-uN0E
+ jBPD-xNS3-0hBb-2Zt5-8swZ
False
- IgWv-XBzU-OjdE-2BLV-JOR1
+ qUMX-WxjC-91yh-lEKR-Ix25
False
- QmjP-tqa1-ghFo-Nyxd-Hg0c
+ Cpin-2hEd-NkrM-5y4m-bvxa
False
- TnhM-poIv-5r9D-Eubl-DAiR
+ wck2-tzRV-aN3M-ZDyv-ofJH
False
- 89xK-nfYO-mXj0-PpkA-0U4B
+ x5rB-OXsj-GNkp-vxuU-uIUj
False
- 5eLI-Ybt4-CgIE-FNpa-aIBe
+ Jitq-kOce-6PN2-scAM-tP3d
False
- u0P9-UaBw-oEnU-Oa5t-B8Y9
+ sRpC-pXbA-EzDn-rCGB-1Ovb
True
- kWUI-KzBV-HrsK-17i0-54h8
+ GX7u-J20c-E8RU-UVvQ-1Caz
False
- 7RUz-IrsO-GeNo-jGtO-1zIk
+ yU5X-RBfa-zEAX-Aza4-PjyL
False
- VOA5-In5c-G6C2-64HS-FNAd
+ KAQP-HCxu-UhLi-pRWO-V0bE
False
- vEKi-mjQX-9Jhr-Goq4-GJBy
+ MIYL-h0U6-5ACE-DydW-oR8v
False
- QRfm-IfhY-IpiZ-9zby-9jhe
+ EF0N-wSBq-P8bG-f6mK-ktP9
False
- u9hB-VY5T-Xv0x-Vm3Q-OngJ
+ 7Lt6-wbn2-bkNJ-iS09-cwyC
False
- MZ6F-dqGB-TaIo-fk17-dtgr
+ xtEQ-kE0W-j3V6-CYGi-YSa9
False
- YJ9r-G4mq-1neH-NCmg-UzZH
+ vxza-HRNL-4RaE-02qW-7ORd
- BSNu-qUTn-Eawh-CRKr-LvcS
+ foXx-WB2I-4coD-vAqY-LPeZ
-
+
upper_bound
-
- 0
- EPBV-AO2s-MJs6-bDQc-mbaj
-
255
- P7WM-AG1i-En6Y-JvqU-CG1m
+ AdaW-swzh-5uJB-L4O8-7Hka
+
+
+ 0
+ 8UdT-Z8O9-Uned-8zTi-fMaV
0
- cdP9-LJ4U-pZlC-Lwz8-aZun
+ Gj5c-RPng-eNr0-nIDw-O2Jv
0
- Z0Ba-w7MU-igBp-61Vw-4sGz
+ 5mtg-imkv-y3xj-SuZ8-YAq2
0
- s5ft-YFKb-suVH-S1az-ASk8
+ 5UJ4-pyXc-5eqo-obi4-lNfv
0
- wkgA-8RqZ-i0Bb-osf8-NhpF
+ vpKe-aClI-0lMh-ISLG-4jTo
0
- y3vH-CdY4-Ciup-MdLw-e6xy
+ mXOu-EfQm-hEpe-DwjO-Yz5Z
0
- sceA-cxme-clZA-yxmZ-80k7
+ Kr15-k60T-SfKt-7jY2-7gIQ
23
- Hf82-nd5f-f2yA-JVhN-juJM
+ OcUy-Pk5e-WsLV-VN9h-LOgS
0
- p42H-0z8j-3bZv-bzPA-ghtp
+ lK2U-UIxW-stCN-t5C7-J753
100
- XwWu-pXur-gLF6-TiEz-qKmJ
+ rRpT-Nrmo-aqxR-Z94z-xvNo
0
- 68my-j0IX-oBx0-QLCu-p0NE
+ DO8w-2ARo-IVex-I7od-ifzS
100
- q5Bo-qeQT-PvmR-sxJ4-D0he
+ A4Cx-eU3n-8h7H-mrQK-gATa
False
- LIJS-xkiM-ic6Q-DczM-GZ9p
+ BRoY-8L4K-zb0Z-x2Yn-7bDM
False
- 4nhv-wmab-2szt-H0XA-GNHu
+ mMXQ-yI7O-BROd-MDlY-JfcT
False
- prvE-4Vne-jJc8-TawP-qVS4
+ 8cj3-mUWY-NzhQ-29XR-o08P
False
- vbjt-2eom-aFtO-JYm6-XAeR
+ vSin-leGf-VOwS-DLHc-khfd
False
- ha5M-saCE-KNCD-Sm8B-ryOD
+ Me1j-eo5S-sPbF-6irh-ziFc
False
- 1ntL-4R25-lSVz-S3RB-MKRb
+ XqeE-JsTX-JYwE-CQhe-p9IU
False
- e8q4-BmGN-8QR1-yeFi-Lb4N
+ 29cZ-IbQC-30SU-UHyq-nKfo
False
- lKPL-uv01-XaKu-F9Hr-MVWZ
+ rTPe-TpGV-ZrYi-k8LE-Gw0M
False
- rZyA-ClFi-m5Sr-1WCn-jsBR
+ 8HBE-xjUy-Vtx3-nPse-q7gZ
False
- pxlg-DcIg-1YMQ-LRXJ-SqmN
+ 5xU2-wHxh-pfCs-EZBV-Kiud
True
- Kihs-MxSA-qSVs-26yP-61RG
+ zwEx-pMnG-PdHu-7J9y-jCn8
False
- lZi7-i9n3-B4an-64DA-evLR
+ jihb-Jf1H-wJpa-D8TR-YylS
False
- 4lUS-wlpW-bPx3-LU4P-6t7S
+ vbRP-wqpy-P57q-hHOx-bo96
False
- LuIh-lfsO-Zomt-H8aJ-JpHv
+ DUmi-5WFH-CV7P-FWwq-XJvP
False
- fLrS-BE7R-Ozuj-IhGg-nqkj
+ vgTL-4OeE-qp7J-a8PC-z3bx
False
- PRwW-B946-QV08-7Nbs-Nnhu
+ aj4V-5ES7-YwRq-2cHS-MwXF
False
- XUqY-e7ag-Qieo-LyO4-5Ufy
+ TA7K-osOc-vNmP-lZaM-kyRN
False
- i6aM-yOEg-CDzQ-pc2z-rai4
+ TEtg-Rf10-OysK-fehX-IyOq
- CXUf-VdDC-pa83-2V4m-ya8r
+ ofXQ-0oA6-h3iB-pi8y-09yB
-
+
generated_value
@@ -2798,34 +2816,34 @@
0
- LJNe-XueK-fIcj-6TDF-bdVW
+ SoTx-79JG-Aesw-eMFm-wJDP
255
- a2Op-Wwdz-W49V-UkQV-Xw5I
+ 2VUv-L0X5-bpzk-pkga-hBu2
0.0
- g7Bz-D03Q-ytB2-3nH2-p4XM
+ TBno-weZa-y6HR-IEGC-lW2p
23
- l8BY-sH0O-fKlz-F3mX-7G5s
+ pydD-bavz-Hbp2-62H4-rSo8
0.0
- 1hiN-hUAq-BmRw-gCnb-16HJ
+ 3s1N-7Z8Q-zsdo-NSyK-GAlp
100.0
- TB31-TP6q-Xny3-dL6C-YHbG
+ 0wjb-dJjh-SdFZ-ZhFC-ULoi
- iSh9-49dt-spIx-SquA-4ia9
+ TFbt-FvCk-Jmv4-kXFv-r19v
-
+
pid_ctrl
@@ -2834,189 +2852,189 @@
0
- LSgI-rD5b-tlkC-3R48-xDBo
+ 7PiR-fRFK-40wP-F9Up-bLl6
255
- Q27i-aMPk-3nv6-cST9-zvwm
+ oEAg-aqn1-kqKi-F1ay-Cp9G
0.0
- IVyM-Ub4I-THin-vVc3-6Pnt
+ wt4V-ldZ6-GgNT-tdoQ-YEsy
0.0
- jThP-64PC-B17n-wA8C-yo8J
+ GHsp-bR3A-MtYO-rUdC-nAax
100.0
- sN9I-joRm-OJCF-Gpgv-McVs
+ NYhl-Yh67-74jN-L5eE-FAtj
0
- YTCX-6wtM-PIZU-2N4W-K5HN
+ hHjy-6vON-Al4p-Nl92-2zcl
0.0
- mROo-lL0p-l4L5-9E0D-NFuU
+ dH0s-0TIS-uAWl-2oqD-XZYg
0.0
- qhFv-9NKZ-7oQk-kFo6-fxXe
+ KW8b-1vNP-eBYl-TZwX-M2hq
0.0
- zU3Q-CIAv-vdjM-CF9P-QgUz
+ 4E6y-fqLW-3Lzq-f3ue-ISha
100.0
- BEf2-5BU6-mUrq-UoPa-AVUh
+ VJc5-of5p-JfRZ-0yvA-LCzS
0
- y3Ox-hoAG-L3RG-pwNq-jp1f
+ iYjo-G5El-4Hdu-LOxl-pn83
0.0
- ONYH-GWqm-BEUK-Uv5z-fwu9
+ UDkE-ZT7j-L6XC-c4Lr-8EIr
100.0
- JbYp-sdrH-NJdP-EOrG-cF6T
+ abDs-aMkZ-wli9-zNPm-OeIn
0.0
- 95fn-KqmM-1zdW-OI0U-8zsS
+ IKjL-j56g-xw7v-jCHU-cwGa
100.0
- KBPo-WNVm-wCjO-dh0l-KDLW
+ X7pM-M1Xv-xOwr-FJ3k-9TSk
0.0
- 2X9d-fRXH-gtQO-lFkN-XnZf
+ IEWz-Yiyd-UINT-uO9b-CQTU
0.0
- fv7D-3c6N-DPo2-Qvqf-H6op
+ MhW5-rH2A-NXZT-dQho-WKUn
0.0
- JS1Q-vlnz-15EW-2W9s-hNpY
+ mjXP-lWsp-2QoI-w6qD-tZGD
0.0
- g8dt-HGlE-SVD8-MfnS-6jKd
+ dLgr-hgCL-3WaL-u7St-AV3p
1000.0
- lq8R-IBb4-cKTR-we1M-dIjS
+ AKx0-gDIt-kgOQ-K4ET-I34C
0.0
- SXOx-ObE1-KmGS-yLa8-fdji
+ 1Ldm-Ns18-qNzW-yYz4-Obrh
0.0
- bBpU-Lyrq-Qr8k-ShiG-yt6n
+ Dd5R-uME2-tFVP-OV12-jMZ7
100.0
- idWh-Vsjb-57RJ-dleu-I5aE
+ DLUW-efuF-yFkb-rRqd-dASQ
100.0
- eFRL-tY8q-YpGr-dGYX-8X5M
+ rsD4-PCMb-t5Xc-RnD5-khxi
10.0
- UvNP-HTLJ-xqi2-er09-GhOT
+ P0jU-3AT0-U0Zi-T1fg-AruL
1.0
- oPwx-l9cF-wcj9-7HLo-SLPX
+ KNbp-NVFi-Jk68-GfKR-6lM9
False
- en1j-Nopq-Um0D-7AQz-jWlA
+ 2Ae8-w3MX-DqsJ-VA8Z-wa8X
False
- J2Kd-s6lq-pIox-SHrk-9SoX
+ SojF-t8gV-fVC3-WkjR-yglH
False
- 2nRH-n26d-Or6S-K65d-Br6i
+ lMr0-dHkI-LMki-rtn7-jMP6
False
- mNiB-8Irn-UheN-Ef7c-7SNK
+ izuE-APkw-8GoW-Gwi9-SaoZ
False
- jtN8-XbWl-T9fn-0Ngx-EzY8
+ bxW8-ROwl-GqCa-HvUX-cJ8O
False
- N5ib-42N5-mhYS-w7u6-rA96
+ DBEI-nFCh-wxiP-EaIO-Ne0D
False
- 7kbs-Dg14-xSmV-j54N-2mCW
+ 96Uq-Q2cW-IUGu-WmuO-Tc0a
False
- LijD-4Weo-Rx9H-pM8d-x69e
+ 5VGE-0dLG-Mvt9-dLti-FshJ
False
- aKRJ-meL8-jK8O-6DdT-df2I
+ 1Sbc-ZR7n-QNpm-49qy-34rP
True
- i57N-5m8r-Plk1-6FSv-NEK7
+ qMKz-3RYI-cMfa-nbgz-9sPf
False
- 9zo2-pgSV-mkow-FfBT-7Zcm
+ 8Cyc-a30j-Pp79-tPdh-fIuk
-
+
False
- Cx3a-IRgF-erQY-XY7i-dYFD
+ vblO-wPFv-eIdF-mkBK-MDL4
False
- EhTM-iwMS-n5pw-clO0-n4rE
+ uzbn-kheu-h6ZX-skMt-U0Ki
False
- Eo5k-flTO-xX6J-T6Bb-8XUe
+ WJgl-opt4-Y3FJ-gq3E-nPQm
-
+
False
- AXht-H9sC-n9iC-o58Z-5oOG
+ FeHc-f91D-xBd3-jzcw-I6Bg
False
- lUSW-2xyo-2Ruv-PseW-kbuC
+ blu8-I91E-Ei3c-gsl9-o07R
-
+
False
- XJOQ-qSVm-qF7H-jIpg-D7H1
+ NjGW-OH8G-Ze9Q-saWJ-Xi9q
- P8Un-K0Mf-eCTJ-ovOa-ENAl
+ Lz98-NVPL-TpJj-1zKS-KLAt
-
-
+
+
opc.tcp://127.0.0.1:4840/
-
+
ns=3;s=services.rand_num_gen.tag_name
@@ -3027,7 +3045,7 @@
1
-
+
ns=3;s=services.rand_num_gen.tag_description
@@ -3038,9 +3056,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.OSLevel
+ ns=3;s=services.rand_num_gen.WQC
3
@@ -3049,9 +3067,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.WQC
+ ns=3;s=services.rand_num_gen.OSLevel
3
@@ -3060,7 +3078,7 @@
1
-
+
ns=3;s=services.rand_num_gen.PosTextID
@@ -3071,7 +3089,7 @@
1
-
+
ns=3;s=services.rand_num_gen.InteractQuestionID
@@ -3082,7 +3100,7 @@
1
-
+
ns=3;s=services.rand_num_gen.InteractAnswerID
@@ -3093,9 +3111,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.tag_name
+ ns=3;s=services.rand_num_gen.op_src_mode.StateChannel
3
@@ -3104,9 +3122,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.tag_description
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOffAut
3
@@ -3115,9 +3133,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.WQC
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOpAut
3
@@ -3126,9 +3144,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.IsSelfCompleting
+ ns=3;s=services.rand_num_gen.op_src_mode.StateAutAut
3
@@ -3137,9 +3155,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.ProcedureId
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOffOp
3
@@ -3148,9 +3166,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.IsDefault
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOpOp
3
@@ -3159,9 +3177,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.tag_name
+ ns=3;s=services.rand_num_gen.op_src_mode.StateAutOp
3
@@ -3170,9 +3188,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.tag_description
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOpAct
3
@@ -3181,9 +3199,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.OSLevel
+ ns=3;s=services.rand_num_gen.op_src_mode.StateAutAct
3
@@ -3192,9 +3210,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.WQC
+ ns=3;s=services.rand_num_gen.op_src_mode.StateOffAct
3
@@ -3203,9 +3221,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOp
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcChannel
3
@@ -3214,9 +3232,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VInt
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcExtAut
3
@@ -3225,9 +3243,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VExt
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcIntOp
3
@@ -3236,9 +3254,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VReq
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcIntAut
3
@@ -3247,9 +3265,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOut
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcExtOp
3
@@ -3258,9 +3276,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VFbk
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcIntAct
3
@@ -3269,9 +3287,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VUnit
+ ns=3;s=services.rand_num_gen.op_src_mode.SrcExtAct
3
@@ -3280,9 +3298,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VSclMin
+ ns=3;s=services.rand_num_gen.procedures.cont.tag_name
3
@@ -3291,9 +3309,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VSclMax
+ ns=3;s=services.rand_num_gen.procedures.cont.tag_description
3
@@ -3302,9 +3320,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VMin
+ ns=3;s=services.rand_num_gen.procedures.cont.WQC
3
@@ -3313,9 +3331,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VMax
+ ns=3;s=services.rand_num_gen.procedures.cont.IsSelfCompleting
3
@@ -3324,9 +3342,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.Sync
+ ns=3;s=services.rand_num_gen.procedures.cont.ProcedureId
3
@@ -3335,9 +3353,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.IsDefault
3
@@ -3346,9 +3364,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.tag_name
3
@@ -3357,9 +3375,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.tag_description
3
@@ -3368,9 +3386,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.WQC
3
@@ -3379,9 +3397,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.OSLevel
3
@@ -3390,9 +3408,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOp
3
@@ -3401,9 +3419,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VInt
3
@@ -3412,9 +3430,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VExt
3
@@ -3423,9 +3441,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VReq
3
@@ -3434,9 +3452,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VOut
3
@@ -3445,9 +3463,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VFbk
3
@@ -3456,9 +3474,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VUnit
3
@@ -3467,9 +3485,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VSclMin
3
@@ -3478,9 +3496,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VSclMax
3
@@ -3489,9 +3507,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VMin
3
@@ -3500,9 +3518,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.VMax
3
@@ -3511,9 +3529,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.Sync
3
@@ -3522,9 +3540,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.tag_name
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateChannel
3
@@ -3533,9 +3551,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.tag_description
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffAut
3
@@ -3544,9 +3562,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.OSLevel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpAut
3
@@ -3555,9 +3573,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.WQC
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutAut
3
@@ -3566,9 +3584,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffOp
3
@@ -3577,9 +3595,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VInt
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpOp
3
@@ -3588,9 +3606,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VExt
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutOp
3
@@ -3599,9 +3617,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VReq
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOpAct
3
@@ -3610,9 +3628,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateAutAct
3
@@ -3621,9 +3639,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VFbk
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.StateOffAct
3
@@ -3632,9 +3650,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VUnit
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcChannel
3
@@ -3643,9 +3661,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VSclMin
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtAut
3
@@ -3654,9 +3672,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VSclMax
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntOp
3
@@ -3665,9 +3683,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VMin
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntAut
3
@@ -3676,9 +3694,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VMax
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtOp
3
@@ -3687,9 +3705,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.Sync
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcIntAct
3
@@ -3698,9 +3716,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.lower_bound.op_src_mode.SrcExtAct
3
@@ -3709,9 +3727,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.tag_name
3
@@ -3720,9 +3738,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.tag_description
3
@@ -3731,9 +3749,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.WQC
3
@@ -3742,9 +3760,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.OSLevel
3
@@ -3753,9 +3771,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOp
3
@@ -3764,9 +3782,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VInt
3
@@ -3775,9 +3793,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VExt
3
@@ -3786,9 +3804,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VReq
3
@@ -3797,9 +3815,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VOut
3
@@ -3808,9 +3826,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VFbk
3
@@ -3819,9 +3837,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VUnit
3
@@ -3830,9 +3848,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VSclMin
3
@@ -3841,9 +3859,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VSclMax
3
@@ -3852,9 +3870,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VMin
3
@@ -3863,9 +3881,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.VMax
3
@@ -3874,9 +3892,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.Sync
3
@@ -3885,9 +3903,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.tag_name
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateChannel
3
@@ -3896,9 +3914,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.tag_description
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffAut
3
@@ -3907,9 +3925,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.OSLevel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpAut
3
@@ -3918,9 +3936,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.WQC
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutAut
3
@@ -3929,9 +3947,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.V
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffOp
3
@@ -3940,9 +3958,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VUnit
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpOp
3
@@ -3951,9 +3969,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VSclMin
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutOp
3
@@ -3962,9 +3980,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VSclMax
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOpAct
3
@@ -3973,9 +3991,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateAutAct
3
@@ -3984,9 +4002,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOffAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.StateOffAct
3
@@ -3995,9 +4013,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOpAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcChannel
3
@@ -4006,9 +4024,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateAutAut
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtAut
3
@@ -4017,9 +4035,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOffOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntOp
3
@@ -4028,9 +4046,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOpOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntAut
3
@@ -4039,9 +4057,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateAutOp
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtOp
3
@@ -4050,9 +4068,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOpAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcIntAct
3
@@ -4061,9 +4079,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateAutAct
+ ns=3;s=services.rand_num_gen.procedures.cont.procedure_parameters.upper_bound.op_src_mode.SrcExtAct
3
@@ -4072,9 +4090,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.StateOffAct
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.tag_name
3
@@ -4083,9 +4101,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcChannel
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.tag_description
3
@@ -4094,9 +4112,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcExtAut
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.OSLevel
3
@@ -4105,9 +4123,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcIntOp
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.WQC
3
@@ -4116,9 +4134,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcIntAut
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.V
3
@@ -4127,9 +4145,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcExtOp
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VUnit
3
@@ -4138,9 +4156,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcIntAct
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VSclMin
3
@@ -4149,9 +4167,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.op_src_mode.SrcExtAct
+ ns=3;s=services.rand_num_gen.procedures.cont.report_values.generated_value.VSclMax
3
@@ -4160,9 +4178,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.state_machine.CommandOp
+ ns=3;s=services.rand_num_gen.procedure_control.ProcedureOp
3
@@ -4171,9 +4189,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.state_machine.CommandInt
+ ns=3;s=services.rand_num_gen.procedure_control.ProcedureInt
3
@@ -4182,9 +4200,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.state_machine.CommandExt
+ ns=3;s=services.rand_num_gen.procedure_control.ProcedureExt
3
@@ -4193,9 +4211,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.state_machine.StateCur
+ ns=3;s=services.rand_num_gen.procedure_control.ProcedureCur
3
@@ -4204,9 +4222,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.state_machine.CommandEn
+ ns=3;s=services.rand_num_gen.procedure_control.ProcedureReq
3
@@ -4215,9 +4233,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedure_control.ProcedureOp
+ ns=3;s=services.rand_num_gen.state_machine.CommandOp
3
@@ -4226,9 +4244,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedure_control.ProcedureInt
+ ns=3;s=services.rand_num_gen.state_machine.CommandInt
3
@@ -4237,9 +4255,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedure_control.ProcedureExt
+ ns=3;s=services.rand_num_gen.state_machine.CommandExt
3
@@ -4248,9 +4266,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedure_control.ProcedureCur
+ ns=3;s=services.rand_num_gen.state_machine.StateCur
3
@@ -4259,9 +4277,9 @@
1
-
+
- ns=3;s=services.rand_num_gen.procedure_control.ProcedureReq
+ ns=3;s=services.rand_num_gen.state_machine.CommandEn
3
@@ -4270,7 +4288,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.tag_name
@@ -4281,7 +4299,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.tag_description
@@ -4292,7 +4310,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.OSLevel
@@ -4303,7 +4321,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.WQC
@@ -4314,7 +4332,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.PV
@@ -4325,7 +4343,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.PVSclMin
@@ -4336,7 +4354,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.PVSclMax
@@ -4347,7 +4365,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.PVUnit
@@ -4358,7 +4376,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPMan
@@ -4369,7 +4387,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPInt
@@ -4380,7 +4398,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPSclMin
@@ -4391,7 +4409,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPSclMax
@@ -4402,7 +4420,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPUnit
@@ -4413,7 +4431,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPIntMin
@@ -4424,7 +4442,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPIntMax
@@ -4435,7 +4453,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPManMin
@@ -4446,7 +4464,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SPManMax
@@ -4457,7 +4475,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.SP
@@ -4468,7 +4486,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVMan
@@ -4479,7 +4497,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MV
@@ -4490,7 +4508,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVMin
@@ -4501,7 +4519,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVMax
@@ -4512,7 +4530,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVUnit
@@ -4523,7 +4541,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVSclMin
@@ -4534,7 +4552,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.MVSclMax
@@ -4545,7 +4563,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.P
@@ -4556,7 +4574,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.Ti
@@ -4567,7 +4585,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.Td
@@ -4578,7 +4596,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateChannel
@@ -4589,7 +4607,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOffAut
@@ -4600,7 +4618,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOpAut
@@ -4611,7 +4629,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateAutAut
@@ -4622,7 +4640,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOffOp
@@ -4633,7 +4651,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOpOp
@@ -4644,7 +4662,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateAutOp
@@ -4655,7 +4673,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOpAct
@@ -4666,7 +4684,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateAutAct
@@ -4677,7 +4695,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.StateOffAct
@@ -4688,7 +4706,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcChannel
@@ -4699,9 +4717,9 @@
1
-
+
- ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcManAut
+ ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcExtAut
3
@@ -4710,7 +4728,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcIntOp
@@ -4721,7 +4739,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcIntAut
@@ -4732,9 +4750,9 @@
1
-
+
- ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcManOp
+ ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcExtOp
3
@@ -4743,7 +4761,7 @@
1
-
+
ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcIntAct
@@ -4754,9 +4772,9 @@
1
-
+
- ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcManAct
+ ns=3;s=active_elements.pid_ctrl.op_src_mode.SrcExtAct
3
@@ -4771,10 +4789,10 @@
-
-
+
+
- 4Isb-K1Xr-YTAM-NGto-Ar8O
+ PJ7I-JoCv-OjFg-VNqC-6g9h
@@ -4782,14 +4800,14 @@
-
-
+
+
- riqc-7XYh-Xufb-dnF1-Z8Gq
+ ZME4-BY5b-xYo0-fTsD-w35X
-
+
- 0
+ 1
True
@@ -4798,23 +4816,23 @@
False
- wXfS-FX8T-7QC0-5wkJ-Owzp
+ nieu-k9TJ-c31P-Pp0D-9d1F
-
+
- BSNu-qUTn-Eawh-CRKr-LvcS
+ foXx-WB2I-4coD-vAqY-LPeZ
-
+
- CXUf-VdDC-pa83-2V4m-ya8r
+ ofXQ-0oA6-h3iB-pi8y-09yB
-
+
- iSh9-49dt-spIx-SquA-4ia9
+ TFbt-FvCk-Jmv4-kXFv-r19v
diff --git a/manifest_files/example_recipe_manifest.aml b/manifest_files/example_recipe_manifest.aml
index 8bf5c5d..cc8f157 100644
--- a/manifest_files/example_recipe_manifest.aml
+++ b/manifest_files/example_recipe_manifest.aml
@@ -17,7 +17,7 @@
www.tud.de
1.0.0
- 2022-05-02 12:08:23.084251
+ 2025-10-26 16:36:52.166337
tu/plt/mtp
@@ -2355,665 +2355,671 @@
-
-
+
+
1.0.0
-
-
-
+
+
+
dummy
description
-
- 0
- L0kY-IXxe-NGPI-X19q-ABlH
-
255
- Tfs0-REf9-4PF2-58Yy-ZYQS
+ genf-h62q-TFjs-25RS-sReZ
+
+
+ 0
+ Vs7l-Yn6m-R4uP-ztG2-n5vQ
0
- OspC-VWgs-PG4W-dBq1-n5Ue
+ BJ4G-8yrI-5Ovc-PTr7-OQdu
0
- Mpe9-aGo4-K1fe-GoP3-szfw
+ sU4K-yS1j-dpct-F8HX-sZMn
0
- axX5-JL4q-V7Tt-4zXq-5j1t
+ lzNv-4pT9-ODR5-Bx5R-I2RS
False
- dDcn-deTw-MHx8-OEy8-nt2p
+ Zmou-5HMy-9WB2-Nk1l-8Mq5
False
- qhv2-7X2q-ZPmU-g6Pe-r4Wo
+ H6os-yGeY-tEhP-bkBj-cQRv
False
- 9PKL-OfZv-6VFi-aS69-GogM
+ Tz0Y-JNce-Je5b-khTU-ugaT
False
- iJxz-Mtfp-LwsE-CrTR-iurN
+ qzCk-2fE4-LT27-xVzw-khbZ
False
- GZP1-FftZ-tTAR-jgRs-Qbz2
+ AvS6-luym-BQJ0-69Gf-uph5
False
- SIAR-7BG8-w5SX-UhVr-qVK6
+ I94s-6HYk-JuBN-0grP-WV1F
False
- VWwK-BQl2-Rg0W-4qn1-MfSZ
+ dE7x-8SyE-BUr3-kR0F-EC6G
False
- MJNt-OuJT-mnuZ-SJRo-nkFJ
+ PinA-8I0h-hpCR-TGzZ-aujJ
False
- foiC-8ZRH-lRbs-NJ5a-fWCT
+ a6lV-5Gkp-MyCI-xQ3N-SQ1a
True
- xkEb-Uz9M-UPTR-EaRt-HPua
+ CWLe-McRa-FWLn-nBNS-kXu1
False
- oS6B-eHp3-Etpu-zBIL-Flag
+ v9TC-jyFs-cUXQ-sM0b-RfKX
False
- mPgG-aVvi-bXGg-D25j-IJZ6
+ 4QdE-XrKh-PJXx-krS6-Knes
False
- ciu8-oX6n-lvfL-Bydn-MC43
+ GkMP-RhcY-PJiS-wJ5H-m8Ez
False
- 1knm-SOTw-NjED-u5tH-31nE
+ soJx-0rIG-mfNE-oWYx-4DnO
False
- Ea4b-KXEh-6jow-fvUW-h7My
+ w1zv-ZRPb-BS93-WPav-NeQ6
False
- Ry3C-uOas-bmQf-FMTi-Urdh
+ VPLm-rRZd-sSgA-gzjo-UAGi
False
- oOCY-sIA7-w7Py-pasI-DOsY
+ 8hOl-4219-Do5J-5zhV-1mQ8
+
+
+ LmVk-ox94-8Nfo-fZrd-NyPq
+
+
+ LmVk-ox94-8Nfo-fZrd-NyPq
+
+
+ 2
+ jHsK-RC5v-pZ6d-VHlZ-flmN
+
+
+ 2
+ hHen-guQ4-2VyC-plkX-Eeqn
+
+
+ 2
+ YfPo-0yHr-pcP8-6yQE-U9rd
+
+
+ 0
+ xift-26nS-QJke-X6HI-AiJL
+
+
+ 2
+ 75SQ-JWfF-i1OP-8Q4b-W8kr
0
- yp76-54Tv-Jmwt-JXLN-aU3d
+ 6eEY-ZrLE-HUFD-QeoL-f4Z0
0
- XKwf-Eni3-b8FG-ntdq-z8bo
+ aHto-DXhi-NVAZ-tJYz-6ms2
0
- GMeh-jvmS-7Tv8-0J8P-0S7w
+ Of0S-1icu-ZBPg-PXup-Rp1m
16
- fyu9-eCfV-eJp1-zqVn-BcWP
+ U0p9-FwXh-Jpvi-56YH-hOjw
0
- pf4H-qJON-7MEV-UX1q-d0v5
-
-
- 1
- 3tdg-MaFu-1LAM-xpqn-N0E9
-
-
- 1
- kr2G-qSEZ-a0xw-Iscb-RwmY
-
-
- 1
- M1t6-Tngk-SbKd-H7OV-0hvV
-
-
- 0
- dfMC-jVc9-HcrX-FRuo-cvIM
-
-
- 0
- qcj2-VrCm-pkE1-S1ni-go0R
+ kr08-fTHG-kFpA-sNOB-wPvQ
- Y9nh-ZYOj-D13L-f3Lj-kD7B
+ LmVk-ox94-8Nfo-fZrd-NyPq
-
+
serv_param_ana
-
- 0
- JPjY-0FSB-QNFS-QFl6-3pVg
-
255
- fmsV-WwFN-3Bwx-qRcz-nqst
+ GApf-huxC-DK8s-wfBU-Yju4
+
+
+ 0
+ FyvP-H5YW-NIpq-aUEm-P6C7
0.0
- iRs6-5zFU-Ky4G-c4m5-WURO
+ zL08-zxdy-Ioz6-o76z-iWbR
0.0
- pebq-PRQf-6ujI-skSX-tNx1
+ bIwS-CrsR-uIKx-jb3k-XmWO
0.0
- 6huD-ekJ6-0gD2-yRlA-ceF1
+ zZe8-wC6y-LbvT-Tl7K-3RZL
0.0
- 8Uo4-uwgt-w8bB-3W4O-iGmt
+ Play-u39X-AO04-5ULu-BHTx
0.0
- irH9-7Zwc-vCYB-zBJN-C0LV
+ uSFE-Fw8x-nwFU-1rxS-8jrn
0.0
- dxzF-0ncx-tDV5-8e9R-eZJK
+ c9qJ-hZHK-gTY6-PfhX-aYUc
23
- BUsW-jvQT-X9Pb-lzDm-SQbZ
+ Avi0-E5XF-sb9f-wxEI-2yBo
0.0
- K5pm-Vah9-1aO5-ZeFy-DnKZ
+ qG7C-tdqc-DPCA-psB2-9YHS
10.0
- dUsb-O3mx-pfHy-8QLJ-3vsY
+ HLob-SjsE-6hlg-vHCd-6j3S
0.0
- FHzZ-x9fe-6PTY-u4TY-VjOq
+ 7vXE-QLRD-QLUm-wmCQ-Tk0R
50.0
- SsmA-0xu7-OC2e-Z0sY-HZ5v
+ QZRP-Vdhc-1jKE-pXom-h7Lt
False
- xTZE-Vagu-q5Yp-cSIT-Ag9q
+ aPrQ-FG0w-u4sg-SgPe-TzuC
False
- 7hTp-7oba-w4Ec-P1Yf-IZ96
+ EAmj-RIep-bD7T-BkXp-bgIA
False
- v8K2-M8DC-FBhw-Oto3-pOQ4
+ m9n7-bDAM-1CQr-DIui-ZWcF
False
- hEIX-WAhR-1bpx-oM6n-JmTL
+ evV0-xIN9-dsxV-DTkS-yAf2
False
- h2QL-uydK-d2U5-T0Lr-ouZs
+ BY81-HZrB-jSob-6lQp-nYFI
False
- E4nr-cpkf-LOh7-XHv0-JHO7
+ JTNE-FaIE-eOrz-jVwc-sdkC
False
- 6ies-2HgP-7r5s-fZMi-5Omz
+ Xno5-L7YN-tHkQ-nR3r-nm5H
False
- shDJ-HKBc-KUnI-NSfU-Jlwb
+ hWBe-aG2A-yiQr-ea0A-crsm
False
- cRFx-7iso-tPwQ-BDr0-l1mv
+ V5wu-Qw1s-xlNL-vYaX-2xV3
False
- xmB6-nESH-I5kz-sg4u-OSgh
+ V14s-PsTI-Grm3-HYKb-KMDu
True
- WS4s-AY8h-N3w7-fp8L-6kpd
+ OR9c-QUzJ-pdE4-7Hut-ZDCq
False
- wn0X-f3wJ-T3p7-zg5r-dpE8
+ xyRV-Is0C-6BVI-zmQt-BFQz
False
- oyLI-g7HW-toKF-uZjL-Da7r
+ dyPt-ew5R-MWiq-uWpC-y3JV
False
- N20V-lTUo-eG8E-aNFz-2Gm1
+ peJd-TSAo-Dej0-hHst-dIZ5
False
- J27M-rlER-Vyjf-hoSJ-ZS5d
+ 80Et-y30T-6ZtP-z0fq-KUV0
False
- r0BJ-dqRM-VaFn-AfZY-Fecb
+ u4fj-4BfI-rEbu-t7w4-GKos
False
- ja4G-Noxe-WVS0-7C8I-uoW5
+ m386-UtcD-oRId-rW1M-CYWs
False
- YXAe-LMhT-QbTD-uwDW-Sg5q
+ Gf4Z-Qg3l-gTvn-bTBf-PWME
- Gq27-6Jon-hJdl-fk50-laR8
+ GdrK-5EV1-WNOu-h9Ee-YZb2
-
+
serv_param_dint
-
- 0
- fquT-7mVJ-sRmj-WGSa-5bPm
-
255
- nA6s-kPNm-sISy-nCwE-EoAy
+ GHQV-RqiO-KE7b-D6dZ-ne8F
+
+
+ 0
+ PdoL-L2rh-EbVG-OjuE-zReA
-10
- neCX-SEmg-ZVcg-YDuH-updw
+ 2WX9-7XaK-9ufG-h5X8-aO2N
-10
- rd5Y-6FBX-Frx7-RS26-mQVr
+ RCOB-rfCI-cLws-obyM-jRas
-10
- yWwC-hLOv-XlOh-5JwQ-rxYI
+ db4h-04XL-p5Sy-zIOY-SY4a
-10
- AQ7k-O9Uz-1WnV-hGOo-CyiA
+ 4bDr-Ji5C-3Krz-Urp4-1fHd
0
- CIVe-oZ13-HwL6-AnkN-9NAF
+ Skb4-vJra-qnW0-zGaW-Rki6
0
- O75J-7Xn1-BZqY-nxcH-gEzQ
+ hJAy-RNvW-ZQt9-Lv12-QXtL
23
- QF18-fDTe-Zkx6-CRZ5-EG6R
+ RVw0-gnct-gXSp-KcxD-ZWtn
0
- l7PL-lhtp-zDIs-sUMv-hDv5
+ 9JLk-Xhrk-ysIm-h82U-vRLE
-10
- 0tdD-mOhk-543I-HUfC-jy5k
+ 1VTY-31ot-3zWU-agZj-4vbX
-10
- SigB-zxek-tlPC-2A43-o4gl
+ p4JO-8PQZ-f3oG-qaN2-lzGV
10
- 2OjJ-N3nW-nwVo-4bsg-BSCL
+ jhtC-uUJ8-2cMD-pDke-aR6v
False
- YuIL-si2Z-TmME-ENut-hKFT
+ PZnd-XPUv-gvFs-bJXh-IdiT
False
- yIiv-msaM-rvKy-Si8H-6EY5
+ dyPY-30jy-xos0-7KgG-3RDl
False
- aNUj-4I1r-RvAz-10Ln-90Zp
+ F7Vv-IxP5-7ktG-Ndmc-0Sbm
False
- csV9-aJfQ-QLP6-YlbO-2lOQ
+ hYKf-ENJj-7Lo8-rlW9-uACi
False
- IVki-I1Cm-oKBm-T6U5-9DWq
+ F9b1-ie9j-x2zU-DUnN-37of
False
- QRSb-ymPi-YNq9-ms54-kIU9
+ E8eZ-FiGz-37Do-KhxC-QPIm
False
- QkOf-Uwq5-Lz6T-q53y-gMcv
+ Ctq4-c9JR-Xa4M-4xcO-ZaUE
False
- 9PWH-bjz1-vI3u-FVp3-V7Tl
+ 6sNA-Z2hV-nUMc-kUop-3ViZ
False
- AUr3-gzZ8-g1fA-TJtk-qZYH
+ lobJ-yuBi-MPDd-ZJYX-inSv
False
- 3o0t-cVqF-pEIi-yjCo-ur2M
+ mR35-01ni-juc2-w2dj-SkX0
True
- vuER-Cboa-lCYb-6G8W-mvqK
+ wqBT-a9QJ-aGOV-5yk8-Gshd
False
- 4iMC-4OIi-EHk2-vqxs-pE0x
+ IbOT-Pys6-O8ZG-7YGy-chmM
False
- AaoM-y03g-SjC0-7ZX3-xWwF
+ lWh7-8tB4-yDKE-1x9X-qmCM
False
- Jxwk-ib6f-Vuwo-frZb-dcqe
+ xjkr-vWbY-9T3m-O0QE-Yabs
False
- 3Yxu-eRj9-IqoZ-RquC-7xOb
+ 41bQ-p9h0-SfIA-XkU7-2MSW
False
- wdus-nC6D-Ipbo-lPa5-sOt1
+ ryXe-9Iwi-zrYv-hT79-svV2
False
- rVB1-QtsL-8P2e-WTmb-IBrs
+ zQeE-uy8d-FWLu-mvBw-YsRz
False
- gKNR-LjgH-Pdl0-i073-4hEI
+ qAxF-mSiG-twLx-caiT-YvZo
- OWoA-Ipu3-LJKp-F9Ee-EJh3
+ 3hLT-t2Ub-ebuy-7szi-zRQ9
-
+
serv_param_bin
-
- 0
- YuW0-T9PM-yx9q-OCEf-uBhE
-
255
- ATam-ut2Q-iHEp-ZBHs-qbk9
+ 2eTc-ZAcE-fWg8-NH5B-Ojg4
+
+
+ 0
+ xKTe-LF6D-RtOP-Grkw-GYfE
False
- yVeC-u0bR-TMsa-QLbg-rN38
+ UuwC-DjQM-dXbG-M1oX-6ZvD
False
- zK6j-wQYp-4o2B-aG2n-ZakD
+ iFvs-kSQG-zvTs-JIpg-vnR2
False
- 3ajA-JgP3-Zfsj-2o4w-yhfK
+ lb7y-oELS-6MsC-zDBl-R8hn
False
- Yjw2-NA6m-iGNY-j20M-4qkJ
+ OTpb-oM6H-XTAg-fnTw-v1b2
False
- uP4y-vVGc-Utws-gAV4-Mxfd
+ xqXe-m1o0-pWcr-lTtz-hqx6
False
- hQsY-ZsKw-7TuX-KykA-tunp
+ JOjh-YkdG-tE0S-mZGS-u0AW
state_0
- 93Aq-04E1-4IUl-B8F5-wRfm
+ u946-wREo-dm3e-Nd2F-RvF1
state_1
- Bwlg-NKg1-vwV2-FYa0-WLi4
+ cP6A-2zLA-XCYl-MWEu-UryN
False
- EVwW-uNSy-f7mP-w5aC-4qNg
+ mM1c-7UQs-4VO2-ryzI-5CHw
False
- ndGT-g7dK-rQ12-1CxO-xqUi
+ B4Fe-IgSb-IxWY-8df6-DcIC
False
- kIlC-usSh-aoyB-tPry-a3SD
+ T8D1-6NRK-w4Bz-7Xq9-fyWI
False
- p5xJ-4Po8-qw3A-azXf-WKrQ
+ 7lmz-p3oj-zi0n-DZVh-fjhQ
False
- LJuj-r65m-2dfF-oWb0-zFUO
+ Kxp0-zBw1-hxHc-87D1-yLfT
False
- 1tzV-isFY-RKpz-nDUI-fU2B
+ 08Cg-imvM-wpY5-cm4n-Ehrk
False
- JhMs-fB8j-R7cG-Ufh6-R7As
+ uij2-VJkY-1gsM-aRuJ-lxcb
False
- IzaA-hyKo-eWmz-urJ4-cJKV
+ BPc2-VFsJ-dIZV-W1AF-ZYhr
False
- LhgO-aBb5-Yf9s-M9XK-ltHT
+ DWgd-8JI5-q3uc-ZL5j-R3Ea
False
- GMLQ-e0N5-UbfG-C7sA-iMHE
+ s5oi-fpQ6-sJjU-OEb4-VSWk
True
- PY0b-8peT-uJWy-HRyU-eVYF
+ AY4N-Od0u-atqI-cREd-fDHj
False
- 5AJ3-bcrG-1VyF-mCIl-bsox
+ uQer-E60h-6OkA-xS0g-LITE
False
- UYsv-UDOI-X75G-u8LF-YfJx
+ NMAL-Ur04-pWNd-zTvK-N2H4
False
- 5riE-GNQM-bC34-EavX-g5yr
+ VRGD-1ntN-cyZs-8wCp-ct7z
False
- JrHy-Sru9-c9X8-o5zP-9p5z
+ ITR2-35sg-LVvr-wLpe-2wJi
False
- Z1zd-XjWc-lfeN-sUD9-XdtO
+ a2Zr-vxOc-CJBL-xGpA-6e5f
False
- lk8L-cn7t-myZk-f3p7-G0qj
+ 3qOM-CdmB-g4MH-2hab-qzH1
False
- LAEB-97Eo-3Gyc-oM1G-CU3p
+ TdWv-lZ0n-zxnk-hM9f-kpfG
- jAme-IlwP-HK0v-TEQU-0QHD
+ 40jA-EyKs-T4e3-fh2n-wdNX
-
+
serv_param_str
-
- 0
- UywJ-ecH8-j85w-LOtM-1Fdf
-
255
- KkMe-lCzR-xSaU-Ir7g-3Q0F
+ WeSM-q1ca-DAVK-1cPt-6zCB
+
+
+ 0
+ DFji-qJG3-cu8z-p9Mn-ogtm
- js81-CaIQ-y4s9-0pXk-TLxA
+ ZIAn-26bB-bZrh-Fx8k-2TSb
- fizB-4r2V-j2xp-1GTP-6tpV
+ cGqW-ZHFD-o2AV-uzgU-4ntH
- JZqS-3qlf-gEn1-2hj6-vV8q
+ J2ye-3d4m-umwx-W8eG-wHSk
- URqC-6b4U-ydtD-pmUx-PCst
+ Ewxi-3pjS-pdS3-hNxH-prGH
- q38D-ykdK-H1Ky-FANX-zryE
+ N1qL-CyUI-hUcf-J8R2-xyGo
- RNpU-3PnO-gtrn-gJ9v-jUls
+ fUGx-uNHT-1X2t-Ro9c-V6zc
False
- zmFk-SAoK-l13o-COE3-DG6q
+ A1s0-ud0c-127m-M1fZ-xUEk
False
- AkJC-kGcB-9WSA-lt0E-qcyz
+ g4W0-kyKO-sD5l-J4qZ-ts0w
False
- hrLI-kbgR-xmQk-nDhw-tNLM
+ 3kHT-JyY8-TuKb-BAR6-c3Zl
False
- 7Cj3-VREJ-0hqz-haxD-yOJx
+ GWox-Np5Z-nKUY-TYXP-YSXv
False
- Nzaf-m853-jP56-gCar-2iXn
+ n8ys-JqZO-pol1-KeHn-wlUq
False
- 7Ijx-vkMq-7UYa-IBbX-ASTv
+ fcO4-4tHO-cF5Q-BTNg-73Cl
False
- sd4L-OL04-WMfi-j5CN-PpFx
+ g3ho-3x4U-1URr-CtzT-YnJ7
False
- N0hU-oNZy-u79s-uaWO-qV56
+ sKYJ-tUGw-GkOZ-S5Rd-rlPX
False
- gNw6-0HNz-KCP2-bF8x-1HqI
+ ZUHk-F6oE-uk2f-znL9-zy5o
False
- e1Ib-tiKv-v9iy-A1bB-CVFo
+ ZfYQ-d9El-PBcg-umDl-rN74
True
- ZfFi-gedy-m6MF-r7nL-TunL
+ x0UD-w0IP-0zQX-lciJ-pMh5
False
- qFbt-fi3v-go5M-h6Sf-e0Mx
+ 2X8A-9XEh-SgKM-KN5I-joBD
False
- aNVm-XjOx-QGkU-ksa5-T3c8
+ Y0Qh-t4bS-YrEG-e1Sp-1p2l
False
- 9DkX-dhM9-c9Kb-LMRm-e2Sg
+ uF2R-fXST-uCUa-HVXl-AXq6
False
- jiYD-MZeO-ypxF-GSYg-jWek
+ 6n28-bu0D-2T4i-M1XJ-QwFx
False
- XFyE-Ul3R-jHv2-8KQ4-HF6C
+ W376-j2Vp-dMe1-FWXq-pILf
False
- 17FP-yZCF-qOlj-iEu7-hJaI
+ BGIz-X1xL-N2rd-Wj2z-L6rB
False
- 5xCv-7lNW-ztbZ-c0jw-Pmhb
+ JbHV-E72I-OeEY-UIAV-tGwR
- ODP8-T3cW-ENLa-p2zC-HqMR
+ LBGP-5jWD-Fmus-qnTf-inJP
-
+
proc_1
@@ -3022,14 +3028,26 @@
255
- mqx0-CqXF-kOFY-mWFA-q5lo
+ oYST-iFpN-Wzru-6krR-j7us
+
+
+ afbI-LaKY-PvmG-B31c-kx5f
+
+
+ afbI-LaKY-PvmG-B31c-kx5f
+
+
+ afbI-LaKY-PvmG-B31c-kx5f
+
+
+ afbI-LaKY-PvmG-B31c-kx5f
- GRDh-omR5-xMme-LlJA-dDx0
+ afbI-LaKY-PvmG-B31c-kx5f
-
+
proc_2
@@ -3038,14 +3056,26 @@
255
- lpRq-UPpj-BMqs-bs8G-q8YZ
+ 3ir1-kfnM-msN0-50mX-vR1B
+
+
+ EF0Y-eXga-TsEn-lV6w-auQB
+
+
+ EF0Y-eXga-TsEn-lV6w-auQB
+
+
+ EF0Y-eXga-TsEn-lV6w-auQB
+
+
+ EF0Y-eXga-TsEn-lV6w-auQB
- VELF-Bx0c-xdL3-NgXS-Zm5T
+ EF0Y-eXga-TsEn-lV6w-auQB
-
+
proc_3
@@ -3054,526 +3084,538 @@
255
- 1iew-zo19-sfmH-zeja-WoFV
+ YJhs-YdPn-3Snq-AagH-J8CQ
+
+
+ 5Xic-XpxI-c8wZ-f8kl-axMW
+
+
+ 5Xic-XpxI-c8wZ-f8kl-axMW
- m1IK-dmiM-l91o-VD2j-JWqQ
+ 5Xic-XpxI-c8wZ-f8kl-axMW
+
+
+ 5Xic-XpxI-c8wZ-f8kl-axMW
+
+
+ 5Xic-XpxI-c8wZ-f8kl-axMW
-
+
proc_param_ana
-
- 0
- yk3H-sHAw-41tx-DFxZ-N67j
-
255
- 0zsP-ke6M-Wh5I-b4eF-gn2m
+ gMYh-X3Uc-gGux-SEPU-iPm3
+
+
+ 0
+ dFP2-4UTH-dzIS-PZNm-0GET
0.0
- zZbq-Io3R-hV2v-VYhk-SUKM
+ aYM9-PDqB-Breb-JxaP-PaMy
0.0
- mWVd-V7wa-n1PU-ogx8-1xVm
+ Cg5s-VgBJ-DnuQ-Xzkm-Y3yg
0.0
- SWhU-P6bF-YVar-qmSZ-BS1M
+ Okvm-SJbi-uAkP-HmdI-3eiN
0.0
- Glt6-gS2H-TBGV-3HJQ-Nkf1
+ a1Lx-SixY-5gfX-8wcS-QbA9
0.0
- ni3a-Rtko-kwAs-gqLx-2sQl
+ erHp-Ypf7-Cysw-DicI-rcQO
0.0
- VZL5-6lYy-sd3Z-nzox-QyL6
+ NAeh-Dy0p-GnI9-HczM-HYSa
23
- zZ7p-hZCO-aVwF-4hw9-ruL1
+ XOTz-hEzB-49EN-q4LZ-JAxK
0.0
- BZp1-vyxZ-dsqx-Sp2f-ioJE
+ m5CL-4gXp-odKB-eqE5-9lWm
10.0
- R6un-ZQnW-Esl1-SMbv-gzQj
+ o29B-O8Mk-OoU3-LmFy-snxj
0.0
- jxh0-8QIn-5ekz-kxie-6MPA
+ F7fp-dakY-KSnT-rgjq-8frb
50.0
- ArTH-o2WC-Qpga-yHaU-m4SN
+ OvXr-s5wY-6pqP-d5vw-3rhA
False
- 8DrJ-3lGr-sp4T-4Fi1-FEe1
+ QOvK-4D5h-48Vd-Rb82-RCrN
False
- UJD8-lDbm-qiGP-1b9v-E1ug
+ zIkx-NY2C-Q57V-RGwU-5IyH
False
- dpZX-i3IY-fQ3q-vm6x-ZWY9
+ XVCZ-XJv9-ENLg-vhy8-ETKa
False
- Lj1d-eqAh-ruy7-VhAC-mYOP
+ Bqdv-1Jer-JA8V-YUh3-m3SN
False
- AOG3-n1io-83Cv-8yms-DtaU
+ yiHe-W2Dg-CTsb-cK7T-YerW
False
- UjKJ-iQ98-PGHa-OJFY-yRUj
+ Z5X3-flmJ-xj5Q-pLx9-aqH7
False
- 1INn-Avut-a527-QUoD-3FDM
+ VpdL-epTM-ChY9-sy1u-msML
False
- TS6V-iKIR-zXjw-sX7R-iMYT
+ hrb1-3Dqn-RcFT-mY3M-XRxU
False
- 4z8H-w2ZJ-LoB6-AiI1-pAjc
+ 6boY-BSwZ-vaOz-J5sC-MAhk
False
- tcLx-jpUk-RPT7-FP3n-W2BE
+ v0uq-JyOa-d5Ck-hDbk-izlX
True
- LlYH-Gftq-lcRk-eT74-Xk1v
+ D0QK-dqR5-B5sa-HbdP-cidQ
False
- o127-Zk3M-gAMV-W6i1-jrFD
+ 2vUR-Siwr-S5Bt-9PTw-h4Y6
False
- RpdK-dnrv-Oc8F-NeDB-x1sH
+ ARQY-kHKQ-CRuH-T2dn-NpRO
False
- WcA5-lYbd-b5Ki-i1O8-tBm3
+ VIEu-OruM-a2Ai-LBD2-cnTe
False
- h01x-yBn7-W1aG-J5U0-Chy2
+ frqz-c0eO-1Son-SbzV-3C5z
False
- wQU0-WV01-5DPb-TJkC-O6YL
+ woyO-MflU-RU8w-VZe6-0JhU
False
- 49JS-1tmP-YcDK-ZgDq-evo2
+ uCy5-gWIJ-5Uvg-xn8B-1l7U
False
- lI5S-31zo-OPAT-yYci-adkR
+ Ub8H-m97v-O9Bs-GDX5-kjmP
- AgfH-Mi2s-eFEB-HrZM-2ETD
+ pjZa-AURp-IfsS-Enh7-OlSy
-
+
proc_param_dint
-
- 0
- l7is-9Ume-15ec-bIGe-p3m7
-
255
- D1uU-pdJ2-H9DR-K9rD-vBom
+ LE7Y-q07c-1bWg-ZyOm-GxQZ
+
+
+ 0
+ LHXF-7gxs-67co-M5x6-2G3V
-10
- TFKm-LoJ9-qmkb-gx4G-yRIS
+ o2gq-lJOz-rS6e-Ihtc-k98I
-10
- vbD6-rMlE-OjyG-0Xqa-bPLd
+ PYKI-7SeT-DjQo-lyQ0-btvd
-10
- kYbW-3l4G-vypw-kdZn-ZL7d
+ qpfz-QqTP-X9iG-P7Bt-f6vz
-10
- 9bly-80ro-XU7s-ipZO-iZIy
+ HuVg-iQFe-Nj58-dWbs-LhIZ
0
- vhzr-zHqb-Xfr2-RqbX-NbRq
+ xgP0-0RI8-tNU9-dXo4-hYoA
0
- PUT7-1ku6-DH0z-OV0c-H7b9
+ sgMJ-otf3-PvmC-uAGD-Y4qA
23
- lmY4-u4zp-15N0-6hWS-eD4U
+ K3Qu-Xnge-LZTy-Hgvy-uOqo
0
- aD9Q-BbZS-WrbP-pVcH-28rp
+ Gish-Tj5i-5qN6-TbmY-9ShJ
-10
- 6dN4-PEiK-JobQ-U91F-zOlD
+ 4Qq8-bG8K-7BOM-BTbm-P6yo
-10
- NaFb-PnvJ-T5R4-vTqK-GUsm
+ lnEx-LSiU-cwdj-25kL-X2hS
10
- C8p6-UPCI-XZI8-PXTY-1nJR
+ nFWp-ZeN5-XwtW-Mehg-oGep
False
- GZtx-OMG9-L1Kq-RMPU-1xQI
+ 0wxR-PUby-F62t-5Yhn-qPJ4
False
- DKrW-6uvo-XBct-w8Nf-FbuL
+ U3gL-FY8Q-7i2m-6MBE-CXk5
False
- gDJR-157i-tAyw-FKzn-4VYr
+ gl0P-jl9h-tnkr-fTW7-KOzQ
False
- lLxZ-hapB-u3jP-ozmJ-6rA5
+ K8UE-IsxT-E7Oy-GPym-IURh
False
- G20C-oz6a-DZQa-NG9K-ibrg
+ CuWH-7ZnT-Qb7l-6kSt-xlKw
False
- IGes-b0Ch-CJ2P-9VXj-YvlP
+ BPMH-Tmwu-OIqd-mAqQ-Fc9g
False
- kZ1g-309J-CZ9S-ezxb-xUGI
+ mq9Q-KX0U-0lgK-90we-Fn9z
False
- fcTU-i6MQ-5wSF-Gxrf-G94w
+ mdhp-EhkX-RJzh-8p1Q-fQBU
False
- 0Uuo-wVuo-nTCH-iz1V-kWhq
+ La5H-GLe9-wpfU-QDYI-fe4p
False
- HhLn-7rzM-Ss38-JkXf-1gH4
+ coH2-13jM-mB7x-3jQg-c8gv
True
- 6YiK-6Cda-p1qn-Dil2-aDIK
+ mC6f-p5Ku-JuWX-lzvP-XLcd
False
- jLeO-Y7pv-IDlK-Z5I1-vJXI
+ N0zU-TqIb-dxT8-e9od-Yhct
False
- TvV3-u6Hw-LuDW-r9Pq-C809
+ SFdZ-gGsJ-Jdyk-yevW-VKjm
False
- 4iNa-cexI-x7Qq-uqRM-NjkG
+ mBGd-zpLn-tfGn-ZElQ-Z8Mo
False
- t0xq-GaUI-vdHx-0NKk-VnKB
+ tPQA-LIQb-6EVu-3Nhl-TBZK
False
- 83dX-OfWV-ZCVF-ZGOP-cQsU
+ SIY8-0wfW-1FNl-p7Ty-stO2
False
- lXvV-7dOb-OH76-M6YS-hdS2
+ wbJn-azyV-mxIl-mZiA-g5fx
False
- grZ6-Wdjt-YrXa-wkPm-hRrE
+ 1ptj-PcZ2-1UuO-YzNj-SjdZ
- hADx-uTnV-DCjY-PpWj-JqmR
+ 6dzn-zCxM-orJC-g0zh-36rl
-
+
proc_param_bin
-
- 0
- 1u9n-dHmJ-2Akx-EyoR-B1kQ
-
255
- Yros-98jH-gMLK-b3yt-XRMT
+ habp-a7nM-N79l-IjlP-EA9F
+
+
+ 0
+ 9BSg-rTfR-amPN-w0zQ-Diy8
False
- h8Gy-yZzn-Yry6-zd1U-acZz
+ MdTq-HXfh-6qyG-jBgX-YNpI
False
- KWGd-F1SV-ynV0-gXvk-kBYi
+ uf1I-y1Ns-9T8j-dw82-y3lM
False
- aOFx-3Mv7-raeY-8eyF-x4fh
+ EuDj-gXho-bvwO-Y0NZ-0yBY
False
- SLrK-PKOn-Mdkr-kVL3-HhVE
+ CM9w-VIxm-a4U2-EG2m-VxTX
False
- HFBj-yEH8-VB62-iCgk-dBwx
+ qwhI-2quv-NJ0O-yFbC-IG4n
False
- FkLw-p280-5SFz-QrKu-spva
+ VXJ5-YuPr-HP9W-zdnM-oAtV
state_0
- 5RQX-498X-3dpY-Pft6-PhYR
+ 2eMG-BJC3-UvZA-nsg9-4rAb
state_1
- gRwL-Q8kW-iByk-ftVj-F6XE
+ AzO7-QsH6-1bTA-tBV0-KQYJ
False
- n76o-UgSe-rLIK-VblP-cwlX
+ Zesc-N89t-kZit-B38k-yFmu
False
- QMVh-5dEA-83s0-p2is-Aiwv
+ NiMn-bYt8-WXtm-dQW3-UGkQ
False
- Nzgk-9lgC-0msW-yTVh-dEyB
+ qnTl-Z1Sx-xKbD-UeIM-1fhJ
False
- 9vyZ-gx9j-xi4I-Voja-qe85
+ Brw5-yUv4-NXSi-4gyr-47yT
False
- Oz9M-of7c-wFpi-dKSx-1JHK
+ UM6I-yHsZ-yAni-4Rf7-hXYQ
False
- 3G9Q-gqfw-jcBI-8Q1o-jP6c
+ mWMX-gdnE-kQAv-2EjV-cPrx
False
- aBz0-clnW-H5Yr-1mo5-yeHj
+ bPAM-lhZL-xeaB-FScX-CQkp
False
- rAyT-quza-MNks-wXmk-B7km
+ 6IvG-iYBN-LpJ6-hLZC-Wq1Y
False
- cUDT-Lo6l-wjMT-V4jh-9lNL
+ X6Uo-Gx0D-qeST-RetK-XezU
False
- kjNy-mYjK-PTZR-KfrP-hOAf
+ WYeG-ORXc-CfpL-57gR-x8ML
True
- DmJT-3Ur4-c1HX-wRMi-1o0G
+ Gq4s-Bw1T-2xbV-JZ7F-w4p8
False
- f7cW-5aJB-2Pxi-rGsj-uLO8
+ zhOY-hJE2-wsPo-o9VP-mtBs
False
- nSZF-WdSO-slZp-6OHr-tkGK
+ La16-67xs-Wdnu-VLWk-psLn
False
- oVLH-GTbw-qDRW-GBCm-7PGm
+ Nwzd-NJ6L-Wsjr-fq5J-uOI5
False
- xLpn-1lqf-8qsD-2dmM-ukfP
+ yRlV-htyq-FglA-CNEe-9YDb
False
- aJz5-yGNv-Jyit-ANcj-XIpS
+ 6RfZ-MmEf-13jn-KxAE-IKJ0
False
- ubHP-Agrn-bJ6K-QNi3-Oj4A
+ 7L8C-jNRB-2r4x-iMwy-eW1t
False
- xlAV-kfXi-XKgJ-NHad-PNwW
+ Yxic-ltnI-3Nfk-yxzT-0ftl
- lg0V-kOfW-Wrmg-8xBV-xr6O
+ A83w-Kpvs-lpwj-EKh0-8MmX
-
+
proc_param_str
-
- 0
- 3Tvw-z8UZ-LKmv-dH7W-pQJ8
-
255
- GRer-y1o7-DUWH-9WKE-3zgM
+ Z6FO-pYzX-xo2w-e7y9-LRcz
+
+
+ 0
+ XiTc-0B1A-wO2b-jPi7-kMQ3
- 6Ouz-hGDl-XkLP-VFmt-peB3
+ woA4-QUws-9FX1-XDa0-QJw3
- jk3T-9gIO-vDyl-JH7v-ZF80
+ 70fZ-c3ua-xN12-okTc-PVgL
- Vasm-LOhP-72Qo-ygZX-rkv9
+ Fgtj-S08Q-CfnF-dvCW-ZM1B
- upFg-pGiv-YDhX-qkBW-cj0C
+ EBZv-MdQm-IPcj-S2QK-HRMd
- KwkC-9eja-0hw9-o9YX-wgDS
+ sVfb-jyYU-7AtU-CURh-9ClY
- nDw2-p85q-MOgq-Iz7Z-lI7y
+ XVRr-H7yG-GYOX-4qBL-fnUW
False
- 9iZW-ExsC-U3Yd-AREk-HTaJ
+ t6JN-2UgS-eytU-IVbJ-LPru
False
- BmwJ-c3MH-Zl7d-yt1T-FYSh
+ Y3OV-TWy2-iebA-129D-RkT8
False
- lWwH-aSBq-e6l0-n9wl-mEHq
+ pUrc-QZpd-Vug8-iDO7-WiXu
False
- Q9Yl-NcuP-ceGn-gTCr-T2nI
+ 4bKt-FYbO-vmsu-90uA-zIpf
False
- fOu9-iz1t-TeLv-48s0-MUH7
+ PXiR-sd7h-YFPW-LETC-PpMU
False
- Vo64-oC3X-tq1s-h3bZ-7wKQ
+ FMkK-7tSw-Zz1V-49Gg-X48H
False
- iTDj-69yU-0N9k-SBuN-VreJ
+ 6g08-aZfv-Ye5j-AvGZ-l7Oe
False
- UY4h-EOnR-tmSN-NFb9-WqKk
+ NL8w-CVfj-b01C-CEeZ-rZXF
False
- 8PxM-OpT2-2VX6-78Hu-XeJs
+ QlDt-a64n-1lSj-TdWi-IbdD
False
- Q4hX-wi0U-Z8Ok-35sX-EHmN
+ vsAw-uGqn-oMZR-ESjx-sDIG
True
- wStr-hpaG-bzAH-sVrd-s0XA
+ u4Cq-Pu2Q-Iv2s-kq68-FTD8
False
- ZUCb-fyBG-4iCO-zqOi-cnqg
+ Ki0D-i8Mx-irs6-uUoL-gvi9
False
- alWY-O7gs-8CEr-KM35-vPpT
+ 6YRb-KLuU-wZMk-1rDh-N31J
False
- vFWa-jx9w-DY3I-m9eW-j1kb
+ PAMn-qBZR-kC3O-P02y-VJsi
False
- DWjA-0FeB-WyVs-Dc0a-sySI
+ h4Hv-kmvB-XEeb-GARD-WsgB
False
- Mmkr-CzY2-42Go-oJdt-tc0T
+ 1NXF-DU5b-hrLv-EjZz-rJAQ
False
- e2CW-FEdn-Hz6w-nI4Z-My9V
+ Xhe4-ky8V-8tUQ-tL8F-GZvI
False
- GRgL-uiTg-p0Yn-v4dZ-4hzG
+ cLwg-mbzt-QRZ6-zZeC-xdbK
- waWs-Acno-DAz5-cJXs-x8AP
+ KwHW-OJDm-Dkzy-9eW5-nURv
-
+
proc_rv_ana
@@ -3582,34 +3624,34 @@
0
- XSz6-HLGo-THew-4xDM-fCjT
+ uVzS-4Zzt-LqJR-FMdC-ql6n
255
- F8SU-6nsG-CiT6-RmnS-Q93T
+ HPYN-7Qwc-J7XC-EUaf-aG40
0.0
- dAIY-SNKM-oGrw-MOpH-BSEk
+ cfZY-WDNM-9rJB-UWbq-atXk
23
- 34Vj-ywRe-KX0W-vPCj-tdND
+ Uhfm-KEmo-DNuI-WG4s-PHmi
0.0
- sM7k-wFnQ-Aogm-Hv6w-Yrt5
+ iDAH-ZOLj-Cqt0-mrdc-4uLv
10.0
- nKNk-J3Uy-WofM-lAnC-Fn5X
+ OcoI-SOWl-wDk4-7CV4-2gfp
- kasC-KHPD-7qns-FBky-Epje
+ Wu4i-9Z6g-Bfcb-bypW-1QrJ
-
+
proc_rv_dint
@@ -3618,34 +3660,34 @@
0
- 7hqR-xdeZ-58OL-0LoD-mpU1
+ qLoX-6iIv-Nk3y-ZHYz-p1nx
255
- IVP7-EfP4-qQJi-AwRi-R6co
+ zMg3-uO1H-vHFy-6EjO-bHKE
0
- 28GJ-cRnb-YzxO-AylR-xQjP
+ hV7K-MwKb-jHNJ-ToKs-ZBf5
23
- tCOq-K4PY-tsRz-4kum-k9QF
+ MAxO-JXk7-0cT9-Wc8t-qYME
0
- 3t0X-W6D7-BjlL-tIgC-hvaq
+ NwE0-uENO-yVqf-N3az-AUG1
-10
- ONAz-drJ3-ldtq-McxB-UoAw
+ aOb3-RqJQ-DRCU-v8Ac-4nFG
- xtDa-fBDy-q2tX-bJE8-3pVL
+ 3SJ8-HXgp-VLnX-dLVW-zx9E
-
+
proc_rv_bin
@@ -3654,30 +3696,30 @@
0
- f1Xu-GBe4-HlB9-HnG2-waZM
+ zgb8-zswb-BtF5-VXwb-jA2B
255
- MbVX-Gpz1-cOVb-tZVe-yT7P
+ YI5q-9NhS-dTDp-CKIR-Rq1n
False
- fLAz-IbPo-NJZh-TUJt-NRTi
+ wc6B-pWd4-Bb1n-1hpX-Ef7T
state_0
- Zq2m-HN78-eVXm-6xEJ-olt2
+ vtlp-N6dZ-Ixp5-qW2w-Yfq6
state_1
- HZ7K-vNCT-dG7e-7W8n-ECKe
+ uSYI-6cpb-I3au-cei0-b1EW
- Purl-2bCJ-Vw1J-YhfX-Cnlw
+ SDOb-bGH8-EYCg-Y4My-oM9r
-
+
proc_rv_str
@@ -3686,29 +3728,29 @@
0
- R3ZM-4dxb-JS8r-78ky-OMYr
+ XI1p-QYR5-xK2I-N6WU-tSKC
255
- AVJS-7pnJ-qYwJ-os5f-nPZj
+ R3ab-8rn9-9TEk-sODE-eZqD
False
- 5NYt-15CH-DGoh-gxPj-QT5H
+ v0Sk-qK9n-3tNG-f85R-xYqk
- QsWD-eUKw-j2a6-0p4m-SkU7
+ yLb7-mbNB-C6vk-bsRI-B9Cx
-
-
+
+
- opc.tcp://0.0.0.0:4840/
+ opc.tcp://127.0.0.1:4840/
-
+
ns=3;s=services.dummy.tag_name
@@ -3719,7 +3761,7 @@
1
-
+
ns=3;s=services.dummy.tag_description
@@ -3730,9 +3772,9 @@
1
-
+
- ns=3;s=services.dummy.OSLevel
+ ns=3;s=services.dummy.WQC
3
@@ -3741,9 +3783,9 @@
1
-
+
- ns=3;s=services.dummy.WQC
+ ns=3;s=services.dummy.OSLevel
3
@@ -3752,7 +3794,7 @@
1
-
+
ns=3;s=services.dummy.PosTextID
@@ -3763,7 +3805,7 @@
1
-
+
ns=3;s=services.dummy.InteractQuestionID
@@ -3774,7 +3816,7 @@
1
-
+
ns=3;s=services.dummy.InteractAnswerID
@@ -3785,7 +3827,194 @@
1
-
+
+
+ ns=3;s=services.dummy.op_src_mode.StateChannel
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOffAut
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOpAut
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateAutAut
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOffOp
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOpOp
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateAutOp
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOpAct
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateAutAct
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.StateOffAct
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcChannel
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcExtAut
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcIntOp
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcIntAut
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcExtOp
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcIntAct
+
+
+ 3
+
+
+ 1
+
+
+
+
+ ns=3;s=services.dummy.op_src_mode.SrcExtAct
+
+
+ 3
+
+
+ 1
+
+
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.tag_name
@@ -3796,7 +4025,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.tag_description
@@ -3807,9 +4036,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_ana.OSLevel
+ ns=3;s=services.dummy.configuration_parameters.serv_param_ana.WQC
3
@@ -3818,9 +4047,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_ana.WQC
+ ns=3;s=services.dummy.configuration_parameters.serv_param_ana.OSLevel
3
@@ -3829,7 +4058,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VOp
@@ -3840,7 +4069,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VInt
@@ -3851,7 +4080,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VExt
@@ -3862,7 +4091,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VReq
@@ -3873,7 +4102,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VOut
@@ -3884,7 +4113,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VFbk
@@ -3895,7 +4124,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VUnit
@@ -3906,7 +4135,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VSclMin
@@ -3917,7 +4146,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VSclMax
@@ -3928,7 +4157,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VMin
@@ -3939,7 +4168,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.VMax
@@ -3950,7 +4179,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.Sync
@@ -3961,7 +4190,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateChannel
@@ -3972,7 +4201,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOffAut
@@ -3983,7 +4212,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOpAut
@@ -3994,7 +4223,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateAutAut
@@ -4005,7 +4234,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOffOp
@@ -4016,7 +4245,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOpOp
@@ -4027,7 +4256,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateAutOp
@@ -4038,7 +4267,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOpAct
@@ -4049,7 +4278,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateAutAct
@@ -4060,7 +4289,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.StateOffAct
@@ -4071,7 +4300,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcChannel
@@ -4082,7 +4311,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcExtAut
@@ -4093,7 +4322,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcIntOp
@@ -4104,7 +4333,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcIntAut
@@ -4115,7 +4344,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcExtOp
@@ -4126,7 +4355,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcIntAct
@@ -4137,7 +4366,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_ana.op_src_mode.SrcExtAct
@@ -4148,7 +4377,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.tag_name
@@ -4159,7 +4388,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.tag_description
@@ -4170,9 +4399,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_dint.OSLevel
+ ns=3;s=services.dummy.configuration_parameters.serv_param_dint.WQC
3
@@ -4181,9 +4410,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_dint.WQC
+ ns=3;s=services.dummy.configuration_parameters.serv_param_dint.OSLevel
3
@@ -4192,7 +4421,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VOp
@@ -4203,7 +4432,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VInt
@@ -4214,7 +4443,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VExt
@@ -4225,7 +4454,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VReq
@@ -4236,7 +4465,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VOut
@@ -4247,7 +4476,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VFbk
@@ -4258,7 +4487,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VUnit
@@ -4269,7 +4498,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VSclMin
@@ -4280,7 +4509,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VSclMax
@@ -4291,7 +4520,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VMin
@@ -4302,7 +4531,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.VMax
@@ -4313,7 +4542,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.Sync
@@ -4324,7 +4553,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateChannel
@@ -4335,7 +4564,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOffAut
@@ -4346,7 +4575,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOpAut
@@ -4357,7 +4586,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateAutAut
@@ -4368,7 +4597,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOffOp
@@ -4379,7 +4608,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOpOp
@@ -4390,7 +4619,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateAutOp
@@ -4401,7 +4630,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOpAct
@@ -4412,7 +4641,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateAutAct
@@ -4423,7 +4652,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.StateOffAct
@@ -4434,7 +4663,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcChannel
@@ -4445,7 +4674,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcExtAut
@@ -4456,7 +4685,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcIntOp
@@ -4467,7 +4696,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcIntAut
@@ -4478,7 +4707,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcExtOp
@@ -4489,7 +4718,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcIntAct
@@ -4500,7 +4729,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_dint.op_src_mode.SrcExtAct
@@ -4511,7 +4740,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.tag_name
@@ -4522,7 +4751,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.tag_description
@@ -4533,9 +4762,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_bin.OSLevel
+ ns=3;s=services.dummy.configuration_parameters.serv_param_bin.WQC
3
@@ -4544,9 +4773,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_bin.WQC
+ ns=3;s=services.dummy.configuration_parameters.serv_param_bin.OSLevel
3
@@ -4555,7 +4784,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VOp
@@ -4566,7 +4795,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VInt
@@ -4577,7 +4806,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VExt
@@ -4588,7 +4817,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VReq
@@ -4599,7 +4828,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VOut
@@ -4610,7 +4839,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VFbk
@@ -4621,7 +4850,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VState0
@@ -4632,7 +4861,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.VState1
@@ -4643,7 +4872,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.Sync
@@ -4654,7 +4883,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateChannel
@@ -4665,7 +4894,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOffAut
@@ -4676,7 +4905,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOpAut
@@ -4687,7 +4916,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateAutAut
@@ -4698,7 +4927,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOffOp
@@ -4709,7 +4938,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOpOp
@@ -4720,7 +4949,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateAutOp
@@ -4731,7 +4960,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOpAct
@@ -4742,7 +4971,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateAutAct
@@ -4753,7 +4982,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.StateOffAct
@@ -4764,7 +4993,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcChannel
@@ -4775,7 +5004,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcExtAut
@@ -4786,7 +5015,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcIntOp
@@ -4797,7 +5026,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcIntAut
@@ -4808,7 +5037,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcExtOp
@@ -4819,7 +5048,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcIntAct
@@ -4830,7 +5059,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_bin.op_src_mode.SrcExtAct
@@ -4841,7 +5070,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.tag_name
@@ -4852,7 +5081,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.tag_description
@@ -4863,9 +5092,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_str.OSLevel
+ ns=3;s=services.dummy.configuration_parameters.serv_param_str.WQC
3
@@ -4874,9 +5103,9 @@
1
-
+
- ns=3;s=services.dummy.configuration_parameters.serv_param_str.WQC
+ ns=3;s=services.dummy.configuration_parameters.serv_param_str.OSLevel
3
@@ -4885,7 +5114,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VOp
@@ -4896,7 +5125,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VInt
@@ -4907,7 +5136,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VExt
@@ -4918,7 +5147,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VReq
@@ -4929,7 +5158,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VOut
@@ -4940,7 +5169,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.VFbk
@@ -4951,7 +5180,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.Sync
@@ -4962,7 +5191,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateChannel
@@ -4973,7 +5202,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOffAut
@@ -4984,7 +5213,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOpAut
@@ -4995,7 +5224,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateAutAut
@@ -5006,7 +5235,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOffOp
@@ -5017,7 +5246,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOpOp
@@ -5028,7 +5257,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateAutOp
@@ -5039,7 +5268,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOpAct
@@ -5050,7 +5279,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateAutAct
@@ -5061,7 +5290,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.StateOffAct
@@ -5072,7 +5301,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcChannel
@@ -5083,7 +5312,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcExtAut
@@ -5094,7 +5323,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcIntOp
@@ -5105,7 +5334,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcIntAut
@@ -5116,7 +5345,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcExtOp
@@ -5127,7 +5356,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcIntAct
@@ -5138,7 +5367,7 @@
1
-
+
ns=3;s=services.dummy.configuration_parameters.serv_param_str.op_src_mode.SrcExtAct
@@ -5149,7 +5378,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.tag_name
@@ -5160,7 +5389,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.tag_description
@@ -5171,7 +5400,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.WQC
@@ -5182,7 +5411,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.IsSelfCompleting
@@ -5193,7 +5422,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.ProcedureId
@@ -5204,7 +5433,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_1.IsDefault
@@ -5215,7 +5444,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.tag_name
@@ -5226,7 +5455,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.tag_description
@@ -5237,7 +5466,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.WQC
@@ -5248,7 +5477,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.IsSelfCompleting
@@ -5259,7 +5488,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.ProcedureId
@@ -5270,7 +5499,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_2.IsDefault
@@ -5281,7 +5510,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.tag_name
@@ -5292,7 +5521,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.tag_description
@@ -5303,7 +5532,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.WQC
@@ -5314,7 +5543,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.IsSelfCompleting
@@ -5325,7 +5554,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.ProcedureId
@@ -5336,7 +5565,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.IsDefault
@@ -5347,7 +5576,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.tag_name
@@ -5358,7 +5587,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.tag_description
@@ -5369,9 +5598,9 @@
1
-
+
- ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.OSLevel
+ ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.WQC
3
@@ -5380,9 +5609,9 @@
1
-
+
- ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.WQC
+ ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.OSLevel
3
@@ -5391,7 +5620,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VOp
@@ -5402,7 +5631,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VInt
@@ -5413,7 +5642,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VExt
@@ -5424,7 +5653,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VReq
@@ -5435,7 +5664,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VOut
@@ -5446,7 +5675,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VFbk
@@ -5457,7 +5686,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VUnit
@@ -5468,7 +5697,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VSclMin
@@ -5479,7 +5708,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VSclMax
@@ -5490,7 +5719,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VMin
@@ -5501,7 +5730,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.VMax
@@ -5512,7 +5741,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.Sync
@@ -5523,7 +5752,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateChannel
@@ -5534,7 +5763,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOffAut
@@ -5545,7 +5774,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOpAut
@@ -5556,7 +5785,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateAutAut
@@ -5567,7 +5796,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOffOp
@@ -5578,7 +5807,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOpOp
@@ -5589,7 +5818,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateAutOp
@@ -5600,7 +5829,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOpAct
@@ -5611,7 +5840,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateAutAct
@@ -5622,7 +5851,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.StateOffAct
@@ -5633,7 +5862,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcChannel
@@ -5644,7 +5873,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcExtAut
@@ -5655,7 +5884,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcIntOp
@@ -5666,7 +5895,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcIntAut
@@ -5677,7 +5906,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcExtOp
@@ -5688,7 +5917,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcIntAct
@@ -5699,7 +5928,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_ana.op_src_mode.SrcExtAct
@@ -5710,7 +5939,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.tag_name
@@ -5721,7 +5950,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.tag_description
@@ -5732,9 +5961,9 @@
1
-
+
- ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.OSLevel
+ ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.WQC
3
@@ -5743,9 +5972,9 @@
1
-
+
- ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.WQC
+ ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.OSLevel
3
@@ -5754,7 +5983,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VOp
@@ -5765,7 +5994,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VInt
@@ -5776,7 +6005,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VExt
@@ -5787,7 +6016,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VReq
@@ -5798,7 +6027,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VOut
@@ -5809,7 +6038,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VFbk
@@ -5820,7 +6049,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VUnit
@@ -5831,7 +6060,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VSclMin
@@ -5842,7 +6071,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VSclMax
@@ -5853,7 +6082,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VMin
@@ -5864,7 +6093,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.VMax
@@ -5875,7 +6104,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.Sync
@@ -5886,7 +6115,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateChannel
@@ -5897,7 +6126,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOffAut
@@ -5908,7 +6137,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOpAut
@@ -5919,7 +6148,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateAutAut
@@ -5930,7 +6159,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOffOp
@@ -5941,7 +6170,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOpOp
@@ -5952,7 +6181,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateAutOp
@@ -5963,7 +6192,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOpAct
@@ -5974,7 +6203,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateAutAct
@@ -5985,7 +6214,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.StateOffAct
@@ -5996,7 +6225,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.SrcChannel
@@ -6007,7 +6236,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.SrcExtAut
@@ -6018,7 +6247,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.SrcIntOp
@@ -6029,7 +6258,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.SrcIntAut
@@ -6040,7 +6269,7 @@
1
-
+
ns=3;s=services.dummy.procedures.proc_3.procedure_parameters.proc_param_dint.op_src_mode.SrcExtOp
@@ -6051,7 +6280,7 @@
1
-
+