Step 7 AWL nach SCL

bernhardjunk

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe hier ein Programm in AWL geschrieben und getestet.
Jetzt verlangt der Kunde aber SCL oder KOP.
Gibt es eine Möglichkeit die Quelldatei nach SCL zu konvertieren
oder kann mir das einer machen?
Bin leider nicht fit in SCL
Danke Bernd





FUNCTION "02FC_Calib_Data" : VOID
TITLE =Kalibrierdaten ablegen
//Kalibrierdaten ablegen und Speicher löschen.
//Die Kalibrierdaten werden mit Eintrag >0 im Speicher abgelegt
AUTHOR : BJu
VERSION : 0.1


VAR_INPUT
Reset : BOOL ; //Daten löschen
Datenbaustein : BLOCK_DB ; //Datenbaustein
Datenwort : INT ; //1. Datenwort ab wo abgelegt wird
Zeiger : INT ; //Pointer
Value : DINT ; //Ablegewert
Anzahl : INT ; //Anzahl Messdaten
END_VAR
VAR_OUTPUT
fertig : BOOL ; //Datenablage erfolgt
END_VAR
VAR_TEMP
Zeiger1 : INT ;
Anzahl1 : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Leer



NETWORK
TITLE =Daten in Register schreiben / Register löschen


U #Reset;
SPB rest;



AUF #Datenbaustein; // DB aufrufen

U( ;
L #Anzahl;
L #Zeiger;
<I ;
) ;
O( ;
L 0;
==I ;
) ;
BEB ;

L #Zeiger;
SLW 2;
T #Zeiger1;

L #Datenwort;
L 4;
-I ;

L #Zeiger1;
+I ;

SLW 3; //Absolutadresse aufrufen
LAR1 ;
L #Value; // Inhalt
T DBD [AR1,P#0.0]; // Wert in Tabelle eintragen

BEA ;
rest: NOP 0;
AUF #Datenbaustein;
L #Anzahl;
T #Anzahl1;
loop: NOP 0;
SLW 2;
T #Zeiger1; // Multiplikation mit 4

L #Datenwort; // 1. Adresse
L 4;
-I ;

L #Zeiger1; // Für Pointer aufaddieren
+I ;

SLW 3; //Absolutadresse aufrufen
LAR1 ;
L L#0; // löschen
T DBD [AR1,P#0.0]; // 0-Wert eintragen
L 0;
L #Anzahl1; // Anzahl erreicht?
==I ;
BEB ; // Bausteinende

DEC 1; // Anzahl 1 um 1 dekrementieren
T #Anzahl1;

SPA loop; // nächster Datensatz







END_FUNCTION
 
Direkt konvertieren geht nicht. Abgesehen davon wird die indirekte Adressierung mit einem BLOCK_DB, der als Bausteineingang definiert ist, schwierig werden.
Das ganze in KOP implementieren sollte aber problemlos machbar sein.

Da die meisten das hier als Beruf machen, weiß ich nicht ob sich jemand bereit erklärt, den code frei zu übersetzen.

lg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem ist nicht den Programmschnipsel nach SCL oder KOP umzuschreiben.
Das Problem hast du, wenn du ein Programm verkaufen? willst, das du nicht verstehst.
Außerdem ist das was da so geschrieben wurde nicht so echt sauber programmiert.

bike
 
Hier mal ein kleines Beispiel für dich.
Es werden immer Datensätze kopiert, die über einen Arrayindex auswählt werden, hier von 1 bis 100.
Den UDT100 für die Kalibrierdaten mußt du natürlich deinen Bedürfnissen anpassen, aber es ist erst einmal als Beispiel für dich in SCL gedacht.

Anhang anzeigen Kalibrie.zip
 
Zuletzt bearbeitet:
Hallo bike,
natürlich verstehe ich das Programm. Ich habe es selbst geschrieben!
Was bitte ist da nicht sauber programmiert?
Der Baustein macht genau das, was ich will.

Bernd
 
Zurück
Oben