Array mit Eingängen verschalten

BNick

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

schreib grad in SCL eine Aufzugsteuerung. Da ich über 10 Lichtschranken abrufe hab ich folgendes versucht:

VAR_INPUT
Lichtschranken: ARRAY [1..16] OF BOOL;
END_VAR

Wenn ich den Baustein nun im OB1 aufrufen will kann ich dort kein EW übergeben um den Baustein mit der Hardware zu verschalten.
Gibts da eine möglichkeit oder muss ich doch alles "zu Fuß" machen?
 
Hallo,
Step7 (hat nichts mit SCL zu tun) kann von sich aus den Parameter Array nicht auflösen.
Du kannst dann dort auch nur den variablentyp und auch nur in der Größe wie deklariert, übergeben ...
Du kannst aber im TEMP-Bereich des aufrufenden Bausteins das Array auch anlegen, deinem Baustein übergeben und vor dem Aufruf desselben alle Einzelelemente manuell beschalten.
Oder du machst halt 10 Einzel-Variablen ... Sorry - anders geht es nicht ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte in TEMP oder Merker ein ARRAY[1..16] OF BOOL anlegen, das EW absolut oder register-indirekt adressiert darauf transferieren und dann das ARRAY an den Baustein übergeben...
ABER: "ARRAY" riecht verdammt nach indirekter Adressierung - im Zusammenhang mit Inputs und Outputs verheißt das nichts Gutes! Besser Finger weg von solchen Ideen. Schon alleine die Verbindung von den Inputs in den SCL-Baustein ist so in den Referenzdaten nicht mehr zu finden.

Harald
 
Oh dann lass ichs besser...und ich hab mich schon innerlich selbst gefeiert wieviel Arbeit ich mir doch spare :)
 
Och, an diesen Punkt kommt wohl jeder SPS-Programmierer irgendwann einmal. Nur leider können sich viele dann von der vermeintlichen Genialität nicht wieder lösen. :sad:

Harald
 
im SCL-FB einmal das BOOL Array definieren und einmal ein Word (oder INT), "AT" heißt hier das Zauberwort. Der In am Baustein bekommt dann Word/INT als Datentyp, Im Baustein wird dann mit dem BOOL Array gearbeitet.
 
Ich denke Oberchefe meint das so :


Code:
VAR_INPUT
       inEingWord : WORD ; // INT könnte konflikte geben mit EW zuweisung
           Lichtschranke AT inEingWord : ARRAY[1..16] OF BOOL ;
END_VAR

gruß fmbux
 
Zurück
Oben