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

Ergebnis 1 bis 3 von 3

Thema: Variable Adressierung von IO`s zu einer Struktur ( Wie Wago IO-Checker)

  1. #1
    Registriert seit
    10.02.2015
    Beiträge
    2
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    ich beschäftige mich zur Zeit mit Codesys und einer Wago 750-8203, sowie diversen Ein- und Ausgangskarten. Ich möchte ein Programm schreiben, dass den Bus ausliest, die Karten erkennt, die Adressen setzt und einer Variablen (Struktur) zuweist damit später darauf zugegriffen werden kann. Vom Prinzip wie die Software " IO-Checker " von Wago selbst nur das ich dieses über Codesys erreichen möchte. Ich möchte die manuelle Eingabe der Karten über die Steuerungskonfiguration umgehen und dieses automatisch realisieren. Mein Problem ist dabei die Adresszuweisung zu dem "symbolischen" Variablennamen da dieses variable ist. Es soll unabhängig von der Reihenfolge der Karten erfolgen da diese in verschiedenen Systemen unterschiedlich angeordnet sein können. Ich möchte in einer Struktur die Adresse festhalten und der Strukturvariablen zuweisen damit später darauf zugegriffen werden kann und ich die Ein- oder Ausgänge über die Variablennamen setzten kann. Bis jetzt habe ich das Programm soweit geschrieben, dass ich den Bus auslese, die Karten erkenne und den Pointer auf die nächste Adresse zeigen lassen kann. Dies tue ich über die Bibliothek "WagoLibKBUS.lib" womit ich über den Offset den Pointer auf die Karten zeigen lasse. Im Folgeden ist ein Code-Beispiel für eine digitale Eingangskarte. An der Stelle wo die einzelnen Bits über den Pointer zugewiesen werden möchte ich nicht den Zustand "TRUE oder FALSE" zuweisen sondern die jeweilige Adresse speichern. Ich hoffe mir kann hier weitergeholfen werden. Vielen Dank im voraus.

    IF 34817 = ModulInfo.dwTypname [ i ] THEN (*Karte 750-430 = 34817*)
    IF FirstInput = 0 THEN (* Abfrage ob erste Karte vorliegt*)
    ptIN := ptIN; (*wenn ja, dann Startdresse zuweisen*)
    FirstInput := i; (* Merken, dass bereits erste Karte geschrieben wurde*)
    ELSE
    ptIN := ptIN + ( ModulInfo.dwIPI_ByteOffset [ i ] - ModulInfo.dwIPI_ByteOffset [ LastInput ] ) ; (* Pointer auf die nächste Adresse zeigen lassen*)
    END_IF;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 1 ] := ptIN^.0; (* Im Moment zuweisung der Eingänge (TRUE OR FALSE) zur Struktur ob und wieviele Eingänge vorhanden sind *)
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 2 ] := ptIN^.1;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 3 ] := ptIN^.2;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 4 ] := ptIN^.3;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 5 ] := ptIN^.4;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 6 ] := ptIN^.5;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 7 ] := ptIN^.6;
    HardwareIO.xDigitalInput [ HardwareIO.xDigitalInputCount + 8 ] := ptIN^.7;
    HardwareIO.xDigitalInputCount := HardwareIO.xDigitalInputCount + 8; (* Anzahl der Eingänge festhalten *)
    LastInput := i; (*Merken der letzten gefunden analogen Inputkarte zum berechnen desOffsets*)
    END_IF;
    Zitieren Zitieren Variable Adressierung von IO`s zu einer Struktur ( Wie Wago IO-Checker)  

  2. #2
    Registriert seit
    31.03.2012
    Ort
    Porta Westfalica
    Beiträge
    270
    Danke
    42
    Erhielt 93 Danke für 61 Beiträge

    Standard

    Hallo CarWie,
    für den 750-880'er gibt es von Wago ein Beispiel- Prg. "Datenlogger".
    Hier werden die Klemmen über "GetI0Config_PRG" ausgelesen usw.
    Vielleicht ist das Interessant für Dich.

    MfG aus OWL

  3. Folgender Benutzer sagt Danke zu dingo für den nützlichen Beitrag:

    CarWie (11.02.2015)

  4. #3
    CarWie ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    10.02.2015
    Beiträge
    2
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für Deinen Hinweis. Ich habe mir von Wago die PDF zum Datenlogger durchgelesen und wenn ich es richtig verstanden habe dann erhalte ich nur Auskunft über die Werte der Kanäle und wie ich diese in einer CSV-Datei ablege. Vom Prinzip würde es mir glaube ich schon helfen, wenn ich zb" Variable AT %IW [] oder Variable AT % IB [].[]" verwenden kann. Dann könnte ich mit einem Schleifenindex und dem Byteoffset die Adresse angeben. Leider glaube ich das diese Art der Adressierung nicht möglich ist zumindest weiß ich nicht wie ich die Anweisung schreiben soll.

Ähnliche Themen

  1. Retaindaten in einer Struktur
    Von SY50 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 15.09.2014, 08:05
  2. [codesys] variabler SMS Text abhängig von Zustand einer Variable
    Von linsenpago im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 27.02.2013, 13:35
  3. Elemente einer Struktur initialisieren
    Von Tigerente1974 im Forum Programmierstrategien
    Antworten: 5
    Letzter Beitrag: 20.01.2012, 07:18
  4. Länge einer Struktur im DB ermitteln
    Von Knut333 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.01.2009, 18:04
  5. WinCC flex Variable, Struktur, Array
    Von xhasx im Forum HMI
    Antworten: 3
    Letzter Beitrag: 11.06.2007, 16:30

Lesezeichen

Berechtigungen

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