blkmov in SCL

Zuviel Werbung?
-> Hier kostenlos registrieren
Ja gut, also einfach einen awl - Baustein nehmen diesen ganzen Text darein kopieren und diesen Baustein dann in meinem SCL Prog aufrufen oder wie?
 
Ja gut, also einfach einen awl - Baustein nehmen diesen ganzen Text darein kopieren und diesen Baustein dann in meinem SCL Prog aufrufen oder wie?

Du erzeugst im Quellordner eine AWL-Quelle (Cursor auf den Quellen-Ordner, "Einfügen/St-Software/AWL-Quelle"), öffnest die, kopierst den Code da rein, paßt die FC-Nummer bei Bedarf an, übersetzt die Quelle. Dann steht der Baustein in deinem Bausteinordner. Nun kannst du ihn in SCL aufrufen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK, hab ich so gemacht, hab beim Übersetzen 2 Warnungen erhalten, dass ich sicherstellen soll das mein globaler DB richtig gesetzt ist, den Baustein hat er aber trotzdem erzeugt. Aber wenn ich diesen dann Aufrufe / übersetze ( nach Umbenennen), gehts trotzdem nicht und ich erhalte Fehlermeldungen: Ausdruck nicht korrekt.

Code:
(AnzahlDBB := 2 // IN: INT
  ,QuellDB := 100 // IN: INT
  ,QuellDW :=  1// IN: INT
  ,ZielDB := 101 // IN: INT
  ,ZielDW :=  1// IN: INT
  ); // INT

Hab jetzt einfach die Nr des DB eingefügt, da ja INT Werte gefragt waren, oder ? Was muss ich da tun?
 
OK, hab ich so gemacht, hab beim Übersetzen 2 Warnungen erhalten, dass ich sicherstellen soll das mein globaler DB richtig gesetzt ist, den Baustein hat er aber trotzdem erzeugt. Aber wenn ich diesen dann Aufrufe / übersetze ( nach Umbenennen), gehts trotzdem nicht und ich erhalte Fehlermeldungen: Ausdruck nicht korrekt.

Code:
(AnzahlDBB := 2 // IN: INT
  ,QuellDB := 100 // IN: INT
  ,QuellDW :=  1// IN: INT
  ,ZielDB := 101 // IN: INT
  ,ZielDW :=  1// IN: INT
  ); // INT

Hab jetzt einfach die Nr des DB eingefügt, da ja INT Werte gefragt waren, oder ? Was muss ich da tun?

Die Warnung ist ok, das ist in diesem Falle normal.
Das ist ein FC. FC haben einen Rückgabeparameter, in diesem Falle gebe ich den Retval des SFC20 zurück, also eine Int! Also muß dem Aufruf des FC in SCL eine Zuweisung vorangestellt werden. (Siehe Aufruf des SFC20, genau so).

QuellDW := 1 ????
ZeilDW := 1 ???
Ich würde meinen 0 oder 2, DW liegen immer an geraden Grenzen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ralle
QuellDW := 1 ????
ZeilDW := 1 ???
Ich würde meinen 0 oder 2, DW liegen immer an geraden Grenzen.
Gut das stimmt, daraus hab ich jetzt 0 gemacht. Aber die die Fehlermeldungen bleiben. Ich schreib mal wie ich das denke:
Code:
Wert:= (AnzahlDBB := [COLOR=red]Anzahl der beiden DBs zwischen denen getauscht wird also 2[/COLOR] // IN: INT
 ,QuellDB := [COLOR=red]Nr des Quell DB also 100[/COLOR] // IN: INT
 ,QuellDW :=  [COLOR=red]Nr des Quell DW im Quell DB also 0[/COLOR]// IN: INT
 ,ZielDB := [COLOR=#ff0000]Nr des Ziel DB also 101[/COLOR]  // IN: INT
 ,ZielDW := [COLOR=#ff0000]Nr des Quell DW im Ziel DB also 0[/COLOR]// IN: INT
 ); // INT
In meinem DB 101 stehen noch keine Variable (außer der Platzhaltervar.) drin. Im DB 100 sind verschiedene Variablen mit verschiedenen Datentypen enthalten.
Ist die Überlegung richtig?
 
Dein FC-Aufruf wäre richtig mit den entsprechenden Zahlen.

Du trägst da normale Int an den FC112 an, entweder fest oder natürlich als Variable. Die DB müssen natürlich existieren und soviele Byte haben, wie kopiert werden sollen. Was gensu in den DB steht (was für Variablen) ist egal, du mußt nur die richtige Länge einstellen.

Bsp:
Du willst 2 Real ab DW 0 übertragen.
Die Länge von 2 Real ist 8 Byte, also 0 bei QuellDW und 8 bei Anzahl DBB.
 
Ich bin total blöd, hab jetzt wie im Bsp von dir 2 real Zahlen im DB 100 angelegt (sonst nix) der DB 101 ist leer. Daraus ergibt sich:

Code:
Wert:= (AnzahlDBB := 2  // IN: INT
 ,QuellDB := 100 // IN: INT
 ,QuellDW := 0 // IN: INT
 ,ZielDB := 101 // IN: INT
 ,ZielDW := 8// IN: INT
 ); // INT

Was ist daran noch falsch, ich dreh gleich durch das kann doch nicht so schwer sein.:sb7:
 
Ich bin total blöd, hab jetzt wie im Bsp von dir 2 real Zahlen im DB 100 angelegt (sonst nix) der DB 101 ist leer. Daraus ergibt sich:

Code:
Wert:= (AnzahlDBB := 2  // IN: INT
 ,QuellDB := 100 // IN: INT
 ,QuellDW := 0 // IN: INT
 ,ZielDB := 101 // IN: INT
 ,ZielDW := 8// IN: INT
 ); // INT

Was ist daran noch falsch, ich dreh gleich durch das kann doch nicht so schwer sein.:sb7:

Code:
Wert:= (AnzahlDBB := [COLOR="Red"]8[/COLOR]  // IN: INT
 ,QuellDB := 100 // IN: INT
 ,QuellDW := 0 // IN: INT
 ,ZielDB := 101 // IN: INT
 ,ZielDW := [COLOR="Red"]0[/COLOR]// IN: INT
 ); // INT

Auch im DB101 müssen 2 Realzahlen angelegt sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab ich alles nach deiner Vorlage geändert, aber das Prob bleibt das gleiche, keine Ahnung was das sein soll.
Habe:
1. zwei DBs (DB 100 , DB101) angelegt
2. in beiden DBs zwei REAL Zahlen angelegt
3. das Prog von Ralle in eine awl - Quelle kopiert, übersetzt und den daraus entsandenen Baustein FC 113 in meinem SCL Prog aufgerufen
4. dieses Prog erstellt

Code:
FUNCTION_BLOCK FB6
VAR_TEMP
    // temporäre Variablen
  Wert: INT;
END_VAR
Wert:= (AnzahlDBB := 8  // IN: INT
 ,QuellDB := 100 // IN: INT
 ,QuellDW := 0  // IN: INT
 ,ZielDB := 101 // IN: INT
 ,ZielDW := 0  // IN: INT
 ); // INT 
 
END_FUNCTION_BLOCK

Aber: das scheiß ding funzt nicht...?
 
Zurück
Oben