Velleman I/O steuern?

Gemeint war :
Variable definieren und im instanzbild verknupfen mit dem ‚channel‘

Du hast es richtig gemacht mit deine channel1, 2 ,3

Du kannst ausprobieren weil den velleman-board diese test-knöpfe hat. Drucken und in variable-fenster gucken. Update time soll sich änderen bei eindrucken oder loslassen. beides geht nicht. Deshalb meine vorgeschlagene ‚work-around‘ 2 kanäle parallel zu schalten fuer zeitkritische anwendungen.

Hallo GGGss

Die Update-Time ändert sich, dass hatte ich weiter oben schon geschrieben, aber der Zustand der Eingänge bleibt unverändert. Die Variable ändert sich nicht von true nach false oder umgekehrt, und wenn sich der Zustand nicht ändert, wie soll ich die Variable zum triggern nehmen.

Gruss
computerpap

Ein trigger um dein script an zu stossen is doch genugend - ob es jetzt true ider false ist - der wird geupdatet?
Beim script durchlauf brauchst du eben noch die eingänge ab zu fragen und DA bekommst du deine true/false werte womit du den ablauf deines scriptes steueren kannst.

Die variablen im instanz-fenster machen nur den ‚shoot !‘.
Den wert die die eingänge haben solltest du uber


VELLEUSB_ReadDigitalChannel(InstanceID: Integer; Channel[1...5]: Integer): Boolean 

abfragen.

Hallo GGGss

Ich glaube ich gebe auf. Ich lasse mein Script mit der Variablen „channel1“ unter ScriptEvents/OnUpdate triggern, aber nichts passiert, wenn ich den Taster von Eingang 1 drücke. Schalte ich in der Config von Velleman-Board den Eingang von Low auf High, wird das Script bei drücken auf den Taster ausgeführt, aber der Ausgang geht nicht mehr aus.
Jetzt habe ich mir folgendes Script zusammengeschrieben, um zu testen, ob ich eine Variable setzen kann:
<?
/*


IP-SYMCON Event Scripting


File : test1.ips.php
Trigger :
Interval :
*/
$status = (VELLEUSB_ReadDigitalChannel(25302, 1));
if ($status == true)
{
SetValueBoolean(„status1“, true);
}
if ($status == false)
{
SetValueBoolean(„status1“, false);
}
?>

Auch diese Script wird durch die Variable „channel1“ in OnUpdate getriggert.
Wenn ich die Variable „status1“ beobachte, ändert sich diese auch nicht.
Was mach ich bloß falsch mit diesen Velleman-Board, ich begreife es langsam nicht mehr und verlier nach und nach meine Nerven.

Gruss
computerpap

Momengtchen mal …

du zetst die gleiche variablen WOMIT dU das script triggerts !!
das heisst also das du das script 2x triggeren könntest …

aha
Dein Velleman geht von true auf false -> triggert dein script
In dein script wird der trigger (=velleman trigger) getriggert
-> dadurch wird dein script NOCHMALS getriggert und dabei bleibt dein ausgang die gleiche und kann man nicht erkennen das das script in realistät 2x gelaufen hat.

mein vorschlag: die triggert-vars und status-vars unbedingt aus ein ander holen!! Im instanz fenster var=‚channel1-trigger‘; im script var=‚status1-status‘ setten / resetten.

Ich habe so den eindruck das das alles durch einander lauft und deshalb bist du unheimlich verzweifelt;;.

:cool: Gefunden :smiley:

Hallo

Ich triggere mit der Variable „channel1“ die den Digitaleingang 1 am Velleman-Board zuordnet ist.
Gesetzt und rückgesetzt wird doch aber die Variable „status1“.

Gruss
computerpap

Ich habe gerade eben noch etwas herausgefunden, und zwar , wenn ich das Script per Hand mit „Execute“ starte und dabei den Taster am Eingang 1 gedrückt halte, dann ändert sich der Zustand der Variable „status1“ von false nach true. Lasse ich den Taster los und führe das Script erneut von Hand aus, ändert sich der Zustand von „status1“ von true nach false. Genauso sollte es sein. Allerdings klappt das ganze nicht, wenn ich das Script über die Variable „channel1“ in OnUpdate triggern will. Ich habe nicht richtig verstanden, was GGGss meint, mit Variablen auseinanderhalten, dass mache ich doch, oder nicht?

Gruss
computerpap

  1. bist du sicher das dein script getriggert wird durch die variable die im instanz fenster verknupft ist mit channel 1 ?

  2. Wie lang bleibt dein signal ‚0‘ auf dem eingang vom velleman??
    Du darfst nicht erwarten das ein puls von 1ms richtige resultaten gibt.

  3. wen du dem tester knopf druckst lauft das script? Oder ?

  4. baue mal etwas logging ein :
    schreibe einfach den datum in ein .txt-file.
    Damit kannst du hinterher checken wan und wo dein script lauft.
    -> bei „ich weis nicht wie ich das machen soll“ antworte auf diesem thread.
    Werde dann dein script etwas anders gestallten.

Good luck, - und sorry das das alles nicht so deutlich geschrieben ist. In bin Belgiër und spreche Niederländisch.

Fredje

Hallo GGGss

zu 1.
Nach betätigen des Tasters stehen im Debugger folgende Zeilen:

Variable:channel1(Boolean),Value:True
Executing:test1.ips.php~Sender:Variable:channel1,Trigger:OnUpdate
Variable:status1(Boolean),Value:True
ExecutionResult:||||
Executed,Ret:Succesful:True

Damit nehme ich als Anfänger an, dass das Script durchgelaufen ist und mit channel1 getriggert wurde.

zu 2.
Es ist egal wie lange das Signal ansteht, ob 1s oder 5s, es ist immer das selbe Problem.

zu 3.
siehe Punkt 1

zu 4.
Das ist so ein Problem mit einem PHP-Anfänger, denn ich weiß nicht so recht was ich da an PHP-Code schreiben muß um da etwas mit zu loggen.

Du brauchst dich für dein deutsch keinesfalls zu entschuldigen, das ist besser wie manch Deutscher schreiben kann.
Mit „nicht verstehen“ meinte ich auch nicht dein deutsch, sondern wie ich deinen Vorschlag umsetzen soll.

MfG
computerpap