TIA FIFO mit TIA V11

Ihr seid ja witzig.

- Ich habe die Zeit mit Datum genommen um bei einem Ausschalten dennoch die richtige Zeit zu haben. Das mit dem Datum dient dem Datumssprung, der würde nur bei der Tageszeit nämlich sonst bei allem was nach 20:00 Uhr gestartet wird ein Problem darstellen und die Differenz bei Tageswechsel so hoch haben das das was z.B. um 23:55 ausgelöst wird bereits um 00:01 abgeschlossen ist.

- Der Grund für die Zeit hat den Grund, das man bei gewünschter späterer Auswertung der Startzeit und Endzeit bereits die richtigen Daten vorliegen hat, somit leichter eine Zieluhrzeit nennen kann. Nur noch wenige Nachrechnungen dafür sind notwendig.

- Das die Lokalzeit bei der Sommer-/Winterumstellung einen Sprung und damit Problem macht weiß ich. Das macht sie aber auch in anderen zeitbasierten Steuerungen in welchen man die Zeitumstellung aktiviert. Diese ist bei mir aber immer deaktiviert, da in der Vergangenheit mehrere Kunden den nicht änderbaren Zeitpunkt moniert haben. Keine Ahnung ob er mittlerweile durch ein PAnel geändert werden kann, da ich schon ewig meine Zeitumstellung anders ausrichte. Also wird in der CPU in der Lokalzeit immer die tatsächliche Zeit ohne Umstellung eingestellt und in einem globalen DB wird dann in dem ersten Eintrag die tatsächliche Zeit nach der Zeitumstellung bereitgestellt. Somit habe ich da gar keine Probleme mehr und die Zeitumstellung erfolgt über FB, einstellbar im Panel für den Kunden. Für zeitliche Abläufe hat mein FB der die Zeitumstellung durchführt eine Folgeroutine. Ich schreibe dort die zeitlichen Aktionen an einen der 50 versteckten in/outs und der Baustein ändert bei Zeitumstellung zuverlässig auch diese Werte.

- Das ich jedem Tastendruck einen Zeitstempel gebe liegt einzig daran das es nicht gewünscht ist 2 gleiche Zeiten zu haben. Tatsächlich würde es aber auch einen Unterschied machen ob man eine globale Zeit pro Zyklus oder eine Zeit pro Aufruf nutzt. Im Nanosekundenbereich gibt es ja dann auch noch Unterschiede.
- Die 1 wird der 24 vorgezogen - im gleichen Zyklus.
Müssen wir darüber diskutieren?


Sicher kann man den Baustein weiter ausbauen, aber hey - kann gern jeder von Euch mal eben 10 Minuten seiner Zeit opfern und einen eigenen Baustein eintippern und es damit besser machen, bitte aber so verständlich wie es nur geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum eigentlich Datum / Uhrzeit ?
Ich habe nur etwas gelesen von „nach 4 Stunden“.... oder habe ich da etwas überlesen ?
Klar, man kann auch 24 Timer spendieren, für jedes RegalFach einen.
Ich bin noch geprägt durch S5. Da hatte man 128 Timer zur Verfügung, abzüglich einiger weniger, die Siemens belegt hat. Das klingt vielleicht nach viel, war aber bei unseren Anwendungen (SchrittKetten, diverse pneumatische/hydraulische Aktoren und EndlagenRückmeldungen, die mehrere bis viele PLC-Zyklen auf sich warten liessen) schnell "verbraten", wenn man unterscheiden wollte, ob die ReaktionsZeiten noch tolerabel waren oder bereits ein Indiz für eine Störung.
Sparsamkeit bei der Verwendung von Timern war angesagt, nicht jedoch eine MehrfachVerwendung eines Timers für verschiedene Zwecke.

Man kann abfragen ob ein Timer abgelaufen ist, nicht jedoch, wie lange er schon abgelaufen ist. Das ist aber hier entscheidend für die Auswertung. Wenn - warum auch immer - ein abgelaufener Timer nicht sofort quittiert wird oder werden kann und dann schon der nächste abläuft u.s.w. ...
Für Visualisierungen und Protokollierungen sind die Informationen, die Timer liefern können, sicherlich auch nicht ausreichend "ergiebig" und aussagekräftig.
Timer zu verwenden, dürfte auch fast ein AusschlussKriterium sein, Arrays und/oder ProgrammSchleifen vorteilhaft einsetzen zu können.
Kurzum, die Uhrzeit-Variante finde ich einfacher und vielseitiger - aber Uhrzeit alleine, ohne Datum, erfordert mehr "GehirnSchmalz" und führt zu WorkArounds mit Einschränkungen und damit zu endlosen Diskussionen und Verständnislosigkeit.

Trotzdem, ein schönes WE! Gruss, Heinileini
 
Klar, man kann auch 24 Timer spendieren, für jedes RegalFach einen.
Ich bin noch geprägt durch S5. Da hatte man 128 Timer zur Verfügung, abzüglich einiger weniger, die Siemens belegt hat. Das klingt vielleicht nach viel, war aber bei unseren Anwendungen (SchrittKetten, diverse pneumatische/hydraulische Aktoren und EndlagenRückmeldungen, die mehrere bis viele PLC-Zyklen auf sich warten liessen) schnell "verbraten", wenn man unterscheiden wollte, ob die ReaktionsZeiten noch tolerabel waren oder bereits ein Indiz für eine Störung.
Sparsamkeit bei der Verwendung von Timern war angesagt, nicht jedoch eine MehrfachVerwendung eines Timers für verschiedene Zwecke.

Man kann abfragen ob ein Timer abgelaufen ist, nicht jedoch, wie lange er schon abgelaufen ist. Das ist aber hier entscheidend für die Auswertung. Wenn - warum auch immer - ein abgelaufener Timer nicht sofort quittiert wird oder werden kann und dann schon der nächste abläuft u.s.w. ...
Für Visualisierungen und Protokollierungen sind die Informationen, die Timer liefern können, sicherlich auch nicht ausreichend "ergiebig" und aussagekräftig.
Timer zu verwenden, dürfte auch fast ein AusschlussKriterium sein, Arrays und/oder ProgrammSchleifen vorteilhaft einsetzen zu können.
Kurzum, die Uhrzeit-Variante finde ich einfacher und vielseitiger - aber Uhrzeit alleine, ohne Datum, erfordert mehr "GehirnSchmalz" und führt zu WorkArounds mit Einschränkungen und damit zu endlosen Diskussionen und Verständnislosigkeit.

Trotzdem, ein schönes WE! Gruss, Heinileini

Ok wir sind ja nicht mehr bei S5-Zeiten und deshalb gibt es Timer ohne Ende... Ich habe auch nicht geschrieben das ich 24 Timer verbraten will sondern
die Aufgabe eher so verstanden habe das jedes Teil maximal 4 Stunden im Regal liegen darf weil nach 4 Stunden die Teile aus dem Regal entnommen werden müssen.

Heißt wenn 10 Teile über 4 Stunden im Regal liegen müssen die alle raus egal ob 4 Stunden und 10 Minuten oder 4 Stunden und 45 Minuten.
Aber da es keine schöne Beschreibung vom Ablauf gibt sondern mehrere [FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]Puzzleteile in 3-4 Antworten kann man auch schnell etwas [FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]falsch interpretieren.

Dir auch ein schönes WE! Gruß Captain Future[/FONT][/FONT]
 
Ja aber im ersten Post steht doch drin das das was zuerst drin war zuerst raus soll. Also dürfen nicht alle gleichzeitig leuchten. Finde ich nicht missverständlich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das erstellen eines struckts durch array hab ich noch nie gehört...
Alle Elemente eines Array haben ausnahmslos denselben DatenTyp. Entweder alle INT oder alle REAL oder alle DWORD oder ...
Das bleibt auch so, wenn man dem Array eine (oder mehrere) Dimensionen hinzufügt.
Wir benötigen hier z.B. eine Tabelle mit 24 Zeilen für die RegalFächer und mindestens 2 Spalten für z.B. Uhrzeit und BelegtKennzeichen.
Das sind zwei unterschiedliche DatenTypen. Was tun?
Man könnte zwei Arrays anlegen, eins für die Uhrzeit und ein anderes für das Kennzeichen.
Oder man könnte ein zweidimensionales Array anlegen, wo die zusätzliche Dimension genutzt wird, um zwischen den Bedeutungen Uhrzeit und Kennzeichen umzuschalten. Aber, die Uhrzeit kann nicht in einem Element vom Typ BOOL gespeichert werden.
Umgekehrt könnte man aber überlegen, das Kennzeichen "irgendwie" in einem Uhrzeit-Datentyp zu kodieren. Ist machbar, aber nicht gut nachzuvollziehen.
Der eine gemeinsame DatenTyp eines Arrays kann aber ein "benutzerdefinierter" DatenTyp und dieser aus verschiedenen DatenTypen zusammengestellt sein.
Damit erhalten wir eine Tabelle mit z.B. 24 Zeilen für die RegalFächer und so vielen Spalten, wie der benutzerdefinierte ("massgechneiderte") DatenTyp "hergibt".
Was hat das mit "Struct" zu tun? Nun, das ist nur eine andere Bezeichnung für einen benutzerdefinierten DatenTyp.
 
Ja aber im ersten Post steht doch drin das das was zuerst drin war zuerst raus soll. Also dürfen nicht alle gleichzeitig leuchten. Finde ich nicht missverständlich.

Ich habe doch nicht geschrieben das alle Leuchten.
Aber mal eine Frage liegen die Teile länger als 4 Stunden im Regal oder müßen die nach 4 Stunden raus ????

Mir ging es ja nur um die Frage ob Datum/Uhrzeit erforderlich sind oder es nur um eine Maximale Verweildauer von 4 Stunden gibt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ging es ja nur um die Frage ob Datum/Uhrzeit erforderlich sind oder es nur um eine Maximale Verweildauer von 4 Stunden gibt.
Für mein Verständnis: minimale VerweilDauer von 4 h. (Wobei es von der Flottizität der Bediener abhängt, um wie viel die 4 h überschritten werden)

Ist der Baustein jetzt für alle Taster?
Ja, für alle Taster, alle LeuchtMelder, alle RegalFächer, ...

PS:
Aber Du musst ein Bisschen mehr noch tippen - einiges war nur angedeutet (und ist es auch hier wieder):
Code:
    #Tastereingänge[1] := "E0.0";
    #Tastereingänge[2] := "E0.1";
    // u.s.w. ...  bis
    #Tastereingänge[23] := "E2.6";
    #Tastereingänge[24] := "E2.7";
    
    "A0.0" := #LEDs[1];
    "A0.1" := #LEDs[2];
    // u.s.w. ...  bis
    "A2.6" := #LEDs[23];
    "A2.7" := #LEDs[24];
 
Zuletzt bearbeitet:
Zurück
Oben