-> Hier kostenlos registrieren
Auf einer S5 95U wird der schnelle Zähler 1 zunächst genullt, dann von einem Drehgeber hochgezählt.
Der Istwert wird über die PWs 36 und 38 eingelesen. (Der Istwert überschreitet die 16 Bit und läuft hinüber in das höherwertige Wort).
Der Inhalt wird wie ein "Doppelwort" benutzt, obwohl diese CPU ja keine Doppelwortarithmetik kennt.
Beide Inhalte werden zunächst auf die MWs 36 und 38 umgeladen, in zwei unmittelbar hintereinander liegenden Befehlen.
Eine Division durch 8 wird realisiert, indem das LSW mit SRW nach rechts geschoben wird und die fehlenden Bits aus dem HSW hinüber gezogen werden, Merker für Merker.
Dadurch reduziert sich die maximal benötigte Zählerzahl auf die verarbeitbaren 15 Bit.
Und jetzt das Problem:
Sporadisch scheint ein Konsistenzproblem aufzutreten, denn in Hunderten von Takten kommt es vor, daß ein Vergleicher "Zählerstand >= X" anspricht und eine Funktion auslöst, obwohl der Zählerstand sicher noch nicht da ist.
Nun meine Fragen dazu:
Hilft es, statt der Prozessworte 36 und 38 die Eingangsworte 36 und 38 zu lesen ?
Diese können sich ja während der OB1 Bearbeitung wohl nicht verändern.
Ich habe das Programm mal so geändert, funktionieren tut es zunächst genauso wie mit PWs, aber das Konsistenzproblem war bisher sehr sporadisch. Man muss es also länger beobachten.
Aber ist damit schon Konsistenz gesichert ?
Oder muss man zusätzlich das höchstwertige Bit des LSW und das niederwertigste Bit des HSW beobachten ?
Der Istwert wird über die PWs 36 und 38 eingelesen. (Der Istwert überschreitet die 16 Bit und läuft hinüber in das höherwertige Wort).
Der Inhalt wird wie ein "Doppelwort" benutzt, obwohl diese CPU ja keine Doppelwortarithmetik kennt.
Beide Inhalte werden zunächst auf die MWs 36 und 38 umgeladen, in zwei unmittelbar hintereinander liegenden Befehlen.
Eine Division durch 8 wird realisiert, indem das LSW mit SRW nach rechts geschoben wird und die fehlenden Bits aus dem HSW hinüber gezogen werden, Merker für Merker.
Dadurch reduziert sich die maximal benötigte Zählerzahl auf die verarbeitbaren 15 Bit.
Und jetzt das Problem:
Sporadisch scheint ein Konsistenzproblem aufzutreten, denn in Hunderten von Takten kommt es vor, daß ein Vergleicher "Zählerstand >= X" anspricht und eine Funktion auslöst, obwohl der Zählerstand sicher noch nicht da ist.
Nun meine Fragen dazu:
Hilft es, statt der Prozessworte 36 und 38 die Eingangsworte 36 und 38 zu lesen ?
Diese können sich ja während der OB1 Bearbeitung wohl nicht verändern.
Ich habe das Programm mal so geändert, funktionieren tut es zunächst genauso wie mit PWs, aber das Konsistenzproblem war bisher sehr sporadisch. Man muss es also länger beobachten.
Aber ist damit schon Konsistenz gesichert ?
Oder muss man zusätzlich das höchstwertige Bit des LSW und das niederwertigste Bit des HSW beobachten ?