358 Digitale Eingänge Erfassen und Auswerten

Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn du einen Diskrepanzvergleich der beiden Eingänge machen willst, kannst du das ja nur innerhalb der 50ms des Impulses machen. Danach fällt der Impulseingang ja wieder auf 0 und du hättest einen Fehler.
Also fragste die beiden Eingänge bei Flankenwechsel von 0 auf 1 ab. >OK

Aber was machst du jetzt wenn der stat. Eingang "auf 1 hängen" bleibt? Dann würdest du das erst wieder mitbekommen wenn es einen neuen Impuls gibt. Und damit wird der Fehler laut deinen Vorgaben "zu spät" erkannt, denn du willst ja sofort erkennen wenn an deinen Karten etwas kaputt ist.


Ich würde diese Aufgabe mit einem Zeiger o.Ä. lösen, das spart doch einiges an Tipparbeit.


Wie man 176 Signale a 10ms "einfangen" soll..
Denke das Programm sollte selbst auf der 314 mit <10ms machbar sein, aber ob die Flanken wirklich immer durchkommen?
 
Aber was machst du jetzt wenn der stat. Eingang "auf 1 hängen" bleibt? Dann würdest du das erst wieder mitbekommen wenn es einen neuen Impuls gibt. Und damit wird der Fehler laut deinen Vorgaben "zu spät" erkannt, denn du willst ja sofort erkennen wenn an deinen Karten etwas kaputt ist.

Vielleicht daher der Vergleich auf >< 0?
Wenn etwas 1 ist, dann wird reagiert, sonst läuft die PLC im eigenen Saft, also nur die vergleiche und die sind leicht zu realisieren in 10ms.

bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also wenn er die eingänge geschickt legt, so dass immer E0.0 und E4.0 zusammengehören kann er auch so vergleichen:

L ED0
L ED4
OD
T DB1.DBD0

so hat er im DB1 gleich 32 Störungen auf einmal (falls ein Eingang da ist)

Das ganze dann 12 mal unter fertig.

Dann noch eine Gesammtquittierung auf die Visus a la

UN QUITT
SPB aa
L 0
T DB1.DBD0

aa: NOP 0

Dann ist das ganze mit etwas mehr als 50 Anweisungen erschlagen...

Oder gleich noch ne schleife, dann gehts noch kleiner, dann ist warscheinlich sogar eine 312 überdimmensioniert (von der rechenleistung)
 
Also die Eingänge liegen Ex.x und Ex.x+1, daher ist ein Vergleich auf ><0 doch einfach.
Das mit dem Quitt ist so nach meiner Meinung nicht wirklich gut, da wenn mehr alswie eine Meldung ansteht, nicht alle beachtet werden können.

Quittierung ist dann zu klären, wenn bekannt ist welche HMI angeschlossen wird. Dann kann mit variabler Programmierung dies gut gelöst werden.

bike
 
Angeschlossen ist ein MP277 Touchpanel mit integriertem Datenlogger....
Programmiert wird es über WinCC flexible.

Leider sind die Eingänge meistens nebeneinander, soll heißen Statisch = E0.0 ; zugehöriges Dynamisches = E0.1 usw...

Ich sollte keine Sammelquittierung machen, sondern wie Bike schon erwähnt hat, jede Karte für sich quittieren können...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ersteinmal einen riesen großen Dank an Bike, ohne dessen Hilfe ich wohl einiges an zykluszeit verbraten hätte :D

Ich habe es dank Bike nun so gelöst, das ich meine 352 Eingänge in 11 Doppelwörter aufgeteilt habe. Diese 11 Doppelwörter überprüfe ich in einem FC auf ><D (Ungleich 0), sollte dies der Fall sein, wird ein entsprechendes Merker_Bit gesetzt. Anhand dieses Merkers wird dann in 11 weitere (jenachdem ob das Bit gesetzt ist oder nicht) FC ("FC_Analyse_X") verzweigt, die jeder für sich, für die genauere Auswertung eines Doppelwortes verantwortlich sind und mir somit genau ausgeben, welches Bit "1" ist und dadurch ein zugeordnetes Fehler_Bit im DB setz.

Leider habe ich momentan in den 11 "FC_Analyse" Bausteinen, eine untereinander stehende 32-Bit Überprüfung stehen, was programmiertechnisch nicht wirklich sauber aussieht.

Hätte jemand eine Hilfestellung (evt Bsp) wie ich "schöner" diese Auswertung des Doppelwortes hinbekommen kann?
Bike hat mir den Tipp mit der Benutzung eines Zeigers gegeben, doch leider übersteigt das momentan noch meine sperrlichen Programmierkenntnisse, aber vlt hat doch jemand noch ne Idee bzw realisierungsmöglichkeit anhand dieses Zeigers (indirekte Adressierung).
 
Zurück
Oben