Wago und 1-wire

hallo,

erst mal danke fürs bereitstellen der lib, schön das ihr profis uns (mich) unwissenden an eurer arbeit teilhaben läßt.

Wie man aus dem obrigen satz entnehmen kann bin ich nicht der große wago held (hab mein licht über dali programiert, meine heizung regelt auch nach der vorgegebenen temperatur, aber das wars dann eigentlich auch schon)

deshalb hab ich jetzt mit dem beispiel so meine kleine Problemchen, vielleicht kann mir ja jemand helfen, so schlimm kanns meinermeinung nach nicht sein.

  1. hab die *.exp als lib abgespeichert, dann ein neues projekt geöffnet und das beispielprojekt importiert

  2. wenn ich das Projekt jetzt übersetzte bekomme ich folgende meldung:

kann leider mit der variablen owp garnix anfangen, kann mir jemand einen kleinen tipp geben?
DANKE

Christian

owp ist eine Struktur von one-wire parametern (owp - one wire parameter), Beschreibung habe ich ich in der pdf abgelegt,

deine Meldung kann ich leider nicht sehen, aber ich vermute, dass es ein Problem mit der Rayk_Wago.lib ist, diese sollte auch vorliegen, ggf. sollte man im Projekt angeben, wo diese sich befindet

sieht man jetzt was?

also die lib ist eingebunden, und wirt auch wie ich das erkennen kann ohne probleme verwendet

Christian

alles klar: also
in der Taskkonfiguration muss noch ein Ereignis eingetragen werden (wird beim Import nicht ordentlich übernommen…)

bei messwerte mus owp.Sensordaten_neu, bei bin_Ausgaenge muss owp.bin_Ausgaenge und bei bin_Eingaenge muss logischerweise owp.bin_Eingaenge drin stehen

an diese Werte kommst du, indem du indem du bei one_wire_daten in der struct owp suchst, oder per hand eintragen…

ah, ok, dankeschön

hat einer von euch ne liste, wie die befehle hintereinander kommen müssen um einen 18B20 auszulesen

hab mir die lib mal angeschauen, bin auch weitergekommen, aber bekomme die temperatur nicht raus

so hab ich das probiert

erstmal match rom
E1 55 10 A0 28 CB 01 08 00 11 -> 55 10 A0 28 CB 01 08 00 11

dann Read scratch:
BE FF FF FF FF FF FF FF FF FF -> BE AA 00 4E 46 FF FF 0C 10 6C

dann noch reset:
E3 C5 -> CD

da ändert sich aber nix, wenn wärmer oder kälter

muss ich die Temp. vorher noch einlesen ?
E1 CC 44 E3 C5 -> E1 CC 44 CD

ändert aber auch nix

ins scratchpad schreiben muss ich nich oder ?

in welchen Bytes steht der Messwert ? 0 und 1 ?

vielleicht kann einer helfen

gruß
chris

  1. Befehlsreihenfolge stehen im Handbuch des Sensors.
  2. ich verstehe den Zusammenhang nicht: die Temperatur steht in

globale Variablen -->one_wire_Daten–>Sensordaten [1].Temperatur (wobei 1 die Nummer des Sensors ist) vorausgestzt, dass die ID des Sensors eingetragen ist.

hab die lib nicht eingebunden … hab nen cx von beckhoff … hab nur geschaut wie du das gemacht hast

die befehlsreihenfolge hab ich schon im pdf gefunden, bei mir ändert sich der wert aber nicht der vom 2480 kommt

hmmm … werde wohl noch ein wenig probieren müssen

wenn du die Parameter der Schnittstelle anpasst, sollte die lib auch bei Beckhoff funktionieren

jetzt läufts bei mir auch … bin echt positiv überrascht … hab zwar nur 2 sensoren dran, ist aber recht fix … will mir jetzt mal 10 stück besorgen und verschiedene leitungslängen testen

danke und gruß

chris

Da ich als Anfänger auch gern was lernen möchte, währe es nicht schlecht wenn du uns mitteilen könntest woran es gelegen hat. Wie hast du dein Programm aufgebaut?

im prinzip ganz einfach … beckhoff kl6001 an einer micro inovation plc, kann aber irgendeine x beliebiege sein, sogar siemens

serielle kommunikation war nicht viel, wollte erst die standardbausteine von beckhoff nehmen, habs aber jetzt selber programmiert - ist zwar noch lange nicht fertig, funktioniert aber erstmal ( 0 fehlerauswertung )

die kl6001 kommuniziert dann mit dem DS2480b mit 9600 baud

die id’s hab ich fest im programm vorgegeben - das auslesen macht in meinen augen keinen sinn, höchsten beim ersten mal um die id festzustellen

fb …

also erst wird ein reset angestossen

30:		(* Reset *)
		CMD_OUT[1]:=16#E3;
		CMD_OUT[2]:=16#C5;
		SND_Lenght:=2;

das array ist das sendearray zur klemme

danach die temp convert

220:	(* Temp messen *)
		CMD_OUT[1]:=16#E1;
		CMD_OUT[2]:=16#CC;
		CMD_OUT[3]:=16#44;
		CMD_OUT[4]:=16#E3;
		CMD_OUT[5]:=16#C5;
		SND_Lenght:=5;

danach werden alle id’s abgefragt

300:	(* Match Rom + Read Scratchpad *)
		CMD_OUT[1]:=16#E1;
		CMD_OUT[2]:=16#55;
		CMD_OUT[3]:=16#10;
		CMD_OUT[4]:=16#A0;
		CMD_OUT[5]:=16#28;
		CMD_OUT[6]:=16#CB;
		CMD_OUT[7]:=16#01;
		CMD_OUT[8]:=16#08;
		CMD_OUT[9]:=16#00;
		CMD_OUT[10]:=16#11;
		CMD_OUT[11]:=16#BE ;
		CMD_OUT[12]:=16#FF;
		CMD_OUT[13]:=16#FF;
		CMD_OUT[14]:=16#FF;
		CMD_OUT[15]:=16#FF;
		CMD_OUT[16]:=16#FF;
		CMD_OUT[17]:=16#FF;
		CMD_OUT[18]:=16#FF;
		CMD_OUT[19]:=16#FF;
		CMD_OUT[20]:=16#FF;
		CMD_OUT[21]:=16#E3;
		CMD_OUT[22]:=16#C5;
		SND_Lenght:=22;

und es geht wieder von vorne los …

wenn es ausprogrammiert ist, gibts ne lib - kann aber noch dauern

gruß

noch ne kleine verständnisfrage, habe seit heute einen feuchtesensor (auf Basis eines DS2438) wird auch wunderbar erkannt, der wert wird unter helligkeit ausgelesen, doch leider weis ich absolut nicht um welche größe es sich dabei handelt, aus dem gefühl raus würd ich sagen /10 dann hat man die V die am DS2438 anliegen oder? damit könnte ich dann weiterrechnen.

Christian

Hallo Ferengi,

du kannst im testweise den Feuchtesensor direkt per IPS über den DS2480 abfragen, dann weist du welche Werte du bekommst.

Hier mein Beispielskript zur Auswertung der Werte des DS2438/HIH4000

Grüße
Andrge

die Helligkeit wird in % von max_Helligkeit berechnet,
es wird der Spannungswert gemessen und der maximale Wert wird in max_Helligkeit eingetragen.

Rayk

danke für die info, wenn ich weis das das die spannung ist kann ich am wochenende mal rechnen, mal schaun was dabei rauskommt :rolleyes:

Christian

ich kann dir die Sache auch anpassen…
Rayk

danke für das angebot, aber ich soll ja auch was lernen :rolleyes:
werds am wochenende ausprobieren, falls ichs nicht hinbekomme meld ich mich nochmal

Chrisitan

kleine rückmeldung:

es sieht soweit gut aus, hab deine lib soweit erweitert das auch die feuchte angezeigt wird, bin mir nur bei der formel noch nicht so sicher, dazu gehts aber in andrge beitrag weiter.

noch was allgemeines zu deiner 1-wire lib:

bitte nicht falsch verstehen, das ding ist echt super und ich finds toll das du uns das gute stück zur verfügung gestellt hast, nur leider ist das ganze nicht sehr anfängerfreundlich :rolleyes:, warscheinlich liegts einfach daran das ich zu wehnig ahnung habe, aber es ist schon sehr verwirrend das ganze :frowning:

Vielleicht hast du ja mal zeit und lust das ganze so umzubauen das man nur noch einen FB hat, mit 3 eingängen (sensoradresse, art und abfragezeit) und hinten kommen dann die werte raus :smiley:

so, jetzt hau ich aber ganz schnell ab …

Christian

Für Anregungen und Änderungswünsche bin ich immer dankbar.
Meine lib habe ich so aufgebaut, dass das System so wenig wie möglich belastet wird, da die Steuerung noch viele andere Aufgaben erledigen soll (daher die eigene Task).
Dein Wunsch nach einem FB für jeden Sensor ist daher Problematisch (bei mehreren FB’s), da eine Synchronisation der FB’s erfolgen muss. Wenn nicht kann es vorkommen, dass FB1 und FB x gleichzeitig ihre Sensoren abfragen und dann funktioniert der ganze Bus nicht mehr. Weiterhin muss in jedem Baustein das Programm für die serielle Schnittstelle bereitgestellt werden. Das wird nix.

Ich habe gehofft, dass im 1-wire Forum was rauskommt aber dort ist tote Hose…

Rayk