SCL indirekte Adressierung von Strukturen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

die Idee ist den FB alle 100 ms im OB35 aufzurufen. Tatsächlich geht es nicht um Motoren, sondern um Messkarten zur Messung von pH, pO2 und Leitfähigkeit. Die Motoren waren nur als allgemeines Beispiel gedacht. Die Messkarten hängen als Slave alle an einem RS485-Bus. Die reihrum von der SPS abgefragt werden sollen. Dabei ist geplant alle 100 ms zunächst die Antwort des vorherigen Request auszuwerten bzw. auf korrekte Antwort zu prüfen und dann den nächsten Request auszulösen um die Daten von der nächsten Karte abzufragen. Dabei soll die Anzahl der Karten und die jeweiligen Parameter für diese Karten in einem DB abgelegt werden. Zu diesen Parametern gehören u. a. die Adresse der Karte am Bus, die zu lesende Speicheradresse auf der Karte und die Anzahl der zu übertragenden Daten. Insgesamt ähnelt es einer Art Profibus light.

Den OB 35 habe ich gewählt, um sicher zu stellen, das die Daten mit einer definierten Zykluszeit abgefragt werden. Da wir auch Graph7 verwenden, kann der Zyklus des OB1 schon mal 200 - 300 ms dauern. Bei 6 Karten im Multiplexing kann es schon mal 1,8 Sekunden dauern bis eine Karte erneut abgefragt wird.

Das Ziel ist, für das jeweilige Projekt, die notwendigen Anpassungen im DB vorzunehmen und die FCs und FBs unverändert weiterverwenden zu können.

Gruß Hagen
 
Zuletzt bearbeitet:
Das solltest du dann auf alle Fälle in einem zyklischen Programm erledigen.
Eine Zeitscheibe kannst du auch dort genauso gut hinterlegen.
Bedenke bitte, dass die Kommunikations-Bausteine azyklisch laufen - du also nicht zwangsläufig einen Send oder einen Receive sofort ausführst.
Ist die Zykluszeit deines Ablauf-Programms so hoch, so solltest du über eine stärkere/schnellere CPU nachdenken ... was hast du denn da aktuell am Start ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

standardmäßig wird eine S7-317-2PN/DP verwendet. Die ansonsten für unsere Ansprüche ausreicht. Ich könnte mir ergänzend eine ET200SP mit integrierter CPU vorstellen.

Was meinst Du damit eine Zeitscheibe in einem zyklischen Programm zu hinterlegen? Damit kann ich ehrlich gesagt, so nichts anfangen.

Gruß Hagen
 
Mit der "Zeitscheibe" dachte ich mir das ungefähr so :
Du könntest z.B. in einem Baustein die OB1-Zykluszeit aufaddieren bis du den Wert deines Wunsch-Intervalls erreicht/überschritten hast. Nun setzt du z.B. damit ein Bit, das deine Aktion freigibt (oder führst das direkt aus) und verringerst deinen Zeitintervall-Zähler um das Wunschintervall (damit erreichst du bei schwankender Zykluszeit, dass dein mittleres Intervall trotzdem passt).
Alternativ könnte natürlich auch der OB35 dieses Bit setzen - du wertest es dann halt nur im zyklischen Programm zum Starten deiner Kommunikations-Routinen aus. Genauer würde das aber auch nicht werden, da du weiterhin von deiner Zykluszeit abhängig bleibst.

Wie auch immer - bei einer Zykluszeit von 200 ms und mehr solltest du vielleicht doch über eine schnellere CPU nachdenken - es gäbe da ja auch noch eine 319 ...

Gruß
Larry
 
Die RS485 liegt sowieso auf einer ET200SP. Sollte sich die Sache mit dem OB35 tatsächlich als Problem darstellen, was ich in den nächsten Tagen testen werde, dann werde ich, wie schon geschrieben, in eine ET200SP mit integrierter CPU investieren. Heute habe ich erst mal meine Zeit in einen Multiplexer investiert, der sich die Instanzen eines UDT im DB in ein Array des gleichen UDT kopiert, um sie dann im Ring an die Schnittstelle weiter zu leiten. Das klappt zufriedenstellend. Für mich ist das Problem damit soweit gelöst. Gruß Hagen
 
Zurück
Oben