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

Ergebnis 1 bis 10 von 10

Thema: Lokierte Variablen (Überlappung)

  1. #1
    Registriert seit
    25.02.2015
    Beiträge
    35
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen.
    Ich habe in meiner Steuerung diverse Arrays, bzw. deren Indizes, mit In- und Outputs verknüpft. Hin und wieder kommt es jedoch zu Problemen. Wenn ich die Variablen setze werden manchmal andere oder mehrere Variablen gesetzt. Ich vermute mal, dass das damit zu tun hat, dass sich die Adressbereiche überlappen. Ich habe aber auch ausreichend "Platz" zwischen den Arrays gelassen. Bei mir sieht das dann so aus:
    Code:
    xxx01            AT%QD200 : ARRAY[0..39] OF DINT;
    xxx02            AT%QD400 : ARRAY[0..39] OF DINT;
    xxx03            AT%QW800 : ARRAY[0..39] OF WORD;
    xxx04            AT%QB1000 : ARRAY[0..39] OF BOOL;
    xxx05            AT%QB1100 : ARRAY[0..39] OF BOOL;
    xxx06            AT%QD1200 : ARRAY[0..39] OF UDINT;
    xxx07            AT%QD1600 : ARRAY[0..39] OF DINT; 
    xxx08            AT%QD2000 : ARRAY[0..39] OF DINT; 
    xxx09            AT%QD2400 : ARRAY[0..39] OF UINT; 
    xxx10            AT%QD2800 : ARRAY[0..39] OF UINT;
    xxx11            AT%QD3200 : ARRAY[0..39] OF UINT;
    xxx12           AT%QD3600 : ARRAY[0..39] OF UINT;
    xxx13            AT%QW4000 : ARRAY[0..39] OF WORD; 
    xxx14           AT%ID5200 : ARRAY[0..39] OF DINT;
    xxx15           AT%ID5600 : ARRAY[0..39] OF DINT;
    xxx16            AT%ID6000 : ARRAY[0..39] OF DINT;
    xxx17            AT%IW6400 : ARRAY[0..39] OF WORD;
    xxx18            AT%IW6800 : ARRAY[0..39] OF WORD;
    Kann mir jemand sagen, was ich falsch mache?
    Zitieren Zitieren Lokierte Variablen (Überlappung)  

  2. #2
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.576
    Danke
    285
    Erhielt 261 Danke für 235 Beiträge

    Standard

    Zitat Zitat von MerlinBerlin Beitrag anzeigen
    Hin und wieder kommt es jedoch zu Problemen. Wenn ich die Variablen setze werden manchmal andere oder mehrere Variablen gesetzt.

    Flüchtig durchgesehen würde ich sagen, die Abstände sind großzügig bemessen. Bei Überlappungen hättest Du aber immer den Fehler und nicht hin und wieder.

    Kann es sein, das da schon VKE's mit reinspielen? Also wenn Du bestimmte Bits/Bytes setzt, das andere vom Programm gesetzt werden?

  3. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.418 Danke für 2.014 Beiträge

    Standard

    ... ich sehe da jetzt keine Überlappung ... vielleicht liegt das Problem doch eher in deinem Code ...? Vielleicht postest du den mal ...

  4. #4
    Registriert seit
    25.02.2015
    Beiträge
    35
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Der Fehler lag tatsächlich im Code. Sollte alles hinhauen jetzt. Vielen Dank für die Mühe!

    Nur so am Rande, für was steht VKE?

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Zitat Zitat von MerlinBerlin Beitrag anzeigen
    Code:
    xxx04            AT%QB1000 : ARRAY[0..39] OF BOOL;
    xxx05            AT%QB1100 : ARRAY[0..39] OF BOOL;
    Wieviel Platz belegt ein BOOL in einem Array in Deinem unbekannten Programmiersystem?
    Adressiert das BOOL-Array tatsächlich Ausgänge %Q1000.0, %Q1000.1, %Q1000.2 ...?

    Warum legst Du Arrays über die Hardware-Ein-/Ausgänge?
    Kann man in Deinem Programmiersystem Ein-/Ausgangsadressen mit Adresslücken projektieren?
    Hast Du mit Deiner Array-Lösung etwa Probleme bei der Fehler-Diagnose?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Registriert seit
    25.02.2015
    Beiträge
    35
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das BOOL-Array adressiert %Q1000 bis %Q1039.

    Weil ich mehrere Achsen steuere, die die selben Variablen haben.
    Die Frage verstehe ich nicht. Was bedeutet Adresslücken projektieren?

  7. #7
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.576
    Danke
    285
    Erhielt 261 Danke für 235 Beiträge

    Standard

    @PN/DP
    Wenn ich alle Info's richtig zusammenführe, reden wir von einer Beckhoff CX9020.
    Bei Beckhoff ist ein Bool adresstechnisch ein Byte.

    @MerlinBerlin
    VKE = Verknüpfungsergebnis, also das Ergebnis einer logischen Operation oder Berechnung

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Du programmierst "mehrere Achsen" und weißt nicht was ein VKE ist und was eine Adresslücke ist???
    ( Edit: OK, das Wort VKE ist bei IEC61131 tatsächlich nicht so geläufig. )


    Zitat Zitat von MerlinBerlin Beitrag anzeigen
    Ich habe aber auch ausreichend "Platz" zwischen den Arrays gelassen. Bei mir sieht das dann so aus:
    Code:
    xxx02            AT%QD400 : ARRAY[0..39] OF DINT;
    xxx03            AT%QW800 : ARRAY[0..39] OF WORD;
    Kann Dein Programmiersystem E/A-Modulen Adressen mit Lücken dazwischen zuweisen?:
    QB400...QB559
    - Adresslücke -
    QB800...QB879

    Kann es vielleicht sein, daß z.B. %QD400 und %QW800 auf den selben Adressen liegen?

    Zitat Zitat von MerlinBerlin Beitrag anzeigen
    Das BOOL-Array adressiert %Q1000 bis %Q1039.
    Warum ist Deine Schreibweise der Ausgänge so komisch? Warum nicht %Q1000.0 oder %QB1000?

    Was für eine SPS programmierst Du mit welchem Programmiersystem?
    Hat Dein Programmiersystem vielleicht eine Prüffunktion, welche überlappende Speicherbereiche findet?

    Harald
    Geändert von PN/DP (17.03.2015 um 11:27 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    25.02.2015
    Beiträge
    35
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Korrekt Daher auch die Anfängerfragen.

    Ich gehe davon aus, dass es möglich ist. Den Fall habe bereits geprüft und den Code angepasst. Es scheint jetzt zu laufen. Ich bin nur verwundert, dass ich solche Probleme nur hin und wieder hatte.

    Ich nutze TwinCAT3 in Visual Studio 12, weiß nicht ob es da solche Funktionen gibt.

    Habe bei der Schreibweise nur das B vergessen, sorry.

    Wie gesagt, es läuft jetzt. Es schien ein Fehler im Code gewesen zu sein und zusätzlich einer in der Adressierung, der sich aber noch nicht bemerkbar gemacht hat.

    Vielen Dank.

  10. #10
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Seit der letzten Version (Tc3.1.401 gibt es eine Überprüfungsfunktion für überlappende Speicherbereiche.

    Aber in den meisten Fällen ist nicht Deklaration das Problem sondern die Nutzung im Code.
    Hierfür gibt es "POU for implicit check", d.h. Funktionen, die z.B. eine dynamisch auftretende Bereichsüberschreitung (und somit Überlappung beim Zugriff) detektieren und Verhindern.

    Gruß,
    mac203

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 11.03.2014, 10:04
  2. Lokierte Variablen über Umweg remanent machen?
    Von ASDF0815 im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 25.04.2013, 11:39
  3. Überlappung von Schaltflächen WFL2008
    Von sps_ike im Forum HMI
    Antworten: 2
    Letzter Beitrag: 10.02.2012, 09:33
  4. ANY Variablen
    Von rsu76 im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 31.08.2010, 14:18
  5. Antworten: 5
    Letzter Beitrag: 30.11.2009, 10:27

Stichworte

Lesezeichen

Berechtigungen

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