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

Ergebnis 1 bis 7 von 7

Thema: Multiinstanzproblem

  1. #1
    Registriert seit
    24.05.2007
    Beiträge
    19
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Bin mir bewusst, dass schon einige Themen zu diesen Problem erstellt wurden, konnte aber in keinem eine Lösung für mein Problem finden.
    Bei mir tritt auch das Problem auf, dass der Funktionsbaustein alleine wunderbar läuft, aber sobald ich ihn 2 mal aufrufe funktonierts nicht mehr.

    Ich habe folgende Bausteine:
    FB23: Der Baustein von dem ich mehrere Instanzen aufrufe
    FB22: Hat in den STAT DriveA FB23 und DriveB FB23 und ruft dann im Anweisungsteil den FB23 zweimal auf (DriveA, DriveB)
    DB22: Enthält die Daten von DriveA und Drive B

    Ich übergebe dem FB23 eine IOAdress [INT] an einem Eingang, die er dann intern benutzt, um direkt die Peripherie anzusprechen. Also z.b Eingangsadresse ist 20 -> intern: StatusWord := PEW[IOAdress] (liest von Peripherie-Eingangsadresse 20 2 Bytes) oder StateVar := PEW[IOAdress + 10] (liest von Peripherie-Eingangsadresse 30 2 Bytes) usw.
    Daselbe für CiontrolWord := PAW[IOAdress] (schreibt an Peripherie-Ausgang 20 2 Bytes) usw.

    DriveA übergebe ich also IOAdress 20, DriveB gebe ich 40. Ich habe keine Adressbereichsüberschneidungen. Trotzdem habe ich das Gefühl das die beiden Instanzen sich irgendwie stören.

    Zum Beispiel ist alles in Ordnung, solange beide Instanzen auf PAW 20 bzw. PAW 40 16#083F schreiben. Ist nun DriveA fertig und schreibt 16#003F auf PAW 20, wechselt mir PAW 40 zyklisch(~20-30ms) zwischen 16#083F und 16#003F, obwohl DriveB immer noch 16#083F auf PAW 40 schreiben sollte!!!
    Ich versteh das nicht...

    Den FB22 rufe ich im OB1 auf.
    Ich benutze keine Timer und keine Merker. Ach ja, der Code ist in SCL geschrieben (Step7 5.4 SP2, SCL 5.3 SP2).

    Entschuldigt, dass schon wieder das gleiche Thema angeschnitten wurde, aber ich sitze jetzt seit 2 Tagen an diesem Problem und sehe keinen Anhaltspunkt mehr, um diesen Fehler zu beheben.

    Danke für eure Hilfe
    Florian
    Zitieren Zitieren Multiinstanzproblem  

  2. #2
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Hmm ?

    Ruftst du auch wirklich bei bausteine als intanzen auf, muss also keinen instanz DB für die beiden FB23 vergeben ????

    Entschuldige die plumpe frage, kenne aber leute die auch schon darüber gestolpert sind
    Geändert von MW (02.08.2007 um 17:15 Uhr)

  3. #3
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Benutzt Du irgendwelche TEMPS in Deine FBs (insbesondere solche die unter Umständen übersprüngen werden können)? Wenn, dann bevor Du sonst was weiter machst, am Anfang deines Programms sollen die TEMPs auf definierte Werte initialisiert werden.

    Nicht initialisierte TEMPs können ganz komische Fehler mitbringen. Ein Program kann monatelang problemlos laufen und dann ganz plötzlich verrückt spielen.

    muss also keinen instanz DB vergeben
    Der Vorteil von Multiinstanzen ist das man nur einen IDB braucht, in diesem Fall DB22.
    Geändert von RMA (02.08.2007 um 17:12 Uhr)

  4. #4
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Habe' vergessen to fragen ob Du mit AR2 rumspielst in FB23? In Multiinstanzen wird AR2 benutzt um die Start-Adress der Datenbereiche für die Instanzen. Wenn Du AR2 benutzt z.B. für indirekte Adressierung, wenn Du nicht vorsichtig bist kannst Du Deine Instanzen kaputt machen.

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo Jörg,
    ich habe mir das Ganze mal durch den Kopf gehen lassen, anhand der Geschichte, die ich schon kenne. Der Tip von RMA mit den TEMP-Variablen ist m.E. der Schlüssel. Soweit ich weiß schreibst du die State_Var und das Statusword in den TEMP-Bereich. Leg mal ALLE deine TEMP-Variablen im STAT-Bereich an. Warscheinlich ist dein Problem dann schon beseitigt.

    @RMA:
    Das AR-Problem kann Jörg nicht haben, da er das Ganze (wie er geschrieben hat) mit SCL erstellt hat. SCL kümmert sich um diese Dinge schon selber ...

  6. #6
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Das AR-Problem kann Jörg nicht haben, da er das Ganze (wie er geschrieben hat) mit SCL erstellt hat. SCL kümmert sich um diese Dinge schon selber ...
    Stimmt, hatte ich vergessen, dass er das mit SCL erwähnt hat, als mir das mit AR2 eingefallen ist.

  7. #7
    joergflorian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.05.2007
    Beiträge
    19
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    Danke für eure Tipps. Wie Larry bereits richtig vermutet hat, lag es an den temporären Variablen. Mir war nicht bewusst, dass diese von beiden Instanzen beschrieben werden, und so einen undefinierten Zustand haben konnten, der jeweils ein Instanz ins Stolpern brachte.

    Ich habe nun die wenigen temporären Variablen als statische Variablen deklariert und schon funktioniert alles wie es soll. Ausserdem kann ich nun gemütlich diese Variablen in DB überwachen...

    Danke nochmals. Irgendwann werde ich die Stolperdrähte in Step7 verinnerlicht haben.

    Gruess Florian

Ähnliche Themen

  1. Multiinstanzproblem
    Von sixt im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 16.09.2009, 22:33

Lesezeichen

Berechtigungen

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