Jump to content

Empfohlene Beiträge

Hallo Leute, ich hoffe es kann mir jemand helfen.

Ich möchte vier bis sechs Messuhren über 232 Eingang auslesen. Geht auch ganz gut.

Das Problem ist, ich möchte das Auslesen mit der Messzeit syncron ausführen.

D.h. jedesmal bei erreichten 10 Sekunden sollen die Daten angefordert werden.

Mit RS232 Ausgang und Aktion habe ich es zwar teiweise erreicht, gab aber auch abstürze.

Frage: geht es irgend wie mit dem Eingangsmodul zu realisieren? Brauche bitte dringend Hilfe!!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo

Ich vermute, das sie jeweils eine Befehl an die Messuhren schicken müssen, damit diese einen Wert liefern? Dann könnte Sie im einfachsten Fall versuchen, diesen Befehl im Seriellen Eingang als Anforderungsstring zu definieren und automatisch diese Anforderung alle 10 Sekunden vom Modul senden zu lassen. Die Entsprechenden Einstellungen sind in den Optionen des seriellen Eingangsmoduls zu finden:

image.png

 

Zeitlich flexibler kann man Anforderungen mit dem seriellen Ausgang verschicken. Hierzu würde ich dann den Ausgabemodus "Einzelne Kommandos" verwenden und den Steuereingang deaktivieren, um dann die Anforderungen zum gewünschten Zeitpunkt zu verschicken.

Wobei hatten Sie genau die Abstürze? (Die sollen natürlich nie auftreten)

Können sie ein Beispiel Schaltbild zur Verfügung stellen?

Gruß aus Mönchengladbach

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

Vielen Dank für die Unterstüzung.

Die Ansteuerung des Rs232 ist auch so aufgebaut. Das Ausgangsmodul zu verwenden um die Messdaten speziell abzufragen ist nicht ideal, weil es wesentlich länger dauert, zu Timing problemen führen kann und ggf. die Daten in den falschen Str_Adressen schreibt . Insgesamt fragen wir 45 Messuhren über insgesamt 8 Coms und 1x485 mit 8 Messgeräten ab. Das Ziel ist es möglichst syncron die Messwerte abzufragen und zeitlich zu analysieren. Funktioniert auch alles Bestens solange Uhrzeit und Messzeit ungefähr syncron vom Sekundenwert laufen. Das ist unser großes Problem. Die Abtastrate des RS-Ausgrangs wird von der Variablen ${ELAPSED_TIME} angesteuert. Die Messwerte sind an der Uhrzeit gekoppelt. Die mögliche Zeitsteuerung von Dasylab12 ist bzgl. Pausen und Veränderung der Messtechnik bei laufenden DL-Programm nicht anwendbar.

Wir brauchen bzw. suchen irgend eine Möglichkeit um die Variable ${ELAPSED_TIME} "Messzeit" von DL12 im Messbetrieb zu verändern bzw. genau gesagt: die Sekunden auf Null setzen zu können.

Oder irgend eine andere Idee oder Denkansatz.

Vielen Dank

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Die Systemvariable ${ELAPSED_TIME}  kann man nicht ändern, weil sie auch für viele Dinge innerhalb von Dasylab benutzt wird.

Sie können jedoch mit einem Zähler Modul die Messzeit selber ermitteln und diese bei Bedarf auch über eine Aktion zurücksetzen. Nehmen Sie einfach einen Schalter, der immer aus ist (oder einen Generator mit Konstant 0) und hängen daran ein Zähler Modul mit der Einstellung "zeit mit Low Pegel". Der Ausgang des Zählers dann ihre gewünschte, eigene Messzeit. Über eine Aktion kann man den Zähler zurücksetzen. Wenn sie diese Zeit in einer Variablen benötigen, einfach mit dem "Variable schreiben" Modul in eine eigene, globale Variable schreiben.

Viel Erfolg 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin

vielen Dank.

Aber leider hilft mir dieser Vorschlag nicht, weil ich mit dieser erzeuten Zeit die Abfrage der RS-Coms nicht beeinflussen kann.

Eine Möglichkeit zur Lösung meines Problems wäre auch eine zeitlich steuerbare Messpause.
Z.B. Die Messabfrage der RS232 ist 10sec. d.h. bei ${ELAPSED_TIME} =  xx:xx:x0 werden die Messwerte der Coms abgefragt. Sollte die Messzeit ( ${ELAPSED_TIME} )
um beispielsweise 4 Sekunden  (05m:30s) zur Uhrzeit (12h:50m:26s) sein,  würde eine Pause um diese 4 Sek. (oder 14 sek .. ) wieder zu einer syncronen
Abfrage in 10 Sek Takt führen. Die Messzeit ${ELAPSED_TIME} ist für mich absolut unbedeutend. wichtig ist ein festes sync. Messintervall bezogen auf die Uhrzeit.

Fazit Folgende Möglichkeiten: 1. Kann man Eine Messpause mit Hilfe einer Variablen erzeugen?
oder 2. Kann man die Abfragezeit des Com-Eingang Modul durch eine Variable ersetzen?
 oder irgend was, das diese Zeitverschiebung bewirkt.


Gruß und vielen Dank

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

"Die Abtastrate des RS-Ausgrangs wird von der Variablen ${ELAPSED_TIME} angesteuert. Die Messwerte sind an der Uhrzeit gekoppelt."

Können Sie bitte das Schaltbild zur Verfügung stellen? Ich verstehe nicht, was Sie mit dem oben Zitierten meinen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich denke das Ziel ist ein fester Messtakt von 0,1 Hz. In jeder Periode sollen die Uhren 1x ausgelesen werden.

Könnte man nicht einfach die RS232 Module zur Treiberzeitbasis (Soundkarte oder DEMO) mit 0,1Hz  laufen lassen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo zusammen,

ich habe mal ein kleines Programm erstellt, mit dem das Problem sichtbar wird.

Progamm starten und mal pause und weiter betätigen.

Ich brauche eine Möglichkeit um im Programmablauf die beiden Zeiten wieder zu syncronisieren. (Grüne Anzeige, bzw. < 0,7s)

Ob es mit der neuen Version eine Möglichkeit gibt weiß ich nicht. Wenn ja bitte berichten.

Ich würde mich sehr über eine Lösung freuen.

Vielen Dank und Gruß 

Alexander

Sync_Zeit.DSB

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Das wird mit sicherheit ein schwieriges Unterfangen. Die ELAPSED_TIME ist ja das Ergebnis aus Sample-Distance und Anzahl verarbeiteter Werte. Befindet sich die Messung im Status Pause, dann rückt aus dieser Kennwert nicht weiter. Natürlich könntest du dir bei jeder Pause die aktuell verstrichenen Sekunden der Zeit merken und die Differenz beim Continue auf die Messzeit draufrechnen. Allerdings muss ich aus eigener Erfahrung sagen, dass Systeme mit Win10 auf aktuellen CPUs hinsichtlich der Systemzeit auch eine Herausforderung darstellen.

Hast du keine Möglichkeit dir eine Echtzeit von einer Hardwarequelle zu holen, eventuell ein DCF77 USB Mouse als Referenz?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich bin zwar nicht sicher, ob ich das Problem erfasst habe, aber grundsätzlich ist ein Pausieren in Verbindung einer Messwerterfassung keine sinnvolle Idee. Die Pausefunktion kann sinnvoll sein, wenn man ein Schaltbild mit reinen Software-Datenquellen hat (z.B. Lesen aufgezeichneter Daten). Dabei hat man keinerlei Zeitprobleme, da die "Uhr" einfach angehalten und wieder laufengelassen wird. Diese Möglichkeit hat man in Verbindung mit echter Hardware natürlich nicht.

Gibt es einen Grund dafür, die Messuhren immer nur genau dann abzufragen, wenn man einen Messwert haben möchte? Spricht etwas dagegen, die Messuhren öfter abzufragen und nur die Werte weiterzuverarbeiten, die zum Zeitpunkt passen?
Bspw. die Messuhren jede Sekunde abfragen, die Werte in eine Haltfunktion leiten (oder in Variablen schreiben) und diese "gehaltenen bzw. gespeicherten" Werte im 10-Sekunden-Takt ausgeben?
Und wenn man die Messung Pausieren möchte, dann hält man nicht das Programm/Schaltbild an, sondern unterbindet das Weiterverarbeiten der weiterhin von den Messuhren erfassten Daten.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×