Autor Thema: UF Fehler  (Gelesen 2133 mal)

Offline WPetrick

  • Full Member
  • ***
  • Beiträge: 138
UF Fehler
« am: Juli 01, 2021, 12:02:05 Nachmittag »
Hallo
Habe mir vor einiger Zeit ein UF in ST Programmiert. Es ist eine Schaltuhr die ich mehrfach verwende und auch eigentlich
läuft.
Belegung UF
I1 Ein
I2 Hand
I3 nicht belegt
IA 1 Std Ein
IA 2 Min Ein
IA 3 Std Aus
IA 4 Min Aus
IA 5 Wochentag Ein als Byte

Nach einiger Laufzeit der easy Schaltet von den UF das eine oder andere nicht mehr aus.
Ein ändern der analogen Eingänge auf einen anderen wert bringt keine Änderung Q1 bleibt Ein.
Ändern der Analogen Eingänge 1 -4 auf null schaltet Q1 Aus.
Setzen von STD ein schaltet Q1 sofort ein.
Nur ein Stop RUN Wechsel bringt für einige Tage Besserung.
Bin am Rätseln woran es liegen könnte wechseln auf eine neue e4 hat auch nichts gebracht.
FW 1.30 Software 7.30

« Letzte Änderung: Juli 01, 2021, 12:06:21 Nachmittag von WPetrick »

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:UF Fehler
« Antwort #1 am: August 13, 2021, 18:21:04 Nachmittag »
Hallo,

auch wenn ich wohl eher keine Hilfe sein kann melde ich mich mal.

Ich fuchse mich gerade in die ST-Welt und versuche zu verstehen was wie funktioniert.

Ist das der gesamte Code Deines UF in dem Bild?
Handbetrieb hast Du also noch gar nicht programmiert?

Wenn Du von den permanent On bleibenden Q1 sprichst, dann meinste Du schon den jeweiligen Q1 vom UF, oder?
Und was meinst Du mit "setzen von STD ein"?

Sind diese "Hänger" völlig unregelmäßig und nicht reproduzierbar, oder treten sie an einem bestimmten Wochentag o.ä. auf?

Und nur nochmal für mein Verständnis: Man kann in ST solche Werte wie (RC01WD =1 AND M1) so testen und bekommt ein boolsches Ergebnis?

Ich würde mich über Infos freuen.

Viele Grüße,
Wolfgang
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....

Offline WPetrick

  • Full Member
  • ***
  • Beiträge: 138
Antw:UF Fehler
« Antwort #2 am: August 15, 2021, 10:10:04 Vormittag »
Hallo Wolfgang
Ja das ist der Code vom UF.
Die Funktion im UF bereitstellen einer Uhr der easy RC 01

Schreiben des Analogeingangs I05 in MB 1 vom UF (Unpack Funktion bei Codesys )

M17 geht in Selbsthaltung wenn

RC01 Stunden gleich Analogeingang 01 (Std Ein)  und RC01 Minuten gleich Analogeingang 02 (Min Ein)

M17 Selbsthaltung Aus

RC01 Stunden gleich Analogeingang 03 (Std Aus)  und RC01 Minuten gleich Analogeingang 04 (Min Aus)

M17 := ( M17 OR RC01HR = IA01 And RC01MN = IA02 ) and not
           
                         (RC01HR = IA03 And RC01MN = IA04 ) ;

Das Funktioniert auch einwandfrei habe ich so auch in einer e4 in St Programmiert (siehe Bild )
hier werden aber MB anstatt der Analogeingänge verwendet und der Merker für die Selbsthaltung heist anders.
Dann gibt es noch M19 Abfrage wenn alle Zeiten auf null stehen nur zu zur Sicherheit.
Merker 18 Auswertung vom Aktuellen Wochentag mit Angewählten Wochentag

Die eigentliche Auswertung ist dann

Ausgang  I1 Uhr Aktiv und M17 Uhr hat eingeschaltet in Selbsthaltung und M18 Wochentag ist Ein
      und nicht M 19 oder I2 Handfunktion
      Q1 := I1 AND  ( M17 AND M18 ) AND NOT M19 OR I2:

Das UF Funktioniert bei Aufruf in einer e4 bestens nur bei mehrfach Aufruf kommt es zu einen Fehlverhalten das ich nicht nachvollziehen kann.
Habe jetzt die Zeile
M17 := ( M17 OR RC01HR = IA01 And RC01MN = IA02 ) and not (RC01HR = IA03 And RC01MN = IA04 ) ;
in einer XV 100 als Zyklusskript stehen insgesamt 14 mal und es läuft ohne Fehler

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:UF Fehler
« Antwort #3 am: August 16, 2021, 10:08:51 Vormittag »
Guten Morgen,

vielen Dank für Deine Ausführungen.

Mir sind noch ein paar Details aufgefallen:

Du scheinst für jeden Deiner UF-Aufrufe eigene Datensätze zu erzeugen (schließe ich aus den XV-Screenshots) und den unterschiedlichen MBs an den dargestellten IA1 bis IA4 von UF16 / UF17.
Das soll doch sicher auch den Wochentag beinhalten, oder?
Warum wird dann für beide gezeigten UF jeweils der identische MB64 für den Wochentag eingesetzt?

Als Nächstes war mir aufgefallen, dass in besagtem MB64 der Wert 255 steht und Du die Bis 1-7 testest... da dachte ich, wo ist denn Bit 0? Musste dann feststellen, dass die Easy mit M01 beginnt (war mir noch gar nicht aufgefallen). Die Steuerungen, die ich bisher programmiert habe hatten z.B. für ein MW immer Bit 0 bis Bit 15... zwischendrin noch was gelernt...  ;)  Also nix...

Dann habe ich gelesen, dass die EasyE4 "genau eine Echtzeituhr zur Verfügung stellt" - ist auch irgendwie logisch, da die Zeit nunmal nicht mehrfach vorhanden ist/sein muss...
Aber könnte es vielleicht sein, dann die E4 zwar das mehrfache Aufrufen des RC01 zuläßt, aber doch besser nur ein einziges Mal im Programm erscheinen sollte? Keine Ahnung, wie da vielleicht Fehlfunktionen zustande kommen könnten, aber vielleicht gibs da einen Ansatz?!?

Als Letztes habe ich in der Hilfe gelesen, dass die RC01 mittels EN aktiviert werden muss - da vermisse ich bei Deinem UF etwas entsprechendes im ST-Code. Muss man den Baustein-EN bei ST-Programmierung nicht beachten?
Was passiert mit den RC01-Ausgängen, wenn EN aus ist? Ist dann die Uhr "eingefroren" und alle Uhrausgänge zeigen die letzte Zeit, oder werden bei Deaktivierung von EN alle Bausteinausgänge auf 0 gesetzt?
Oder hast Du RC01 vielleicht irgendwo in Deinem Programm via EN aktiviert und im UF wird die Uhr immer wieder gestoppt, weil EN dort nicht beschaltet ist?

Sind nur ein paar Ideen...


Ach so - noch ein paar Fragen für mein Verständnis:

Rufst Du den UF mehrfach auf, weil Du mehrere Ventile/Sektionen hast, die jeweils durch einen UF gesteuert werden?
Ist also auch für jede Sektion individuell Automatik/Handbetrieb geplant?
« Letzte Änderung: August 16, 2021, 10:47:07 Vormittag von Eulhofer »
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....

Offline WPetrick

  • Full Member
  • ***
  • Beiträge: 138
Antw:UF Fehler
« Antwort #4 am: August 16, 2021, 11:06:24 Vormittag »
Hallo

Du scheinst für jeden Deiner UF-Aufrufe eigene Datensätze zu erzeugen (schließe ich aus den XV-Screenshots) und den unterschiedlichen MBs an den dargestellten IA1 bis IA4 von UF16 / UF17.
Das soll doch sicher auch den Wochentag beinhalten, oder?
Warum wird dann für beide gezeigten UF jeweils der identische MB64 für den Wochentag eingesetzt?

Ich verwende zwei UF Schaltuhren für einen Wochentag also Montag Morgens und am Abend ein.

Dann habe ich gelesen, dass die EasyE4 "genau eine Echtzeituhr zur Verfügung stellt" - ist auch irgendwie logisch, da die Zeit nunmal nicht mehrfach vorhanden ist/sein muss...
Aber könnte es vielleicht sein, dann die E4 zwar das mehrfache Aufrufen des RC01 zuläßt, aber doch besser nur ein einziges Mal im Programm erscheinen sollte? Keine Ahnung, wie da vielleicht Fehlfunktionen zustande kommen könnten, aber vielleicht gibs da einen Ansatz?!?

Könnte sein das nur eine Echtzeituhr Aufgerufen werden kann aber warum gibt es dann die Möglichkeit dazu.

Als Letztes habe ich in der Hilfe gelesen, dass die RC01 mittels EN aktiviert werden muss - da vermisse ich bei Deinem UF etwas entsprechendes im ST-Code. Muss man den Baustein-EN bei ST-Programmierung nicht beachten?

Mann kann ein Häckchen setzen Bausteinfreigabe durch En ist erforderlich.


Oder hast Du RC01 vielleicht irgendwo in Deinem Programm via EN aktiviert und im UF wird die Uhr immer wieder gestoppt, weil EN dort nicht beschaltet ist? Ist nicht der fall.

Rufst Du den UF mehrfach auf, weil Du mehrere Ventile/Sektionen hast, die jeweils durch einen UF gesteuert werden?
Ist also auch für jede Sektion individuell Automatik/Handbetrieb geplant?

Die Steuerung ist für ein Bewässerungs System da werden im endausbau 24 Ventile 4 Druckpumpen und noch einiges benötigt.
Die e4 macht auch alles was sie soll auch mit einigen an anderen UF nur der UF mit RC bockt.
Wollte die Möglichkeit von der Anzahl an Vergleichern die man in ST hat Nutzen vielleicht liegt es auch daran
Aber der Skript in der XV 100 läuft jetzt mit 52 Uhren ohne Probleme.

Gruß Werner

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:UF Fehler
« Antwort #5 am: August 16, 2021, 12:20:47 Nachmittag »
Hallo Werner,

spannendes Projekt.

In Sachen Skripte im XV bin ich noch völlig ahnungslos - bin froh, dass ich mein XV102 grundsätzlich ans Laufen bekommen habe...

Vielleicht ist es ja ein Bug in der Firmware, dass es keine Fehlermeldung gibt, wenn die RC01 in einem UF aufgerufen wird. Wenn man versucht diesen Bustein im Programm mehrfach einzusetzen geht das nicht.

Habe auch eben festgestellt, dass man z.B. beim Einsatz vom RC01 im Hauptprogramm durchaus das Häkchen für EN setzen kann - diese Einstellung bei Einsatz von RC01 in einem UF nicht übernommen werden...

Hast Du mal probiert den RC01 ins Hauptprogramm zu setzen und dem UF entsprechende Eingänge für die aktuelle Zeit zu spendieren?


Nochmal die Frage von deinem ersten Post:

Zitat
Setzen von STD ein schaltet Q1 sofort ein.

Was ist STD?

Viele Grüße,
Wolfgang
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....

Offline WPetrick

  • Full Member
  • ***
  • Beiträge: 138
Antw:UF Fehler
« Antwort #6 am: August 16, 2021, 14:56:35 Nachmittag »
Hallo

Ja das einiges an Nerven und zeit gekostet bis ich dahinter gekommen bin das es so nicht geht.
Setzen von STD hier ist die Zeiten gemeint also 14:00 Uhr ein 16:00 Uhr aus.

Hast Du mal probiert den RC01 ins Hauptprogramm zu setzen und dem UF entsprechende Eingänge für die aktuelle Zeit zu spendieren? habe ich auch versucht mit dem gleichen Ergebnis daher mein Verdacht mit den Vergleichern

M9 := ( M9 or RC01HR = MB87 AND RC01MN = MB88 )

In Sachen Skripte im XV bin ich noch völlig ahnungslos - bin froh, dass ich mein XV102 grundsätzlich ans Laufen bekommen habe...

das mit Skript in XV 100 hat mich auch erst nach ein Paar Stunden vorm PC gekostet ist aber meiner Meinung nach einfacher wie in der e4.
Mann kann die Variablen von der e4 Direkt mit selbst erstellten Internern Variablen in der XV 100 verwenden.
So kann man Arrays Struckt in der XV erstellen und verarbeiten, leider hab ich noch nicht rausgefunden wie man eine Variable Remanent bekommt.

Gruß Werner