Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Aufbau der CoDeSys Symboldatei

  1. #1
    Registriert seit
    06.03.2008
    Ort
    Herisau
    Beiträge
    44
    Danke
    8
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Allerseits

    Ich suche eine Beschreibung zum Aufbau der Symboldatei von CoDeSys (Schlüsselwörter, Dateitypen etc.) und habe im Netz auf die Schnelle nichts gefunden. Könnt Ihr mir da behilflich sein?

    Wieso das Ganze?
    • Ich habe eine Steuerung vor mir liegen, welche Rezepte in binärer Form sichert. Ich habe den Auftrag diese binäre Form in eine interpretierbares Format zu bringen. Leider variiert die Struktur der Rezepte von Projekt zu Projekt, was die Interpretation des binären Files nicht gerade einfacher macht. Ich möchte die Struktur des binären Files anhand der Symboldatei ermitteln, damit ich anschliessend das binäre File in ein lesbares Format bringen kann.


    Vielen Dank für Eure Hilfe!
    Zitieren Zitieren Aufbau der CoDeSys Symboldatei  

  2. #2
    Registriert seit
    07.06.2007
    Beiträge
    143
    Danke
    2
    Erhielt 24 Danke für 24 Beiträge

    Standard

    Hallo Flash,

    wie der Aufbau ist steht meines Wissens nirgendwo. Ich vermute mal du hast alles Rezeptdaten in einer Struktur (diese kann u.U. aus Unterstrukturen bestehen). Dann heißt die z.B.: stRecipe[0..n].RealData, ...

    Jetzt musst du die .sym Datei nur noch öffnen und schauen was da drin steht.

    Das sieht z.B.: so aus:

    Code:
    ;Version=2
    ;ProjectId=6752396
    ;Checksum=0
    ;Filesize=0
    .stHMI.bToHMI_AutoActive:BOOL:4:500384:1:b:16#40000003
    .stHMI.bToHMI_AutoNotActive:BOOL:4:500385:1:b:16#40000003
    .stHMI.bToHMI_BoxOutputActive:BOOL:4:500395:1:b:16#00000003
    Kann man eigentlich direkt ohne weitere Erklärung verstehen. Nun mit einer Software deiner Wahl (CoDeSys, Visual Studio C#, VBA, Excel,...) welches das Einlesen von Dateien erlaubt weiter bearbeiten.
    Ich würde das Zeile für Zeile machen und nach dem Schlüsselwort suchen welches für dich dein Rezept darstellt. z.B. "stRecipeSets". Nun weißt du, dass du an der ersten Rezeptzeile bist. Dann suchst du nach ":" und dann wieder nach ":". Dort hast du das Variablenformat z.B. "BOOL". Das belegt immer ein Byte obwohl nur 1 Bit benutzt wird. Bei Real, Dint, SINT... entsprechend 1,2,4 Bytes (siehe Codesysdoku). Aus diesen Informationen kannst du dir nun eine Sicht auf die Daten erstellen also z.B. BOOL;BOOL;DINT;DINT;REAL;REAL;BOOL;..... Diese Sicht musst du nun nur noch auf die im Binärformat vorliegenden Rezeptdaten anwenden und fertig. Willst du auch noch die Namen für die entsprechende Variable usw. haben musst du dir die auch noch aus der SYM extrahieren. Ich denke das Ganze ist relativ simpel möglich. Fertig gibt's das so aber nicht.

    Zusatz:
    Die Länge des Datenpakets steht auch in der SYM Datei vor dem ":b:16#" hier immer "1". Das musst du bei Standarddatentypen nicht auslesen aber wenn du Strings hast die du z.B. mit 20Byte Länger oder 255 Byte Länge definiert hast dann hier besser die Länge noch aus der Zeile extrahieren.

    Ich hoffe das hilft dir weiter.

  3. #3
    Flash ist offline Benutzer
    Themenstarter
    Registriert seit
    06.03.2008
    Ort
    Herisau
    Beiträge
    44
    Danke
    8
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Excelite

    Vielen Dank für Deine schnell ausführliche Antwort. Ich habe mich wohl etwas unklar ausgedrückt. Ich möchte mit der XML-Datei (.SYM_XML) arbeiten. Dort wird der Datentyp durch einen Wert und nicht durch Klartext repräsentiert. Ausserdem hat es noch weitere Schlüsselwörter wie Flags, Access und so weiter. Ich suche nach einer Beschreibung zu diesen Schlüsselwörtern und was die zugehörigen Werte bedeuten.

    Hier ein Beispiel der SYM_XML-Datei:
    Code:
      <Var Type="75" Flags="301989952" Access="98" RefId="5" Offset="49648" TopLevelType="75">.g_stConfAxis</Var>
      <Var Type="74" Flags="268435459" Access="98" RefId="5" Offset="49888" TopLevelType="75">.g_stConfAxis.abyAxisInStation</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49906" TopLevelType="75">.g_stConfAxis.abyAxisInStation[10]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49908" TopLevelType="75">.g_stConfAxis.abyAxisInStation[11]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49910" TopLevelType="75">.g_stConfAxis.abyAxisInStation[12]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49912" TopLevelType="75">.g_stConfAxis.abyAxisInStation[13]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49914" TopLevelType="75">.g_stConfAxis.abyAxisInStation[14]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49916" TopLevelType="75">.g_stConfAxis.abyAxisInStation[15]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49918" TopLevelType="75">.g_stConfAxis.abyAxisInStation[16]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49920" TopLevelType="75">.g_stConfAxis.abyAxisInStation[17]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49922" TopLevelType="75">.g_stConfAxis.abyAxisInStation[18]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49924" TopLevelType="75">.g_stConfAxis.abyAxisInStation[19]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49888" TopLevelType="75">.g_stConfAxis.abyAxisInStation[1]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49926" TopLevelType="75">.g_stConfAxis.abyAxisInStation[20]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49890" TopLevelType="75">.g_stConfAxis.abyAxisInStation[2]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49892" TopLevelType="75">.g_stConfAxis.abyAxisInStation[3]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49894" TopLevelType="75">.g_stConfAxis.abyAxisInStation[4]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49896" TopLevelType="75">.g_stConfAxis.abyAxisInStation[5]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49898" TopLevelType="75">.g_stConfAxis.abyAxisInStation[6]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49900" TopLevelType="75">.g_stConfAxis.abyAxisInStation[7]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49902" TopLevelType="75">.g_stConfAxis.abyAxisInStation[8]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49904" TopLevelType="75">.g_stConfAxis.abyAxisInStation[9]</Var>
      <Var Type="68" Flags="3" Access="98" RefId="5" Offset="49778" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49787" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[10]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49778" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[1]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49779" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[2]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49780" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[3]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49781" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[4]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49782" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[5]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49783" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[6]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49784" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[7]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49785" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[8]</Var>
      <Var Type="1" Flags="3" Access="98" RefId="5" Offset="49786" TopLevelType="75">.g_stConfAxis.abyNoOfAxisInStation[9]</Var>
      <Var Type="73" Flags="3" Access="98" RefId="5" Offset="49788" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49797" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[10]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49798" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[11]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49799" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[12]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49800" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[13]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49801" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[14]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49802" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[15]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49803" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[16]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49804" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[17]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49805" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[18]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49806" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[19]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49788" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[1]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49807" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[20]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49789" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[2]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49790" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[3]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49791" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[4]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49792" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[5]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49793" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[6]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49794" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[7]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49795" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[8]</Var>
      <Var Type="46" Flags="3" Access="98" RefId="5" Offset="49796" TopLevelType="75">.g_stConfAxis.aiAxisNoInStation[9]</Var>
      <Var Type="74" Flags="268435459" Access="98" RefId="5" Offset="49848" TopLevelType="75">.g_stConfAxis.awAxisFunc</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49866" TopLevelType="75">.g_stConfAxis.awAxisFunc[10]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49868" TopLevelType="75">.g_stConfAxis.awAxisFunc[11]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49870" TopLevelType="75">.g_stConfAxis.awAxisFunc[12]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49872" TopLevelType="75">.g_stConfAxis.awAxisFunc[13]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49874" TopLevelType="75">.g_stConfAxis.awAxisFunc[14]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49876" TopLevelType="75">.g_stConfAxis.awAxisFunc[15]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49878" TopLevelType="75">.g_stConfAxis.awAxisFunc[16]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49880" TopLevelType="75">.g_stConfAxis.awAxisFunc[17]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49882" TopLevelType="75">.g_stConfAxis.awAxisFunc[18]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49884" TopLevelType="75">.g_stConfAxis.awAxisFunc[19]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49848" TopLevelType="75">.g_stConfAxis.awAxisFunc[1]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49886" TopLevelType="75">.g_stConfAxis.awAxisFunc[20]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49850" TopLevelType="75">.g_stConfAxis.awAxisFunc[2]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49852" TopLevelType="75">.g_stConfAxis.awAxisFunc[3]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49854" TopLevelType="75">.g_stConfAxis.awAxisFunc[4]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49856" TopLevelType="75">.g_stConfAxis.awAxisFunc[5]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49858" TopLevelType="75">.g_stConfAxis.awAxisFunc[6]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49860" TopLevelType="75">.g_stConfAxis.awAxisFunc[7]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49862" TopLevelType="75">.g_stConfAxis.awAxisFunc[8]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49864" TopLevelType="75">.g_stConfAxis.awAxisFunc[9]</Var>
      <Var Type="74" Flags="268435459" Access="98" RefId="5" Offset="49808" TopLevelType="75">.g_stConfAxis.awAxisType</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49826" TopLevelType="75">.g_stConfAxis.awAxisType[10]</Var>
      <Var Type="42" Flags="268435459" Access="98" RefId="5" Offset="49828" TopLevelType="75">.g_stConfAxis.awAxisType[11]</Var>
    Kennst Du Dich auch mit dieser Datei auch aus?

    MfG Flash

  4. #4
    Registriert seit
    07.06.2007
    Beiträge
    143
    Danke
    2
    Erhielt 24 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Flash,

    sorry das scheint ein wenig undurchsichtiger zu sein als die .sym Datei. Doku dazu kenne ich nicht. Gibt es aber sicherlich auf Nachfrage bei 3S direkt. An deiner Stelle würde ich einfach ein Datenpaket als SYM_XML ausgeben und gleichzeitig als SYM. Dann müsstest du die direkte Übersetzung bekommen in dem Format wie ich es dir als Beispiel geschrieben habe. Das wäre meine Vorgehensweise. Mehr Infos habe ich leider nicht.

  5. Folgender Benutzer sagt Danke zu excelite für den nützlichen Beitrag:

    Flash (13.11.2015)

Ähnliche Themen

  1. Wago-Codesys-Projekt Aufbau
    Von darek im Forum WAGO
    Antworten: 3
    Letzter Beitrag: 24.10.2015, 10:53
  2. Codesys braucht ewig um die Symboldatei zu schreiben.
    Von nmap im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 10.02.2012, 08:56
  3. Codesys OPC Symboldatei
    Von markuscps im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 26.10.2011, 09:27
  4. Immer der gleich DB-Aufbau
    Von Deep Blue im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 08.02.2008, 16:27
  5. Aufbau der Datentelegramme
    Von _dm_ im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 11.11.2005, 10:32

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •