19.07.2011 16:06 | |
Beigetreten: 27.10.2010 Letzter Bes: 06.09.2024 Beiträge: 15 Bewertung: (3) |
Hallo Michael Mir ist nicht bekannt, dass Siemens eine solche Trace-Funktion zur Verfügung stellt. Das wirst du wohl selber schreiben müssen. Sicher kannst du das in AWL machen, viel einfacher wäre für diesen Fall SCL. Gruss Marvin |
19.07.2011 16:14 | |
Beigetreten: 17.06.2011 Letzter Bes: 24.05.2018 Beiträge: 13 Bewertung: (3) |
Also ich wäre dankbar, falls jemand in diesem Forum einen derartigen Baustein hier posten könnte. Wegen mir darf es auch in SCL sein. |
19.07.2011 23:58 | |
Beigetreten: 25.08.2005 Letzter Bes: 05.07.2024 Beiträge: 1161 Bewertung: (110) |
Hallo mhutter, also die Lösung hab ich jetzt nicht fertig in der Schublade, aber ich hab noch im Kopf, was ich dafür für Testzwecke mal gemacht habe vom Prinzip her. Ich hatte einen DB als Ringpuffer. Als ersten Datenbereich hab ich mir die Byteadresse reingeschrieben an der ich den nächsten Eintrag schreiben will. Weiter je nach Größe des Puffers immer wieder den Datenblock den ich ablegen möchte. Also ich Deinem Fall ein Struktur mit eben den 4 Werten. Dann hab ich mir einen Baustein geschrieben dem ich beim Aufruf die Nummer des DB's mitgegeben habe den ich nutze und die Daten die gespeichert werden sollen. Im Baustein öffne ich den entsprechenden DB, lese das neue Speicherbyte aus das beschrieben werden darf, errechne mir daraus die Bitadresse und schreibe damit den ersten Wert in den DB. Dann muss ich die Adresse entsprechend der Größe des ersten Datenbereiches vergrößern, nehme den nächsten Wert, ... Wenn die 4 Werte geschrieben sind rechne ich mir die neue Byteadresse aus an der beim nächsten Aufruf reingeschrieben wird. Dazu muss ich natürlich die maximale Größe des DB's berücksichtigen und eventuell wieder vorne anfangen. Diese Speicheradresse schreib ich mir dann wieder in den ersten Datenbereich für den nächsten Durchgang oder auch für eine Auswertung. So, sowas in der Art war in AWL kein Hexenwerk. Hat auch recht ordentlich funktioniert. Wenn jetzt keiner mehr so einen Baustein aus dem Hut zaubern kann, wünsch ich Dir viel Erfolg bei der Umsetzung! Sabine |
Für diesen Beitrag bedanken sich1 Benutzer |
20.07.2011 21:12 | |
Beiträge: 316 Bewertung: (37) |
Hi mhutte, das Prinzip, wie es hulzhex beschrieben hat passt! Einiges kannst du dir jedoch erleichtern. Meine Verbesserungsvorschläge: - leg dir einen UDT mit den benötigten werten an - erstelle einen Zwischenspeicher-DB der aus einem Array von dem Datentyp(deinen eigenen UDT) besteht - dann kannst du die ganze Zeigeradressierung komfortabel über den Index des arrays machen ABER beachte: die Adressierung mit variablen Index vom Array geht bei STEP 7 nur mit SCL (KEIN AWL) und im TIA mit AWL, SCL, FUB, KOP, also allen Programmiersprachen. Durch die variable Indexadressierung ersparst du dir viel Arbeit! Hab ich damals in 15min runterprogrammiert! |
Für diesen Beitrag bedanken sich1 Benutzer |
21.07.2011 13:28 | |
Beigetreten: 21.02.2008 Letzter Bes: 02.05.2024 Beiträge: 26 Bewertung: (1) |
Hallo mhutter, hier ist ein kleines Beispiel auf dem Du aufsetzen kannst. http://support.automation.siemens.com/WW/view/de/19345564 Mit einigen wenigen Änderungen kannst Du ihn Dir nach Deinem Geschmack anpassen. Du müsstest den Baustein halt noch mit der Speicherung der aktuellen Zeit ergänzen. Was auch immer noch ganz nützlich ist, wenn man sich einen Zykluszähler mitführt und mitspeichert. Gruß Babbelfish |
Wehr Rechschreibfähler findet darf Sieh behahlten |
|
Folgen Sie uns auf