Flankenauswertung

Techniker1907

Level-1
Beiträge
119
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
L db40.dbw712
L 0
==I
FP M 555.0
SPBN a1

hallo zusammen, wenn ich vor dem vergleicher einen sprung reinmache ( spbn ....) funktioniert danach die flanke nicht mehr, stimmt das ?

L db40.dbw712
L 0
spbn ....
==I
FP M 555.0
SPBN a1
 
da die beiden lade operationen das vke nicht verändern ist es wichtig was vor den zeilen passiert. Am anfang des Bausteins sollte das VKE 0 sein, also würde er den Sprung ausführen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Verstehe jetzt im Augenblick nicht so ganz, warum Du an dieser Stelle einen Sprung einfügen willst. Hast Du vor der Sprunganweisung ein entsprechendes VKE, wird gesprungen. Wenn nicht, wird nicht gesprungen und wenn der Vergleich erfüllt ist, wird die Flanke gebildet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast doch an der Funktion der Flanke nichts geändert. Nur, wenn Du vorher rausspringst, kann die Flanke nicht gebildet werden.

PS: Habe den Eindruck, Du liest die Antworten nicht oder Du verstehst sie nicht...

PS2: Und was ich nicht verstehe: Du stellst Fragen, erhälts innerhalb von ein paar Minuten eine Antwort und hast das Board schon verlassen....
 
Zuletzt bearbeitet:
Code:
L db40.dbw712
L 0
<>I
 SPB Ungleich
FP M 555.0
SPBN a1

Warum stellst Du Deine eigentliche Frage nicht von Anfang an?
 
Code:
L db40.dbw712
L 0
<>I
 SPB Ungleich
FP M 555.0
SPBN a1
Funktioniert nicht!
Wird so nicht lösbar sein, wie der TE sich das vorstellt. Der M555.0 speichert bei Bearbeitung des FP das VKE des vorherigen Zyklus. wenn das VKE 1 ist und der Merker 0, dann erkennt das FP eine steigende Flanke und gibt 1 aus.
@Techniker:
Bei dem, was Du vorhast, wird das FP nur durchlaufen, wenn das VKE =0 respektive =1 ist (je nachdem, ob Du SPB oder SPBN benutzt), also kann das FP gar keinen Wechsel im VKE registrieren und somit wird es nie eine positive (oder eine negative) Flanke feststellen können.
 
Hallo Michael,

hast Recht. :oops:

Es müsste aber klappen, wenn nach der Sprunganweisung ein erneuter Vergleich (aber dann auf Gleichheit) durchgeführt wird.

Code:
L db40.dbw712
L 0<>I
SPB Ungleich
L db40.dbw712
L 0
==I
FP M 555.0
SPBN a1
 
... ich sehe das auch wie Michael. Der FP bekommt ja die Änderung nach VKE=0 gar nicht mit, da er dann ja übersprungen wird ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

warum zwei Sprungmarken?

Die Flanke macht nur Sinn, wenn der Vergleich immer erfüllt ist, und du nur einmal einen 'Abzweig bearbeiten willst.
Also, mit der Flanke sperrst du dann das nach dem Vergleich nochmals oder immer geprungen wird.

VKE=0
FP Flankenhilfsmerker
SPBN =ZIL1
...Auswertung (der Abzweig)

ZIL1: NOP 0
..weiter im Zyklus
BE
Ich hoffe Du kommst mit der bildliche Erklärung klar.
Und generell: Flanken müssen immer vor der Abfrage irgenwo gebildet werden.
Flankenabfrage vorher und Flanken-Bildung dananch geht schief. (..wegen Zyklusbearbeitung)

Mfg, jb
 
Hatte ein Brett vor'm Kopf...

War zum Fußballspiel meines Sohns, hat gut getan, Kopf ist wieder frei.

Code:
      L     DB40.DBW  712
      L     0
      <>I   
      SPB   Ungl
      =     M      x.x
      SPA   Flan
Ungl: R     M      x.x
[COLOR=#0000cd][B]     ....
      Hier kommen die Anweisungen hin, welche
      bei Ungleichheit ausgeführt werden sollen.
      ...
[/B][/COLOR]Flan: U     M      x.x
      FP    M      555.0
      SPBN   a1
 
L db40.dbw712
L 0
==I
FN m888.1
FP M 888.0

Ich hätte da nochmal eine frage :confused:.
angenommen das vke war 1 und wird jetzt null, dann kann man doch ne flanke mit FN machen, richtig ?
wenn das vke 0 ist und zu 1 wird nimm ich FP ,richtig ?
kann man das so programmieren wie ich das oben gemacht habe?
ich möchte gerne bei 0 eine flanke und bei 1 eine flanke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
L db40.dbw712
L 0
==I
FN m888.1
FP M 888.0

Ich hätte da nochmal eine frage :confused:.
angenommen das vke war 1 und wird jetzt null, dann kann man doch ne flanke mit FN machen, richtig ?
wenn das vke 0 ist und zu 1 wird nimm ich FP ,richtig ?
kann man das so programmieren wie ich das oben gemacht habe?
ich möchte gerne bei 0 eine flanke und bei 1 eine flanke

Hallo!
Würde ich so machen:

Code:
clr
L   db40.dbw712
 L     0
==I 
= m888.0
u m888.0
fp m888.1
u m888.0
fn m888.2

Mfg
 
Hallo!
Würde ich so machen:

Code:
clr
L   db40.dbw712
 L     0
==I 
= m888.0
u m888.0
fp m888.1
u m888.0
fn m888.2

Mfg
.. und würdest dann feststellen, dass es nicht funktioniert, die positive Flanke ist nämlich so im weiteren Programmverlauf nicht mehr nutzbar.

Wenn, dann:
Code:
// Das "Angst-CLR" braucht kein halbwegs guter Programmierer
  L   db40.dbw712
  L   0
  ==I 
  =   m888.0
  u   m888.0
  fp  m888.1
  =   M888.2
  u m888.0
  fn m888.2
  =   M888.3
 
.. und würdest dann feststellen, dass es nicht funktioniert, die positive Flanke ist nämlich so im weiteren Programmverlauf nicht mehr nutzbar.

Wenn, dann:
Code:
// Das "Angst-CLR" braucht kein halbwegs guter Programmierer
  L   db40.dbw712
  L   0
  ==I 
  =   m888.0
  u   m888.0
  fp  m888.1
  =   M888.2
  u m888.0
  fn m888.2
  =   M888.3

Ich hab ja nur den Ansatz rein geschrieben das er die Flanke dann wo rauf schreiben muss wird er wohl selber schaffen?
Mache immer gerne ein CLR kann nicht schaden!

Aber hat sich da bei dir auch ein fehler eingeschlichen??

Code:
// Das "Angst-CLR" braucht kein halbwegs guter Programmierer
  L   db40.dbw712
  L   0
  ==I 
  =   m888.0
  u   m888.0
  fp  m888.1
  =   M888.2
  u m888.0
  fn [COLOR=#ff0000]m888.2[/COLOR] ->m888.3
  =   [COLOR=#ff0000]M888.3[/COLOR] ->m888.4

Mfg
 
Zurück
Oben