NEWS
Ansteuerung Motor in Position
-
Hallo,
ich habe einen Motor mit Positionssensor (Poti), der mit MQTT angesteuert wird. Ich möchte mit Blockly diesen auf eine genaue Position steuern steuern.
Ich habe also eine Ist Position von 5 bis 58 und eine Ziel Position von 5 bis 58.
Der Motor wird mit Command true gestartet und mit Command false gestoppt.
Es kommen spätestens alle 7 Sekunden über MQTT die Rückmeldung des Winkels, wie der Motor steht.Als ersten überprüfe ich, mit der Berechnung, ob die Zielposition schon erreicht wäre mit:
Ziel minus Istwert.
Das Problem dabei ist: Wenn das Ziel 5 ist, und der Istwert 50, kommt ein Minuswert heraus, dann läuft das Blockly nicht los.
Wie kann ich eine Differenz ermitteln, damit ich keinen Wert unter Null erhalte?
-
@mika-0 Wenn die Fahrgeschwindigkeit immer gleich ist, könntest Du die Ansteuerdauer aus der Winkeldifferenz errechnen. Wenn die Geschwindigkeit durch Lastsvariationen schwankt, ist das nicht möglich.
-
@martinp danke, ich habe weiter experimentiert und es fährt, aber nur wenn der Ergebniswert größer Null ist. Habe also den Thread umgestaltet.
-
@mika-0 Wenn Du nicht das ganze Skript zeigst, ist die Hilfestellung schwieriger ...
Das Vorzeichen der Differenz bestimmt die Drehrichtung, der Absolutwert der Differenz die Laufzeit des Motors. Vielleicht beides ermitteln, und dann erst das Kommando zusammenbauen ...
-
@martinp Klar kann ich das Skript zeigen, denke aber der Minus Wert ist das Problem:
Ein Motor steuert mit Getriebe eine Klappe an. Die Klappe hat ein Potentiometer mit den Werte 5 - 58
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="CrGA8`dQhnAp`fVNZm]m" x="1713" y="-1937"> <field name="OID">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="R64ggu;XH,4)(ZPFo9F+"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="W~=;ZD*1l){8IKwH,g`L"> <field name="OP">GT</field> <value name="A"> <block type="math_arithmetic" id="sDNe#;]K!)cS;eOj)zU;"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="$-zz#w8V!$8/%RGZ3K^8"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="k0g[KlJg9v5aoGk2GhjD"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id="d%@gWD)W3XC[lv(zE5Z$"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="b$r6`{}ItGRNb6Qmce%)"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="bZ-,NtA@sYcZI[`8(.VE"> <field name="NUM">18</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="=6|QFy.{H]::*(E/;(KU"> <field name="COMMENT">Erst grob verfahren</field> <next> <block type="debug" id="zF,zvX`D4^#MIIu{4Wgl"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="5pQS^qTZpcmYBI}KOunL"> <field name="TEXT">1</field> </shadow> </value> <next> <block type="mqtt_sendmessage" id="eLfR?IDZ.`C:=9uN{NOu"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="UfZ04~RRTqXHeNpOcr1n"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id=";7Z)LRLT8,AP)F665G[z"> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="t-d,s[IQkkTo:|L+v54e"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="pR*ap]M,[9NQo|Qm7vnx"> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id="3pRQAl=JT8EVx-t{6De;"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id="0h/Qpd|:p+e9Ir#8G2iX"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="tg6wsWc1[g$lOHEX%B0G"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="j@_/~*@JD86`}DY%+Eoy"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD2"> <block type="text" id="KVdI6vQ{{(|zC-A%Sk-f"> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="RdDP9UC*;Bno_H7kJH~d"> <field name="DELAY">3</field> <field name="UNIT">sec</field> <next> <block type="mqtt_sendmessage" id="LyaAN#{3m`Nq[;AjK)E#"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="GDA?PzG@u++~EBX_2%6V"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="?s[BaVmH0mbmjp26ox;Y"> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="o3eljgP;N]#161N%Hi$c"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="@R`a~Is+=$`^u[84m%S@"> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id=")THST;yvaA9vh7r(@w^N"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id=";d9?rl!8`z#D?)Pp1YXd"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="GE/e)ES6duP:BML9RTH)"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="mu1+Vee$z`k|U15%cpLV"> <field name="BOOL">FALSE</field> </block> </value> <value name="ADD2"> <block type="text" id="(?KslW6,38q23)_a3.?+"> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="2lpR}+=ny?-j@XQq%I$e"> <field name="DELAY">5</field> <field name="UNIT">sec</field> <next> <block type="controls_whileUntil" id=")V#Dd$3KlSCFi#Thg!D["> <field name="MODE">UNTIL</field> <value name="BOOL"> <block type="logic_multi_or" id="]c;XIZbUV)tL?,^:W|X*"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="OR0"> <block type="logic_compare" id="u#gxJ0nb[(UK,[dpJa;)"> <field name="OP">LT</field> <value name="A"> <block type="math_arithmetic" id=",IzwR/x?7*4j+V)*2E{F"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="z;M?R*QhQrOdB#??H;g|"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="{uuL:%8tBs3kQ)A2PjRX"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id="8Yc}UvN2mWv[%IlX.khZ"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="Hr5n_e9z2adXaarHZKm*"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="aQbQ6[bvvHt7SB%n,PdD"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="OR1"> <block type="logic_compare" id="D3*e*GRKW;%0f*c9ZM4|"> <field name="OP">LT</field> <value name="A"> <block type="math_arithmetic" id="N_-xy?bgbGpj^=y8ehK("> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="iMIP*I31u3aLwkz1sIvA"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="GF]ji`FY_W4Pl.hL[uS9"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id="|~|tAww%?5U[(Ne@`Nh-"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="Jbx9bb*@n1B2@n2fl;AD"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="7W.OlPJJy/Ss^|e{u^`z"> <field name="NUM">4</field> </block> </value> </block> </value> </block> </value> <statement name="DO"> <block type="comment" id="zE]um3al4`+}26(xmQEy"> <field name="COMMENT">Feine Ansteuerung</field> <next> <block type="debug" id="!uqf%Dnme!1O:f8c+!Cn"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="A(8f4siV~OLrth_2,)Mt"> <field name="TEXT">2</field> </shadow> </value> <next> <block type="mqtt_sendmessage" id="z^T!s)K:|5C:7`|2u/7;"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="H4c-Gu8/TUBbOto6n9EX"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="G.CH1GVcM1V~#i:##;(K"> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="wtMW#MTf6m#?Jff8XQ[z"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="gzhg:`BZBzb=`VDu3l/;"> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id="Lo!c(qeV3jmPPTf{dycj"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id="RQ)p$$fl(5v_bt|^/+kI"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="_/xgDI9k3%.TC{yk9u*s"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="qQSjyuJ.!d+:Ii%Nq.zW"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD2"> <block type="text" id="|ZKgP_?x5ek5q.8F|L6}"> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="|YzTGwaTCtJ5c#X$!,]Q"> <field name="DELAY">500</field> <field name="UNIT">ms</field> <next> <block type="mqtt_sendmessage" id="!@Ods2q{z-d2*I;1}*:Z"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="YJx!`5B`q]Mh~-;!WFz3"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="BSqE9|Vr`0bZ4d|bcMHH"> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="zqkiPz%y|jllvz*fHV9x"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="VhXlu_9t!r$A~:^x1R$$"> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id="XX4cs^JU~,Z:=#36Br+3"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id="ko^.`-NBn/~1gbfpqLWS"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="4M@L,ti^~#un.9HT2eX6"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="yioN*vgpa+Br^IyZ+1-q"> <field name="BOOL">FALSE</field> </block> </value> <value name="ADD2"> <block type="text" id="Da9t!u**.s@yN}Z3tVP="> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="L`L17:Rt$6Dit{$3)!yc"> <field name="DELAY">6</field> <field name="UNIT">sec</field> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_multi_or" id="CbIVj0dH?0:.n`46u#){"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="OR0"> <block type="logic_compare" id="^;Fs-Q[AwBXh4vnFg{(a"> <field name="OP">LTE</field> <value name="A"> <block type="math_arithmetic" id="l)DWs(8fxus7fFocdR|e"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id=":zFC/!1X#G/JDDexWU#T"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="TWb(_!6=lh|k98t:S2Ib"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id=")Kha5QNDCk`d^!bf+TOf"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="QY#:u)maxr;n^NytmO;E"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="X0,-aP1PmCt?ZLAaBOKS"> <field name="NUM">17</field> </block> </value> </block> </value> <value name="OR1"> <block type="logic_compare" id="LC+lLaWn]D-q[[Sz%8Hn"> <field name="OP">LTE</field> <value name="A"> <block type="math_arithmetic" id="w|S|}RI^S/Q${@!vU1Iv"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="R,81-M_Wy.i1r:T`-M@N"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="*^D`(z9-zGeO{|*Wvo_7"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id=":ku*v1Na~dz)4n;fjh9/"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="#7Ah+@87#HcL?7.NZo#6"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="mI+sZAJuVnPz/{8T}pOw"> <field name="NUM">17</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="uBx4TAIiLHf@^KzpiR-#"> <field name="COMMENT">Feine Ansteuerung</field> <next> <block type="debug" id="wqC!pb++[V_[V1WXWbw("> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="vac6zL.y`?dWmYa4j(x?"> <field name="TEXT">3</field> </shadow> </value> <next> <block type="controls_whileUntil" id=",l12n8g2d@N?G%tndp#%"> <field name="MODE">UNTIL</field> <value name="BOOL"> <block type="logic_multi_or" id="4qUHG.zN|}z2:eGYerza"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <value name="OR0"> <block type="logic_compare" id="y5UvK!c;wUx|Nn6[]ib]"> <field name="OP">LT</field> <value name="A"> <block type="math_arithmetic" id="Zu-#lybd?g?URW,aoc_,"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="7K]nOZXn%`FjY{k}nD(G"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="9]a/:=MYWahTIErxm,!="> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id="268dEAFG(Xf,iJV-B]l,"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="kbSz0D,6ok~t4e)xx0w["> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="L?hRfhwB?P6J@4v495^J"> <field name="NUM">4</field> </block> </value> </block> </value> <value name="OR1"> <block type="logic_compare" id="1N?4ho.}ilJ|Z689{WU-"> <field name="OP">LT</field> <value name="A"> <block type="math_arithmetic" id="eBMKR[3MB*yC~Gn7|(b|"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="CG1ii4I@LVO@?QY`j6kK"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="pF4D)/o/sKci=d0-C$[V"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="p:S^}SNZI,,!%@6txM15"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.SchwenkenVWinkel</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="{fK%.{h@[a[}xKep~2@_"> <field name="NUM">5</field> </shadow> <block type="get_value_var" id="~O^Z~%)ceVs[Z1AbReHB"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="LYBiyXsUc3*)0DvGm7)}"> <field name="oid">0_userdata.0.Faikin.Faikin_OG_WZ.Schreiben.SchwenkenVZielWinkel</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="ESZZg;)utsX`UA2kREm="> <field name="NUM">4</field> </block> </value> </block> </value> </block> </value> <statement name="DO"> <block type="debug" id="zzusbQu#L2r_P~;I]F|R"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="JJ?HZuh+tYN|fOUHbg}-"> <field name="TEXT">4</field> </shadow> </value> <next> <block type="mqtt_sendmessage" id=",nb3F6s99R+TEDcXksxy"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="a(`mHI$U.q1G/!62)6WJ"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id=".kiVZ#.9d1}}n{iuglV8"> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="Mo%[)g}`LY_!DSnTQNc$"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="D`,/)IOY9jnt^tWh2jK("> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id="@!tZ3-(9_S${/SU!Q!bC"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id="Pe#{R/(!1H,I!=n7G-j]"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="ZXu?IuMX]=VH:ZWnqy+g"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="++:`BF_lVm${vJ(^3RM}"> <field name="BOOL">TRUE</field> </block> </value> <value name="ADD2"> <block type="text" id="mc.0/e(i`]P15U~EziN^"> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="Cc~${,kI~[E1e`6nZ0lY"> <field name="DELAY">500</field> <field name="UNIT">ms</field> <next> <block type="mqtt_sendmessage" id="pa*ve%HhoNIx/C0S=5Ma"> <field name="INSTANCE">.1</field> <field name="RETAIN">FALSE</field> <value name="TOPIC"> <shadow type="text" id="G8@Ul-ux[a(A:;[[VyZK"> <field name="TEXT"></field> </shadow> <block type="text_join" id="a+iA;z`#[o`Xi!CeICoV"> <mutation items="4"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="~R|BR9v@UlUY*CGp9n[("> <field name="TEXT">command/</field> </block> </value> <value name="ADD1"> <block type="text" id="bk0#Z`_t-tvy{nddYqs;"> <field name="TEXT">Faikin_OG_WZ</field> </block> </value> <value name="ADD2"> <block type="text" id="]|BOvHQjguETY/H]jnlk"> <field name="TEXT">/</field> </block> </value> <value name="ADD3"> <block type="text" id="T8Y_Z7`#[{qH-|c?a3/l"> <field name="TEXT">control</field> </block> </value> </block> </value> <value name="MESSAGE"> <shadow type="text" id="XGAOr.A%I7qT6!Yk)(3d"> <field name="TEXT"></field> </shadow> <block type="text_join" id=",FY]PdaEvM3#xQ_YKOv|"> <mutation items="3"></mutation> <comment pinned="false" h="80" w="160">QA1-5 </comment> <value name="ADD0"> <block type="text" id="R``V5.B.d#1^W!=V?9=|"> <field name="TEXT">{"swingv":</field> </block> </value> <value name="ADD1"> <block type="logic_boolean" id="cw1olOmbN2gG2bR]iG%n"> <field name="BOOL">FALSE</field> </block> </value> <value name="ADD2"> <block type="text" id="8ocD5gp09y{)_[fXT8A8"> <field name="TEXT">}</field> </block> </value> </block> </value> <next> <block type="timeouts_wait" id="uM|r;L!u6`|?~f^r=Phb"> <field name="DELAY">6</field> <field name="UNIT">sec</field> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@mika-0 Das Skript ist ja sehr spezifisch.
Bevor Du in die Details des Skriptes gehst, würde ich erstmal schauen, wie das Kommando für Auffahren und Zufahren des Motors ist und testen. (Ich sehe nur eine Art von MQTT Kommando)
Dabei die Zeit bestimmen, die der Motor für das komplette Auf- und Zufahren braucht, und beobachten, ob die Bewegung relativ gleichmäßig abläuft...
Kommt wirklich worst case erst nach 7 Sekunden eine Rückmeldung vom Poti?Die Übersichtlichkeit des Skriptes könnte ggfs von einer Funktion profitieren: FahreMotor mit Fahrzeit und Richtung als Parameter, oder aus Variablen.
-
@martinp es gibt nur eine Drehrichtung des Motors. Also nur true für Motor läuft und false für Motor steht.
Die Mechanik an der der Potentiometer hängt steuert also die Drehrichtung ob sich der Poti Wert erhöht oder verringert.
Damit es besser verständlich ist.. Es handelt sich um eine Klimaanlage. Die Klappe wo die Luft ausströmt hat den Potentiometer.Ja die Mqtt Befehle kommen spätestens erst nach 5 Sekunden. Plus Reserve dann die 7 Sekunden.
-
@mika-0 Wie steuerst Du denn dann, ob der Motor zufährt oder auffährt?
oder muss der Motor in die Endpositionen fahren, um die Drehrichtung umzukehren?
Mein Garagentor hat eine Impulssteuerung.
Tor Zu -> Tastenpuls -> Tor fährt auf
Tor Auf (Endlage) -> Tastenpuls -> Tor fährt zu
Tor fährt -> Tastenpuls -> Tor stoppt -> Tastenpuls -> Tor fährt in Gegenrichtung. -
@martinp sagte in Ansteuerung Motor in Position:
oder muss der Motor in die Endpositionen fahren, um die Drehrichtung umzukehren?
dreht dein Scheibenwischermotor um?
@mika-0 sagte in Ansteuerung Motor in Position:
Es handelt sich um eine Klimaanlage. Die Klappe wo die Luft ausströmt
funktioniert genau so.
-
@homoran sagte in Ansteuerung Motor in Position:
dreht dein Scheibenwischermotor um?
Ja - und der vom Garagentorantrieb.
-
@martinp sagte in Ansteuerung Motor in Position:
@homoran sagte in Ansteuerung Motor in Position:
dreht dein Scheibenwischermotor um?
Ja
Tatsächlich?
läuft da kein Exzenter?EDIT!
Der in deinem nicht gekennzeichneten Edit erwähnte Garagentorantrieb steht genau deshalb nicht zur Diskussion, da die Wegstrecke höher und die Technik daher anders ist. -
@homoran Haben Deine Rolladenmotoren auch eine Exzenterscheibe?
Da gibt es durchaus verschiedene Funktionsprinzipien
-
@martinp sagte in Ansteuerung Motor in Position:
Haben Deine Rolladenmotoren auch eine Exzenterscheibe?
Natürlich!
mit 3m Durchmesser -
@mika-0 Angesichts der mech. Richtungsumkehr und der Unsicherheit, in welcher Richtung es gerade geht, würde ich beim grundsätzlichen Aufbau des Skriptes bleiben.
Die Differenz in einer Variablen (z.B. "AbsDifferenz") speichern, falls der Wert der Variable negativ ist, Vorzeichen umkehren (Betragsbildung scheint es als Blockly nicht zu geben) ...
Abfragen im Skript dann mit dieser Variablen
Z.B.
EDIT: Als "Kür" könnte man noch eine Variable "AbsDifferenzLast" einführen. Mit der könnte man feststellen, ob die aktuelle Drehrichtung des Motors vom Zielpunkt wegführt. Wenn AbsDifferenzLast kleiner ist als AbsDifferenz, fährt der Motor nicht in Richtung auf den Zielpunkt und man kann sich dann noch den Fahrweg über den Umkehrpunkt ausrechnen, mit einer entsprechend höheren Fahrtzeit.
Schöne Kniffelaufgabe, wenn über die Feiertage die Sudokus ausgegangen sind
-
@martinp danke ich probiere und gebe Bescheid
-
@martinp geschafft. Einfach 2 Abfragen gemacht. Ist halt alles doppelt, aber somit bin ich immer im positiven Rechenwert.