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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: #define in codesys?

  1. #1
    Registriert seit
    25.09.2009
    Beiträge
    10
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich schreibe derzeit eine kleine Applikation für einen EtherCAT slave in TwinCAT um dessen Diagnosemeldungen über CoE auszulesen. Die ausgelesenen Fehlermeldungen (16-Bit Zahl) werden in einem File abgespeichert.

    Anstatt nun im Handbuch nachschlagen zu müssen welche Fehlermeldung zu der jeweiligen Fehlernummer gehört, will ich nun direkt den passenden Textstring in das File schreiben.
    Ich komme eher aus der C Ecke und mein erster Ansatz war einfach ein .h File zu erzeugen in dem per #define jeder Fehlernummer der passende Textstring zugeordnet wird.

    #define Error1 "Fehlertext zu Error1"
    #define Error2 "Fehlertext zu Error2"
    ...

    Dieses File würde ich dann einfach includieren und per switch/case den passenden Textstring suchen.
    Ist dies in TwinCAT möglich? Kann ich da beliebige .h-Files includieren und gibt es überhaupt defines in Codesys?
    Zitieren Zitieren #define in codesys?  

  2. #2
    Registriert seit
    19.04.2010
    Beiträge
    96
    Danke
    12
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ich weiß nicht, ob ich dich richtig verstehe, aber kannst du nicht einfach String variablen anlegen, die eben genau deinen Error Text haben und die dann ausgeben?

    error1 : STRING :='Fehlertext zu Error1';

    dann baust du einen baustein, der jedem error eine Zahl zuweist und switched die dann durch!?

  3. #3
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    In c wird in diesem Beispiel nicht einer Fehlernummer ein Text zugeordnet, sondern es wird eine Textkonstante mit dem entsprechenden Inhalt definiert. Diese kann so nicht in einem switch verwendet werden.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  4. #4
    HomerX ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.09.2009
    Beiträge
    10
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Das ginge schon, ich will die Fehlertexte allerdings gerne in einem extra header file haben und nicht im Programm drin.

    Falls sich texte ändern kann ich einfach das .h File beim Kunden tauschen, ohne dass der ans Programm rangehen muss.

  5. #5
    HomerX ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.09.2009
    Beiträge
    10
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    In c wird in diesem Beispiel nicht einer Fehlernummer ein Text zugeordnet, sondern es wird eine Textkonstante mit dem entsprechenden Inhalt definiert. Diese kann so nicht in einem switch verwendet werden.
    Das ist richtig, der switch/case würde aber auch nicht auf Error1/Error2 etc abfragen sondern auf die tatsächliche Fehlernummer

    switch(Fehlernummer)
    {
    case 1: /*Error1 als String in File schreiben*/
    break;
    case 2: /* Error2 als String in File schreiben*/
    break;

    etc...

  6. #6
    Registriert seit
    19.04.2010
    Beiträge
    96
    Danke
    12
    Erhielt 3 Danke für 3 Beiträge

    Standard

    ja, so wie ich das auch geschrieben habe. jedem string mit fehlertext eine fehlernummer zuweisen und die durch switchen.

    Du kannst das Programm auch einfach auf deinem Rechner lassen und es dann beim Kunden austauschen, wenn sich was geändert hat. ob du jetzt ein header file austauscht oder das SPS Programm eben neue aufspielst. Zeitunterschied etwa 5 sekunden.

  7. #7
    HomerX ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.09.2009
    Beiträge
    10
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Du kannst das Programm auch einfach auf deinem Rechner lassen und es dann beim Kunden austauschen, wenn sich was geändert hat. ob du jetzt ein header file austauscht oder das SPS Programm eben neue aufspielst. Zeitunterschied etwa 5 sekunden.
    Der unterschied ist der dass ich das .h File einem Kunden schicken kann und dieser das File einfach über das alte kopiert und es keine Probleme gibt... Wenn er ein neues Programm aufspielen muss tun sich manche schon schwerer.

    Desweiteren bin ich eigentlich Entwickler (des EtherCAT Slaves von dem die Fehler ausgelesen werden) und werden später nicht viel mit Kundensupport etc zu tun haben. Die Applikation ist mehr eine Art Hilfestellung für eventuelle Kunden unseres Slaves um die Diagnose zu vereinfachen.

    Gibt es keine defines in Codesys? Könnte ich evtl den Vorschlag von dir aufgtreifen und einfach Stringvariablen erzeugen, diese aber in einem seperaten headerfile? macht codesys da probleme wenn es Variablen verwenden soll die über ein headerfile includiert werden aber nicht im eigentlcihen Programm deklariert sind?

  8. #8
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von HomerX Beitrag anzeigen
    Das ist richtig, der switch/case würde aber auch nicht auf Error1/Error2 etc abfragen sondern auf die tatsächliche Fehlernummer

    switch(Fehlernummer)
    {
    case 1: /*Error1 als String in File schreiben*/
    break;
    case 2: /* Error2 als String in File schreiben*/
    break;

    etc...
    Mit dieser Methode bringt die h-Datei nicht viel. Wenn Fehler dazukommen oder wegfallen, muss der Programmcode geändert werden.
    Unabhängiger wäre:
    - eine Struktur definieren bestehend aus Fehlernummer und Fehlertext
    - ein Array dieser Strukturen anlegen
    - eine Fehlernummer als Listenende definieren (z.B. -1),
    - einen Baustein schreiben, der die Liste nach der gewünschten Fehlernummer durchsucht und den zugehgörigen Text zurückgibt und das Endekennzeichen berücksichtigt
    Grundsätzlich muss nach der Änderung der Fehlerdefinitionen das Programm neu compiliert werden.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  9. Folgender Benutzer sagt Danke zu Rainer Hönle für den nützlichen Beitrag:

    HomerX (24.06.2010)

  10. #9
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    389
    Erhielt 390 Danke für 271 Beiträge

    Standard

    ich würde es mit einem Array machen das in eine CSV Datei geschrieben wird

    Code:
    fehlertext1,fehlertext2,fehlertext3,fehlertextn
    Würde dann in der CSV Datei stehen, welche man einfach mit Excel ändern kann. Das ganze liest man im Programm aus, packt es in ein Array. Dann ruft man nur noch folgendermaßen auf:

    Arrayname[fehlernummer(-1)]

    Man muss vermutlich noch ein Offset von -1 aufrechnen da das Array von 0-n gefüllt wird, und deine Fehlernummern wohl 1-n sind. Außer 0 steht für ALLES OK, dann kannst du Array 0 leer lassen und somit nichts anzeigen.

    Der Vorteil läge darin das die Maschine weiterläuft wenn sich die Fehlermeldungen ändern, da man nur via FTP auf das Filesystem zugreift.

    MfG

    Marcel

  11. #10
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das kann funktionieren, wenn die Fehlernummern schön aufsteigend und ohne Lücken sind
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. CoDeSys
    Von doug82 im Forum PC- und Netzwerktechnik
    Antworten: 6
    Letzter Beitrag: 02.11.2011, 21:29
  2. CoDeSys V3
    Von junkie im Forum CODESYS und IEC61131
    Antworten: 44
    Letzter Beitrag: 20.04.2011, 13:46
  3. CodeSys
    Von Mark4you im Forum Suche - Biete
    Antworten: 6
    Letzter Beitrag: 01.02.2011, 10:28
  4. CoDeSys
    Von Gast im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 16.06.2006, 21:35
  5. allgem. C Script Frage mit "define" deklarierten Variablen
    Von dellamorte-dellamore im Forum HMI
    Antworten: 9
    Letzter Beitrag: 13.02.2006, 11:46

Lesezeichen

Berechtigungen

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