Zählerwerte digital kodiert ausgeben S7 312

Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich habe eine S7 312 plus DI/DO Module.
Ich werde im Praxissemester etwas programmieren dürfen, ein Teil meiner Aufgabe stellt mich allerdings vor ein Problem.
Um es zu vereinfachen nehme ich es aus dem Gesamtprojekt mal heraus, streiche alle redundanten Bedinungen und zähle nur das, nach meinem Dafürhalten, Wichtige auf.

Ich habe zwei Eingänge: E0.0, E0.1
Ich habe vier Ausgänge: A4.0, A4.1, A4.2, A4.3

Die zwei eingänge sollen einfach HOCH (E0.0) und RUNTER (E0.1) zählen, die 4 Ausgänge sollen dann binär codiert den Zählerstand ausgeben.

Sprich nach einmaligem betätigen von E0.0
ist A4.0=0, A4.1=0, A4.2=0, A4.3=1 (1)

nach 10maligem betätigen von E0.0
ist A4.0=1, A4.1=0, A4.2=1, A4.3=0 (10)

Ich betätige daraufhin zb 2mal E0.1
ist A4.0=1, A4.1=0, A4.2=0, A4.3=0 (8 )

Wie kann ich es nun -am Besten in FUP- realisieren, dass über eine Zähler (vorwärts rückwärts) mir der Zählerstand an den vier Ausgängen binär angezeigt wird?


Ich danke schonmal im Voraus
 
Code:
      U     E      0.0
      FP  M0.0
      SPB   hoch
      U     E      0.1
      FP  M0.1
      SPB   tief
      SET   
      SPB   end
hoch: L     AB     0
      L     1
      +I   
      T     AB     0
      SET   
      SPB   end
tief: L     AB     0
      L     1
      -I   
      T     AB     0
      SET   
      SPB   end
end:  NOP

Gruss
Audsuperuser
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
na , AudSU, hast du da nicht etwas übersehen ?

1. nicht mit +R bzw. -R bei INT-Variablen arbeiten ...
2. Flanken-Auswertung der Eingänge ...

Gruß
LL

Ich bitte vielmals um Entschuldigung
Die Flankenmerker habe ich nachgefügt, da war Larry wohl etwas zu schnell.
Und ich wollte I schreiben, aber aus Macht der Gewohnheit doch R erwischt.
Ist mir schon auch klar, dass der Wert zwischen 0 und 15 begrenzt werden muss. Aber erstens war es nicht gefordert, und zweitens soll der Fragesteller auch selber etwas denken. :ROFLMAO:

Gruss
Audsuperuser
 
Also ich dachte schonmal recht herzlich für den Quellcode.

Was ist mit diesem nun zu tun?
Ist dieser in einen separaten FC zu schreiben, welcher dann aufzurufen ist?

Der Fragensteller denkt schon einiges mit.
Ich hatte nur mal in der Ausbildung Step7, in der Hochschule war Automatisierungstechnik ein Witz.

Da dies nur ein Nebenjob während meines Praxiseinsatzes ist, frage ich lieber welche die WISSEN was zu machen ist und konzentriere mich auf die Programmiersachen die ich kann.
Und meine eigentliche Aufgabe.

Also ich bin für jede Hilfe sehr dankbar!


Grüße
 
Du sollst in betracht ziehen, Du kannst nur bis höchstens 15=0000 1111 zählen

und? was passiert bei einem "überlauf"? die relevanten bits zählen von null los, was drüber ist, ist egal ... es war keine grenzwertbeschaltung gefordert!

was mir eher sorgen macht ist, dass dieser AWL-code nicht in FUP darstellbar ist und, dass 4bits des AB4 nicht mehr anderweitig genutzt werden können, wenn man diesen zähler irgendwo im programm absetzt. am zyklusbeginn funktioniert es, ja ...

Code:
*
[B]Netzwerk 1[/B]
      U     E      0.0
      ZV    Z      1
      U     E      0.1
      ZR    Z      1
      NOP   0
      NOP   0
      NOP   0
      L     Z      1
      T     MW     0
      NOP   0
      NOP   0

[B]Netzwerk 2[/B]
      O     M      2.0
      ON    M      2.0
      =     L     20.0
      U     L     20.0
      U     M      1.0
      =     A      4.0
      U     L     20.0
      U     M      1.1
      =     A      4.1
      U     L     20.0
      U     M      1.2
      =     A      4.2
      U     L     20.0
      U     M      1.3
      =     A      4.3

wäre mein bescheidener vorschlag ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und? was passiert bei einem "überlauf"? die relevanten bits zählen von null los, was drüber ist, ist egal ... es war keine grenzwertbeschaltung gefordert!


...

Es ist nicht egal...
Stell Dir würden die Hochwertigen Bits (Ax.4...Ax.7) für irgednwelchen anderen Zweg gebraucht.....> Kacke am Dampfen
 
Es ist nicht egal...
Stell Dir würden die Hochwertigen Bits (Ax.4...Ax.7) für irgednwelchen anderen Zweg gebraucht.....> Kacke am Dampfen

... wenn ich, wie oben beschrieben, den bytezugriff auf die ausgänge an den anfang des programms stelle, kann ich im verlauf auf die bits A4.4 bis A4.7 zugreifen, wichtig hierbei ist, dass diese zugriffe nicht übersprungen werden dürfen, also ein definiertes high oder low-signal führen müssen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"Mit Kanonen auf Spatzen schießen" :ROFLMAO:

ich verstehe den hintergrund deiner aussage nicht ... der code ist so geschrieben, dass er nach dem kopieren in den editor in KUP dargestellt werden kann.

wenn du den zähler meinst, ja, den kann man auch durch eine additions und subtraktionsroutine mit flankenauswertung ersetzen, damit wird es aber nur komplizierter als es ist. warum also nicht den zähler benutzen?
 
Zurück
Oben