BLIND_CONTROL_S

Begonnen von pelmic, 13. September 2010, 11:13:37

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

pelmic

Hallo,

ich setze eine Phoenix SPS ein (PC Worx + ETH150) und steuere damit meine Rolladen. Daher habe ich einige Bausteine der BLIND_ Reihe verwendet. So weit funktioniert auch alles, nur die Positionierung der Rolladen klappt so gar nicht. Wenn die Rolladen oben sind, sollte die Position (wenn ich das richtig verstehe) auf 255 sein; unten auf 0. Nach Initialisierung ist der Wert auch für oben 255. Wenn die Rolladen dann aber unten sind, dann steht der Wert leider nicht auf 0. Mir scheint das, als wenn die Skalierung von 0 - 255 nicht funktioniert. Ich sehe im Debug, dass der Counter mehrmals überläuft. Die eingestellten Laufzeiten der Rolladen sind aber korrekt.
Evtl. kann mir jemand weiterhelfen?

Danke!!!

peewit

#1
hallo

habe mal den code von blind_control_s und den intern verwendeten sub-bausteinen mit den codesys-referenzbausteinen verglichen
dabei habe ich festgestellt das der intern verwendete baustein "_RMP_B" in einer nicht aktuellen version in der bibliothek enthalten ist.
ob dies auch die ursache für dein beschriebenes probleme ist, wird sich bei deinen erneuten test zeigen

öffne die oscat-base bibliothek ganz normal als projekt und wähle im menü "Datei den eintrag Import" aus
dann wählst du "erweiterter IEC xxx Import" usw.. und importiert die neue baustein version in die bibliothek durch überschreiben der alten version
(compilieren danach nicht vergessen)

gruesse peewit

(Anhang wieder entfernt !)

pelmic

Hallo peewit,

vielen Dank für Deinen schnelle Antwort. Habe das alles gemacht, jedoch leider keinen Erfolg erzielen können. Die Pos Variable zählt wie sie will und läuft mehrmals über. Irgendwas scheint da nicht zu stimmen. Könnte es was mit der Art der Task zu tun haben? Ich bin leider nicht so fortgeschritten im SPS programmieren...

Ich habe mal meinen FB angehangen, vielleicht hilft der ja...

Grüße,

Michael

[gelöscht durch Administrator]

peewit

#3
hallo pelmic

habe den _rmp_b baustein mal praktisch getestet

die fehlerhafte rampe ergibt sich durch eine inkompatibilität der verschiedenen iec plattformen !

bei der BYTE_TO_INT kommt es bei pcworx zu eine eher unlogischer konvertierung
das höchste bit des bytes wird als vorzeichen interpretiert,  was unsinn ist, somit läuft die rampe ab den wert 127 über und fängt wieder bei 0 an

diese eigenwillige interpretation ist auch bei WORD_TO_DINT vorhanden , somit habe ich auch den _rmp_w nochmals angepasst

(das abweichende verhalten ist mir ansich seit jahren bekannt, leider passieren halt auch mir immer wieder fehler)


schau mal ob du nun damit besser zurechtkommst

_rmp_b und _rmp_w baustein wieder wie schon anfangs erklärt, in die bibliothek einbinden

gruesse peewit


[gelöscht durch Administrator]

pelmic

Hallo peewit,

danke für Deine schnelle und vor allem professionelle Hilfe! Es sieht so aus, als ob das Problem gelöst ist. Ich konnte leider noch nicht alles testen.

Gruß,

pelmic