Hi 👋!
Ich versuche KOs aus den Projektdaten zu parsen und frage mich gerade wie man die Objektnummer bekommt. Vielleicht kennt sich ja hier jemand mit Applikationen gut genug aus um mir auf die Sprünge helfen zu können 🙂
Bei Applikationen ohne Modulen oder aus der "ComObjectTable" sieht es klar aus - da nehme ich einfach das "Number" Attribut.
Wenn es sich um Objekte handelt, die über Module definiert werden, dann hab ich das bisher so gemacht:
Aus dem Projekt hab ich den Wert für "ObjNumberBase" rausgesucht (hier im Beispiel 40) und mit der "Number" des zugehörigen ComObject addiert.
Jetzt hab ich allerdings eine Applikation gefunden (MDT DALI Control PRO64) wo das nicht mehr funktioniert, und ich komm nicht wirklich drauf wie man es machen könnte.
"L-1" kann ich natürlich nicht mit irgendwas addieren 😬 und ich werd auch nicht wirklich schlau draus was das bedeutet. Die Spur endet für mich hier:
Ich versuche KOs aus den Projektdaten zu parsen und frage mich gerade wie man die Objektnummer bekommt. Vielleicht kennt sich ja hier jemand mit Applikationen gut genug aus um mir auf die Sprünge helfen zu können 🙂
Bei Applikationen ohne Modulen oder aus der "ComObjectTable" sieht es klar aus - da nehme ich einfach das "Number" Attribut.
Code:
<ComObjectTable> <ComObject Id="M-0083_A-013A-32-DCC1_O-15" Name="ReglerOutValve_0" Text="Channel A" Number="15" FunctionText="Send valve status" ObjectSize="1 Bit" ReadFlag="Enabled" WriteFlag="Disabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" DatapointType="DPST-1-11" /> </ComObjectTable>
Aus dem Projekt hab ich den Wert für "ObjNumberBase" rausgesucht (hier im Beispiel 40) und mit der "Number" des zugehörigen ComObject addiert.
Code:
<!-- Applikation --> <ComObjects> <ComObject Id="M-0083_A-013A-32-DCC1_MD-2_O-2-1" Name="IstWert" Text="Channel A" Number="1" FunctionText="Receive temperature value" ObjectSize="2 Bytes" ReadFlag="Disabled" WriteFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Enabled" UpdateFlag="Enabled" ReadOnInitFlag="Disabled" BaseNumber="M-0083_A-013A-32-DCC1_MD-2_A-2" /> </ComObjects> <Arguments> <Argument Id="M-0083_A-013A-32-DCC1_MD-2_A-2" Name="ObjNumberBase" Allocates="40" /> </Arguments> <!-- Projekt - 0.xml --> <ModuleInstance Id="MD-2_M-2_MI-1" RefId="MD-2_M-2" RepeatIndex="379x1"> <Arguments> <Argument RefId="MD-2_A-2" Value="40" /> </Arguments> </ModuleInstance>
Code:
<!-- Applikation --> <ComObject Id="M-0083_A-0153-10-297A-O00EF_MD-1_O-2-16" Name="Converter 1, Test Control" Text="Converter {{ECG_NO}}, Test Start" Number="16" FunctionText="Start" ObjectSize="1 Byte" ReadFlag="Disabled" WriteFlag="Enabled" CommunicationFlag="Enabled" TransmitFlag="Disabled" UpdateFlag="Disabled" ReadOnInitFlag="Disabled" InternalDescription="Legacy" BaseNumber="M-0083_A-0153-10-297A-O00EF_MD-1_A-2" /> <ModuleDef Id="M-0083_A-0153-10-297A-O00EF_MD-1" Name="ModuleECG"> <Arguments> <Argument Id="M-0083_A-0153-10-297A-O00EF_MD-1_A-1" Name="ParamOffsBase" Allocates="40" /> <Argument Id="M-0083_A-0153-10-297A-O00EF_MD-1_A-2" Name="ObjNumberBase" Allocates="23" /> <Argument Id="M-0083_A-0153-10-297A-O00EF_MD-1_A-3" Name="ECG_NO" Allocates="1" /> </Arguments> <!-- Projekt - o.xml --> <ModuleInstances> <ModuleInstance Id="MD-1_M-1_MI-1" RefId="MD-1_M-1" RepeatIndex="322x1 323x1"> <Arguments> <Argument RefId="MD-1_A-1" Value="L-2" /> <Argument RefId="MD-1_A-2" Value="L-1" /> <Argument RefId="MD-1_A-3" Value="L-3" /> </Arguments> </ModuleInstance>
Code:
<!-- Applikation --> <Allocators> <Allocator Id="M-0083_A-0153-10-297A-O00EF_L-1" Name="AllocatorObjECG" Start="559" maxInclusive="2031" /> </Allocators>
- Was sind diese "Allocator" Objekte, und gibt es dazu irgendwo einen Wert auszulesen?
- Bin ich irgendwo falsch abgebogen, und es wäre viel einfacher die Objektnummern der einzelnen "ComObjectInstanceRef" rauszuparsen?
Kommentar