Brauche Hilfe bei einer SCL-Programmierung

Schneibel

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte einen SCL-Baustein programmieren und hänge total fest. Ich habe auch noch nicht so viel Erfahrung im programmieren von SCL, also habt bitte Nachsicht mit mir.
Im Anhang habe ich den Code in Textform angehängt, hoffe man kann damit was anfangen

Also die Aufgabenstellung:

Es geht darum max 24 MV-Süpulen zu schalten zu zwar einmal Automatisch ein über einen Takt z.B. Taktmerker Mx.5 (1s) oder über im Handbetrieb über Knebelschalter Takt vorwärts (ein)/rückwärts(aus).
Die besonderheit ist das ich einen DB61 mir erstellt habe wo ein Bitmuster hinterlegt ist für die A-Seite bzw. die B-Seite der Ventile. Diese Bitmuster möchte ich Taktweise in den Ausgangs-DB50 schreiben.
Das Bitmuster für z.B. 12 Bi-stabile MV heißt dann A-Seite 1010 1010 1010 1010 und für die B-Seite 0101 0101 0101 0101. Diese Bitmuster sollte Bit für Bit vom DB61 in den Ausgangs-DB50 geschrieben werden,wobei die Ventil anbleiben und erst mit Stop ausgeschaltet werden

Bitmuster A-Spulen sind Byte 0=DB61.DBB0 Byte1=DB61.DBB1 Byte2=DB61.DBB2
Ausgangsspule Byte 0-2 liegen im DB50.DBB 4-6

Anhang anzeigen Ventilprog.txt

keine ahnung ob ich auf dem richtigen Weg bin oder es nur komplizierter mache als es ist. hoffe jemand kann mir helfen


Vielen Dank im vorraus

Gruß Schneibel
 
Hallo,
ich bin jetzt nicht allzu tief in den Code deines Bausteins eingestiegen. Dennoch sind mir ein paar Dinge aufgefallen :
- woher nimmst du den Takt für das Umschalten oder Weiterschalten deiner Bit-Matrix ? Das müßte ja entweder ein Taktmerker sein, den du als In-Parameter nimmst oder du bildest dir den Takt intern (über z.B. SFB4) selber.
- Das Mischen von absoluter und indirekter Adressierung bei solchen Bausteinen mag ich gar nicht. Bei einem FB kannst du dir innen alles merken und das, was du nach draussen (oder von draussen) brauchst machst du über die Schnittstelle.
- Bei der Bit-Muster-Geschichte ist mir gleich eingefallen : Als WORD vorgeben mit z.B. w#16#01010101 01010101, mit Init in den Baustein auf eine gleichartige Variable übernehmen und diese dann im Takt rotieren lassen. Das Bit 2^0 des Rotierers dann zur Steuerung des Ausgangs herausgeben.

Kannst du damit etwas anfangen ?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
den Autotakt habe ich in einem AWL-NW gebildet
UM 100.5 // Taktmerker 1s
FP M111.7
= M30.1

M30.1 ist mein AutoTakt, die pos Flanke habe ich wegen der einmaligen ausführung pro Zyklus gemacht.
Den Takt für die Matrix weiterschaltung da hänge ich fest, so wie es aussieht macht er die Übernahme der Bitmatrix ständig und zwar irre schnell.
Die Ausgänge blinken nur sehr kurz auf, anstatt gesetzt zu bleiben. Irrgentwo beist sich meine Katze in den Schwanz, brauche irgendeine Lösung wo ich Bit für Bit in den Ausgangs-DB schreiben kann

Laufvar1 ist meine Byte-Variable und Laufvar2 meine Bitvariable die ich pro schriebvorgang runter/hochlaufen lasse
Laufvar3 ist meine Ventilanzahl die ich vorher über ne Konfig im DB61 abgespeichert hatte, mit ihr zähle ich runter bis alle Ventile an sind

Edit: *Kopfklatsch* hab den Fehler gefunden, schande über mein Haupt, das Programm läuft so. Hatte nur in meinem RESET FC100 nen lade 0 transfer in DB50.DBD4 stehen und damit alle Ausgänge wieder auf 0 gesetzt. Darum merke lade und Transferbefehle immer über ne Sprungmarke.
Mann von dem Lehrgeld hätte ich schon zweimal in Urlaub fahren können :oops:

Gruß schneibel
 
Zuletzt bearbeitet:
Zurück
Oben