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

Ergebnis 1 bis 4 von 4

Thema: Structarray auf Modbudbus

  1. #1
    Registriert seit
    28.01.2014
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    Ich arbeite mit der Wago 880. Ich habe ein Struct, das ich in einem Array anlege und auf den Modbus lege. Das ganze sieht dann so aus:

    m_Panel_config AT %MW4500: ARRAY[1..10] OF panelconfig;

    In dem Struct sind verschiedene Word, Bools und auch ein String. Im Struct sind folgene Variablen drin:

    aktuelle_szene: WORD := 1;
    command: WORD :=0;
    raum: WORD:=1;
    neuer_raum: WORD;
    offline: BOOL:=FALSE;
    dummy: BOOL; (*damit offline = Wort lang ist*)
    Passwort: STRING(10);

    Über ein Pro-Face Panel greife ich jetzt auf Element[0] zu und ich kann auch auf jede Variable des Structs über Modbus zugreifen.

    12288+4500 = 16788

    aktuelle_szene -> MW16788
    command -> MW16789
    ...
    offline -A MW16793:X00
    ...

    Und es funktioniert bestens. So wie ich das sehe, ist ein Struct 10 Wörter größ. Dann müsste das zweite struct im Array doch auf der Adresse 12288+4500+10 liegen. Dort passiert leider nichts. Kann mir da einer weiterhelfen?

    mfg
    Nils
    Geändert von Curby (12.02.2014 um 11:57 Uhr)
    Zitieren Zitieren Structarray auf Modbudbus  

  2. #2
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Und es funktioniert bestens
    Glaub ich nicht
    ist ein Struct 10 Wörter größ


    Modbus RTU arbeitet entweder mit Coil (1bit) oder Register(16bit)
    Ein Struct wie du oben geschrieben hast, wird so nicht unterstützt.
    Dein Struct musst du als Array of Word definieren
    ungefähr so:
    Code:
    aktuelle_szene:            WORD := 1;
        command:                   WORD :=0;
        raum:                         WORD:=1;
        neuer_raum:                WORD;
    
        //offline:                       BOOL:=FALSE;   
        //dummy:                      BOOL; (*damit offline = Wort lang ist*)
    // Die Bool Variablen als ein Word zusammenfassen so bekommst du 16 Bool in das Wort. Alternativ fasst Codesys jede Bool Variable in 1 Byte, so dass du nur // 2 Bool Variablen je Word hast.
    Variable_Bool:WORD;
    
        //Passwort:                   STRING(10);
    //Passwort = 10 Zeichen = 10 Byte =  5 Word
    Passwort_Zeichen1_2:Word;
    Passwort_Zeichen3_4:Word;
    Passwort_Zeichen5_6:Word;
    Passwort_Zeichen7_8:Word;
    Passwort_Zeichen9_10:Word;
    Damit ist dein Array 10 Worte gross
    1. Wert = Adresse16788
    10.Wert=Adresse 16797

    Wenn du jetzt dieses Array als Array[1..10] of Word definierst erhälst du dein gewünschtes Ergebniss
    Grüsse Holger

  3. #3
    Curby ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.01.2014
    Beiträge
    29
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi,

    ich hab mir jetzt mal die Größe eines Elementes des Arrays mit sizeof ausgeben lassen. Ein Element ist deutlich größer als von mir erwartet, aber ab der Startadresse eines beliebigen Elementes kann ich jede Variable des Structs wie erwartet adressieren. Hat ein Structelement einen Overhead am Ende des Adressbereiches?

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Curby Beitrag anzeigen
    Hat ein Structelement einen Overhead am Ende des Adressbereiches?
    Nein, aber
    1) ein STRING(10) ist 11 Bytes lang
    2) bei CodeSys gibt die Zahl hinter %MB, %MW, %MD immer die Byteadresse an.

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 07.03.2013, 21:18
  2. Upgrade auf WinCE6 -> Speicher auf USB-Stick auslagern
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 30.01.2013, 23:09
  3. Antworten: 3
    Letzter Beitrag: 25.08.2006, 18:52
  4. Antworten: 2
    Letzter Beitrag: 04.05.2005, 11:31
  5. Antworten: 4
    Letzter Beitrag: 27.02.2005, 18:38

Lesezeichen

Berechtigungen

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