-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - heinzl

#1
RU und RD wirken grundsätzlich NUR im Automatikmodus, wenn die Endpositionen (0 oder 255) angefahren werden. Automatikmodus ist immer dann, wenn UP und DN beide TRUE sind. Nach einer manuellen Fahrt aber hält der BLIND_INPUT UP und DN beide auf FALSE, das ist der sog. ManualStandby-Modus. Erst nach einer Stunde (Dauer einstellbar über die Config-Variable MANUAL_TIMEOUT in BLIND_INPUT) wird wieder in den Automatik-Modus gewechselt.

Dass RU und RD nicht im manuellen Modus wirken, ist Absicht. Die Idee ist: Wenn ich mein Rollo von Hand in irgendeine bestimmte Position fahre, dann möchte ich auch, dass es ganz genau dort stehen bleibt, wo ich es hingefahren habe. Zumindest solange, bis wieder in den Automatikbetrieb gewechselt wird. Manueller Modus = Ich steuere. Automatikmodus = Die Automatik macht, was sie für richtig hält.

Du kannst auch vor Ablauf von MANUAL_TIMEOUT in den Automatikmodus zurückkehren, wenn Du beide Taster lange gedrückt hältst.

Da aber bei Dir der Doppelklick schon belegt ist, hilft die meine vorgeschlagene Änderung nicht weiter. Du kannst aber anstatt meinem Vorschlag vom letzten mal folgende Änderung probieren:

   134:   (* manualautomatic operation single click up *)
         QU := TRUE;
         QD := FALSETRUE;
         PO := POS255; AO := ANG;
         IF tx - last >= max_runtime THEN status := 131130; END_IF;

   135:   (* manualautomatic operation single click dn *)
         QU := FALSETRUE;
         QD := TRUE;
         PO := POS0; AO := ANG;
         IF tx - last >= max_runtime THEN status := 131130; END_IF;


Ich bin mir nicht ganz sicher, ob das jetzt eine Änderung speziell für Dich ist, oder ob es sinnvoll wäre, das als Standard zu übernehmen. Da gibt es sicherlich für beide Vorgehensweisen gute Argumente.

Gruß
Heinz
#2
Hallo miha,

ich hab mir deine Anregungen jetzt mal näher angeschaut und durch den Kopf gehen lassen. Beim Design der BLIND_... Bausteine war es Ziel, diese möglichst unabhängig voneinander zu halten, so dass der BLIND_CONTROL beispielsweise auch ganz ohne BLIND_INPUT betrieben werden kann. Das bedingt, dass BLIND_CONTROL nichts über irgendwelche inneren Zustände von BLIND_INPUT wissen kann (und auch nicht wissen sollte). Deshalb kommunizieren beide Bausteine nur über die "genormte" Schnittstelle UP / DN / PI. Dabei wird UP / DN als manueller Fahrbefehl betrachtet, den der Baustein unbedingt ausführt (klar, wenn DN aktiviert ist, soll das Rollo halt nach unten fahren, so weit es geht).

Du willst jetzt aber erreichen, dass bei einem Klick das Ganze sich so verhält, wie im Automatik-Betrieb. Der richtige Ansatz dazu ist m.E. nicht der BLIND_CONTROL(_S) -Baustein, sondern der BLIND_INPUT. Erfreulicherweise bringt dieser schon alles mit, was man dazu braucht: Wenn Du die Setup-Variablen DBL_CLK1 und DBL_CLK2 auf TRUE setzt, wird sich der Baustein (fast) genauso verhalten, wie von Dir gewünscht, nämlich im Automatik-Modus die jeweilige Endposition anfahren (oder auch jede andere Position, die Du in den Setup-Variablen DBL_POS? einstellst). Was Dir jetzt nicht gefallen wird, ist die Tatsache, dass Du diese Befehle mit einem Doppelklick ausführen musst.

Wenn Du unbedingt diese Funktion auf Einzelklick haben willst, musst Du Dir den BLIND_INPUT selber anpassen, das könnte z.B. so aussehen (Achtung, hab ich nicht getestet):

...
(* decode actions *)
IF (s1d.LONG AND s2d.LONG) OR (status = 139) THEN
  status := 139;
  IF NOT (s1d.LONG OR s2d.LONG)  THEN status := 130; END_IF;
ELSIF s1d.tp_LONG THEN
   status := 132;
ELSIF s2d.tp_LONG THEN
   status := 133;
ELSIF  s1d.SINGLE THEN
   IF click_en THEN
      (* if running then we stop otherwise start new direction *)
      IF QU XOR QD THEN
         status := 131;
      ELSE
         status := 134;   ändern -> status := 137;
         last := tx;
         dir := NOT dir;
      END_IF;
   END_IF;
ELSIF  s2d.SINGLE THEN
   IF click_en THEN
      (* if running then we stop otherwise start new direction *)
      IF QU XOR QD THEN
         status := 131;
      ELSE
         status := 135;   ändern -> status := 138;
         last := tx;
         dir := NOT dir;
      END_IF;
   END_IF;
ELSIF in THEN
...


Trotzdem sehe ich auch noch Verbesserungsmöglichkeiten im BLIND_CONTROL_S: Der Baustein reagiert nämlich nicht auf "nachträgliches" Einschalten von RU oder RD und auch bei der Rückkehr vom Manual_Standby in den Automatikmodus werden aktive RU/RD nicht berücksichtig. Beides möchte ich in der nächsten Version gerne noch nachrüsten.

Ich hoffe, das hilft Dir weiter. Bei Problemen schau ich mir das Ganze gerne nochmal an.

Heinz
#3
So, jetzt hab ich die Lösung gefunden:

Alles Installieren von Codesys und den Wago-targetfiles hat nix geholfen. Erst als ich von meiner Original-Wago-IO-Pro-CD das Setup der Uralt-Version 2.7 gestartet habe, bekam ich folgende Meldung:

---------------------------
Frage
---------------------------
Sie haben bereits eine neuere Version des Setups installiert.

Dieses Setup enthält Hersteller spezifische Dateien (z.B. Targets).

Wollen Sie nur diese Dateien der aktuellen Installation hinzufügen?
---------------------------
Ja   Nein   
---------------------------

Die hab ich mit "Ja" beantwortet, woraufhin irgendwelche Zusätze installiert und registriert wurden. Und was soll ich sagen: Seitdem kann ich wieder Bausteine hinzufügen!
#4
SPS-Programmierung / Re:1Wire mit Codesys Wago841
14. Dezember 2009, 08:10:37
Also ich hab grad angefangen, mit dem Thema zu experimentieren. Um mit der ganzen Problematik rund ums Bustiming weniger Probleme zu haben, verwende ich den Adapter von iButtonLink (http://www.fuchs-shop.com/de/shop/1/1/13372058/), der hat einen kleinen Controller an Bord und wickelt das Protokoll teilweise selbständig ab. Erste Experimente am PC waren erfolgreich, die Integration in meine Wago werde ich über das Weihnachtswochenende mal in Angriff nehmen. Ich berichte hier, sobald es was Neues gibt.
#5
Also am Projekt kann es jedenfalls nicht liegen: Mit meinem Laptop (dort ist Codesys 2.3.9.0 und die WAGO-Targets vom 13.03.2008 installiert) klappt das Entfernen und hinzufügen einwandfrei. Meine bisherigen Untersuchungen lenken den Verdacht auf die ea_dll.dll im Verzeichnis Targets\WAGO\PLCconf\32_bit\PIA_WORD\EA_DLL.dll. Diese scheint von Wago zu kommen und ist wohl die Verwaltung des K-Bus zuständig. Warum die Version auf meinem stationären PC trotz kompletter Neuinstallation nicht funktionieren mag, bleibt aber nach wie vor ein Rätsel.
#6
Vielleicht kann mir jemand hier im Forum helfen: Nach längerer Zeit wollte ich meine Steuerung (750-841) erweitern und einen neuen Baustein hinzufügen, jedoch bekomme ich bei jedem Versuch, die Steuerungskonfiguration zu bearbeiten den Fehler: Com error in EA_DLL.DLL - Error Description = (null).

Die Meldung kommt auch, wenn ich ein völlig neues Projekt erstelle und versuche, den ersten Baustein hinzuzufügen.
Ich hab mein Codesys schon komplett deinstalliert, das 3s-verzeichnis gelöscht und die aktuellste Version (2.3.9.16) neu installiert, ebenso die Tragetfiles, aber der Fehler bleibt.

Hat jemand ne Idee, was das noch sein kann?

Vielen Dank schon mal für jede Hilfe

Heinz

[gelöscht durch Administrator]
#7
Hallo Daniel,

anbei die aktuellen Versionen der Blind-Bausteine, die ich in meinem Haus verwende. Neu ist auch, dass der BLIND_CONTROL durch einen langen Druck auf beide Taster den manuellen Modus verlässt und wieder in den Automatikbetrieb wechselt, ohne den MANUAL_TIMEOUT abzuwarten.

Viele Grüße
Heinz

[gelöscht durch Administrator]
#8
Hallo Daniel,

die von Dir beschriebenen Fehler im BLIND_CONTROL_S mit Kalibrierfahrt und erster regulärer Fahrt hab ich vor ein paar Tagen erst gefunden und gefixed (das Problem liegt im Zusammenspiel zwischen BLIND_INPUT und BLIND_CONTROL). In der oscatlib 3.11 sollte das bereinigt sein.

Bei Bedarf kann ich dir die geänderten Quellcodes vorab zukommen lassen.

Heinz
#9
Ich habe hier mit einer Wago 841 und oscat die komplette Steuerung meiner Rollos (in meinem eigenen Haus) realisiert. Klappt prima.
Obwohl ich absoluter SPS-Neueinsteiger bin, konnte ich dank oscat recht schnell eine funktionierende Lösung realisieren.
Sobald ich mit allen geplanten Features fertig bin, werde ich das komplette Projekt unter "Anwendungsbeispiele" reinstellen.

Vielen Dank für diese super Library
Heinz