Hallo,
@Volker,
ich habe versucht den von dir erstellten Baustein ein zu laden.
Auf dearchivieren->Heruntergeladene Datei ausgewählt-> Zielverzeichnis ?
Wußte nicht in welchen Ordner ich das von der S7 packe...
Dann habe ich "Klimmzüge" gemacht um alles genau zu dokumentieren und damit ich den Ablauf verstehe...
@Ralle,
Den Beitrag "Pointer Zeiger FIFO LIFO" hatte ich gefunden...
kam ich aber nicht mit zurecht... Datenende?
Wie kann man die Stelle der letzten geschriebenen Daten abfragen?
Da ich den FC, sprich meine Berechnung nur einmal brauche habe ich ihn nicht als variablen FC angelegt. Hatte aber was damit rum experimentiert...
Erklär mir bitte was der Befehlt L #L4 bedeutet. Um genauer zu sein das zweite L?
@MW,
ahh cool danke! Verstehe!!
Um das so genau zu haben wie möglich bleibe ich dann beim Real Format.
Ich hatte mal den Rechenwert im Endergebnis NW 1 mit meiner Berechnung mit dem Taschenrechner (7 Stellen hinter Komma genau) verglichen und kam auf Abweichung von 0,000023%... Aufgrund der Werte im REAL, ist klar jetzt...
Komme mit meinen Pointern noch nicht ganz weiter, bzw. eher mit den Sprüngen die sinnvoll an zu wenden.
Möchte wenn "Trigger Meßwert" kommt (Impuls für die Dauer von 20ms)
Den einen Wert in mein Array legen. Dann den nächsten Wert fortlaufen wenn der Puls erneut kommt... Solange bis "Trigger Keyence" Abfällt. ("Trigger Keyence" kommt zeitgleich mit erstem "Trigger Meßwert" und bleibt bis Ende letzter Wert. ) Dann wenn Das Spiel erneut beginnt soll er wieder am ersten Feld des Arrays anfangen...
Hier mein Programm bis jetzt.... bei der Simulation eben ist er in Stop gegangen... glaube es liegt an den Sprungbefehlen...
Code:
NW2
U "Trigger Meßwert" //Trigger Impuls je anstehender Meßwert 20ms lang-> positive Flanke
FP M 6.5
= M 6.6 //Pro Signal (positive Flanke) high für Zyklus
NW3
L L#0 //Läd Pointer mit Anfangs Byte 0
SLD 3 //Verschieben um 3 Bit nach links erzeugt Pointer
T MD 40 // Transferiere Pointer in MD 40
U "Trigger Keyence"
SPBN LOW //Wenn VKE = 0 ->Sprungbefehl
WDH: L 1 //Läd Integere Ganzzahl 1 für DB
T MW 24 //und transferiert sie in MW 24
U M 6.6
SPB TIME
AUF DB [MW 24] //DB Nummer 1 (Integere aus MW24), Vorbereitung für Programmerweiterung
L MD 34 // Ergebnis aus Berechnung NW1
T DBD [MD 40] //ARRAY of REAL, Anfang bei Byte 0
L L#4 //Läd den Pointer mit Anfangsbyte 4
SLD 3 //Verschieben um 3 Bit nach links erzeugt Pointer
L MD 40 //Transferiert Pointer in MD
+D //addiert die Bytes auf MD 40 (eine REAL Adresse rauf)
T MD 40 //transferiert die neue Adresse in MD 40
L MW 38 //Schleifenzähler zur Kontrolle
L 1
+I
T MW 38
U "Trigger Keyence" //Schleifenende, Beendigung der Meßwerterfassung
FN M 6.7
SPB ENDE
TIME: SPA WDH //Verschleifen mit Kette / TIME abwarte bis Impuls Messwert kommt
LOW: NOP 0 //Überspringen des Ablaufes
ENDE: NOP 0 //Schleifenende und Ausgang wenn Trigger Keyence fällt