Multiinstanz in SCL

godi

Level-1
Beiträge
1.460
Reaktionspunkte
185
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich möchte in SCL (V 5.3 + SP1) einen SFB als Multiinstanz aufrufen. Wie geht das?

Deklariert habe ich ihn schon richtig aber wie ich den Baustein dann richtig aufrufe weiß ich nicht. Für normale Bausteine gibts ja unter Einfügen den Punkt Bausteinaufruf und dann werden automatisch die ganzen Parameter des Bausteines auch aufgelistet.
Muss ich bei Multiinstanzen die ganzen Parameter selbst hinschreiben?

godi
 
Instanzvariable anlegen!

Hallo,

DAS fügt der Editor automatisch ein:

TON.DBxxx(IN := // IN: BOOL
,PT := // IN: TIME
);
:= DBxxx.Q; // OUT: BOOL
:= DBxxx.ET; // OUT: TIME

und DAS musst du draus machen:

VAR
INST_TON : "TON"; // Instanzvariable
END_VAR
INST_TON (IN := (NOT INST_TON.Q), // IN: BOOL
PT := C_tVerz); // IN: TIME
S_boPls := INST_TON.Q; // OUT: BOOL
S_tTime := INST_TON.ET // OUT: TIME

Gruß U.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke!

Naja gegenüber AWL finde ich das schon kompliziert. :???:

Warum ist das eigentlich nicht so wie in AWL mit CALL Instanzname?
Da werden die Parameter ja auch gleich angelegt.

godi
 
Danke!

Naja gegenüber AWL finde ich das schon kompliziert. :???:

Warum ist das eigentlich nicht so wie in AWL mit CALL Instanzname?
Da werden die Parameter ja auch gleich angelegt.

godi

Die FUP/KOP Block Aurufe gefallen mir persönlich am besten, in AWL :-/ sieht man jedoch nur mit der Maus, ob sich's um IN oder OUT handelt.
 
Die FUP/KOP Block Aurufe gefallen mir persönlich am besten, in AWL :-/ sieht man jedoch nur mit der Maus, ob sich's um IN oder OUT handelt.

Hallo!

Aus dieser sicht ist SCL gut da beim automatischen Bausteinaufruf gleich als Kommentar dabeisteht obs Input oder Output ist und der Datentyp steht auch noch dabei. Das würde in AWL auch nicht schlecht sein.
Was ich nicht mag an FUP oder KOP das dann die Bausteine so groß sind das sie nicht auf den ganzen Bildschirm passen. (zumindest bei Bausteinen mit viel IN/OUT Variablen oder ist mein Laptop zu klein :rolleyes: ) Und wenn die Bausteine in AWL übersetzt werden dann sind die ganzen Zuweisungen über die Lokaldaten. Ist auch nicht gerade optimal.
Aber da lässt sich viel drüber reden von den vor und nachteilen der einzelnen Ansichten. :???:

godi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

DAS fügt der Editor automatisch ein:

TON.DBxxx(IN := // IN: BOOL
,PT := // IN: TIME
);
:= DBxxx.Q; // OUT: BOOL
:= DBxxx.ET; // OUT: TIME

und DAS musst du draus machen:

VAR
INST_TON : "TON"; // Instanzvariable
END_VAR
INST_TON (IN := (NOT INST_TON.Q), // IN: BOOL
PT := C_tVerz); // IN: TIME
S_boPls := INST_TON.Q; // OUT: BOOL
S_tTime := INST_TON.ET // OUT: TIME

Gruß U.

Frage:
Wie weiss der Compiler wo der "TON" herkommt?

VAR
INST_TON : "TON"; // Instanzvariable
END_VAR


Gruß
Karl
 
Danke Harald,

scheinbar bin ich von der Lösung meilenweit entfernt, weil meine Frage so blöd ist, dass diese nicht verstanden wird.

Ich mache eine SCL-Quelle.
In dieser will ich einen FB verwenden.
Wie mache ich der SCL-Quelle klar, dass es den FB überhaupt gibt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In einem SCL Programm sind automatisch die Symbole aus der Standardbibliothek (also alle OBs/SFCs/SFBs) und die Bausteine aus der IEC-Bibliothek bekannt.
Im Normalfall ist der TON als SFB4 bekannt, und braucht nicht vorher in den Programmordner oder in der Symbolik bekanntgegeben werden. Anderes Beispiel wären die IEC-Funktion zur Stringbearbeitung wir RIGHT oder LEFT. Diese kannst du direkt in deinem SCL Programm verwenden, und werden bei erfolgreichem übersetzen automatisch in deinen Bausteinordner kopiert.

In dem Beispiel oben ist TON aber in Anführungszeichen gesetzt. Dann wird dieses Symbol nur in der Symboltabelle gesucht.
 
Nicht verstanden,
also, ich habe ein quasi leeres Projekt mit einer CPU und will in der SCL-Quelle einen FB41 "CONT_C" verwenden.
Was ist hier zu tun?
 
Den "CONT_C" musst du vorher händisch in dein Programm einfügen, d.h. aus der Standard-Bibliothek in deinen Programmordner einfügen. Dann ist er auch in der Symboltabelle bekannt.

Wenn du CONT_C ohne Anführungszeichen verwendest, dann wird der SFB aus der Bibliothek verwendet der aber nur bei einigen CPUs vorhanden ist. Diese doppelte Bedeutung ist aber glaube ich nur beim CONT_C vorhanden.
 
Zurück
Oben