Bitabfrage AKKU direkt

Simatiker

Level-1
Beiträge
176
Reaktionspunkte
30
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich hab da ein Problemchen.

Ich möchte im OB35 ein Eingang abfragen, also unabhängig vom Prozessabbild. Soweit klar mit "L PEB 6".
Nun steht das Byte ja im AKKU und ich möchte mein BIT (E 6.3) abfragen.
Würd das jetzt nach temp kopieren und dann über "U Lx.3" abfragen.
Jetzt kommts:
Ich meine ich hätte schon mal irgdwo gelesen das ich die Bits im AKKU direkt abfragen kann. Kann da jemand helfen???

Gruß...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... selbst wenn es im zyklischen Programm steht ... Ich aktualisiere auf diese Weise nur das Prozess-Abbild des Eingangsbytes ... Das sollte auch dein Beispiel mit dem Flankenmerker nicht stören ...
 
... soweit mir bekannt ist werden die Zeit-INT's nicht "mitten in einer Verknüpfung" zugelassen, sondern am Ende von Baustein-Aufrufen. Da kann ich mich aber täuschen. Ich hatte mit dem genannten Beispiel bislang noch nie Probleme. Vielleicht weis aber dazu jemand anderes mehr ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie wäre es mit :
Code:
L PEB 6
T EB 6
 
U E 6.3

Ist allgemein nicht richtig. (In dem Fall ja wegen EB6)
Weil der PA nur eine beschränkte bestimmte größe ha:ROFLMAO:t.
PS: ich weiss Larry, du weißt es;)


Pauschal wenn ich was abfragen würde:
Code:
U E6.3

Oder (Spatzen mit Kanonen schießen :ROFLMAO:)
Code:
L EB6
L 4 // wegen 0000_0100
<>I
SPBN End
SPA Glei   // Gleich
 
Glei:  
      .
      . 
 
End: NOP 1
 
Ist allgemein nicht richtig. (In dem Fall ja wegen EB6)
Weil der PA nur eine beschränkte bestimmte größe ha:ROFLMAO:t.
PS: ich weiss Larry, du weißt es;)


Pauschal wenn ich was abfragen würde:
Code:
U E6.3
Oder (Spatzen mit Kanonen schießen :ROFLMAO:)
Code:
L EB6
L 4 // wegen 0000_0100
<>I
SPBN End
SPA Glei   // Gleich
 
Glei:  
      .
      . 
 
End: NOP 1

also das EB6 sollte schon im Prozessabbild liegen, wer's verschiebt ist selber schuld!
dein Zugriff auf E 6.3 bringt nicht den aktuellen Status sondern den vom letzten Prozessabbild.
die zweite Lösung ebenso, darüber hinaus ist die unpraktikabel und wirklich unschön.

Wem Larrys Lösung zu heikel ist, der kann auch mit einem Merkerbyte arbeiten!
 
Ist allgemein nicht richtig. (In dem Fall ja wegen EB6)
Weil der PA nur eine beschränkte bestimmte größe ha:ROFLMAO:t.
PS: ich weiss Larry, du weißt es;)


Pauschal wenn ich was abfragen würde:
Code:
U E6.3
@johni: hast Du die Ausgangsfrage richtig gelesen?
....
Ich möchte im OB35 ein Eingang abfragen, also unabhängig vom Prozessabbild. Soweit klar mit "L PEB 6".
....



Code:
      L     PEB    6
      LAR1  
      U     E [AR1,P#0.3]
@AUDSU:
Ich denke das wird so nicht funktionieren, auf diese Weise ladest Du ja den Inhalt des PEB 6 in das AR1, dort gehört aber nur der Pointer darauf hin.
Soweit ich aber weis, kann man auf die Peripherie nicht per Pointer zugreifen.
.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... soweit mir bekannt ist werden die Zeit-INT's nicht "mitten in einer Verknüpfung" zugelassen, sondern am Ende von Baustein-Aufrufen. Da kann ich mich aber täuschen. Ich hatte mit dem genannten Beispiel bislang noch nie Probleme. Vielleicht weis aber dazu jemand anderes mehr ...

Es gibt eine Lösung für das Problem:

Mit der SFC 41 "DIS_AIRT" (disable alarm interrupts) verzögern Sie die
Bearbeitung von Alarm-OBs und Asynchronfehler-OBs, deren Priorität höher ist als​
die des aktuellen OBs.

Der Zeit-OB schlägt mitten im Code zu - allerdings nicht mitten in der Abarbeitung eines Befehls. So wäre die Programmierung
Code:
U E6.0
FP "Flankenmerker"
= "Puls"
von dem Problem nicht betroffen.

Aber sowie ich einen Code schreibe, der den E6.0 zweimal im zyklischen Programm abfragt und sich dabei darauf verlässt, dass sich der Zustand zwischen der ersten Abfrage und der zweiten Abfrage nicht ändert, geht das in die Hose - und leider meist hochsporadisch, so wie in meinem Beispiel, wo erste und zweite Abfrage eng beieinander liegen. Da müssen zweierlei Dinge zusammentreffen: der Interruptaufruf zwischen den zwei Abfragen und die gleichzeitige Zustandsänderung des Eingangs während des Zeitraumes zwischen PAE-Einlesen und des Interrupts. Das geht u.U. wochenlang gut - und die daraus resultierenden seltenen Fehler werden dann meist mit einem Schulterzucken quittiert, da die Folgen i.d.R selten tragisch sind.
 
Also erstmal Danke für die rege Anteilnahme...!;)

Doch mein Problem ist ja nicht das Bit abzufragen sondern es irgendwie schöner zu machen als die anderen!:ROFLMAO:

gemacht hab ich's so:
Code:
L PEB 6
T #temp_EB   //LB 22
U L 22.3
= .....

Ich hätts aber lieber so:
Code:
L PEB 6
U (Bitnr. 4 des Akkuinhalts)
= ....

Ich dachte ich hätte schon mal gelesen das man die Bitstellen des AKKU's direkt abfragen kann!:confused:

Aber nichts für ungut, es ist halt so das einen so etwas dann auch keine Ruhe lässt!;)

Danke, nochmal
 
Zurück
Oben