Motorsteuerung per Webapp / PHP - zu langsam?!

  • Hallo Leute,

    ich programmiere gerade eine Webapp zur Steuerung eines Schrittmotors per HTML / PHP.
    das gleiche Programm hatte ich schon via Python am laufen und da funktionierte es einwandfrei.
    Nun wollte ich das ganze via PHP auf eine Webapp übersetzen. Jetzt habe ich aber folgendes Problem:

    Die Steuerung ist einfach nicht schnell (und stabil) genug!

    Nach jeder GPIO Ansteuerung für den Schrittmotor habe ich per "usleep" Befehl hätte ich gerne eine Verzögerung von ca 3000 Mikrosekunden bevor die nächste GPIO
    Steuerbefehl rausgeht. Ziel ist es, dass der Schrittmotor gleichmäßig bei einer angenehmen Frequenz dreht. Aktuell habe ich allerdings nur eine LED an einem GPIO Ausgang um das ganze Testweise zu überprüfen bevor ich den Schrittmotor verlöte, macht letztendlich ja keinen Unterschied.
    Fakt ist, die Test-LED blinkt total unrhythmisch und ich bekomme maximal eine Frequenz von gefühlten 20Hz! (selbst wenn ich "usleep" auf "0" stelle)
    Das ist für den Schrittmotor leider absolut ungeeignet. Wie bereits erwähnt - wenn ich das ganze offline per Python Script ausführe funktioniert die Steuerung einwandfrei! Hohe Freuqenz, stabiler Rhytmus - so wie ich es mir wünsche.

    Meine Frage deswegen. kann es sein das PHP via Webapp für solch ein Ansteuerung einfach ungeeignet ist? Ist die Verzögerung von Webapp zu den GPIOs einfach zu groß?
    und noch wichtiger... wie Löse ich das ganze? Dass ich eine schnellere und stabilere Schaltfrequenz via Webapp erhalte?

  • Python Script ausführe funktioniert die Steuerung einwandfrei! Hohe Freuqenz, stabiler Rhytmus - so wie ich es mir wünsche.

    Mit dem Python-Skript steuerst Du den Schrittmotor direkt über die GPIO-Pins. Über Web liegt einiges dazwischen.


    (Vorschlag) Wenn Du über HTML/PHP etc. den Schrittmotor steuern willst, solltest Du eine andere Schnittstelle (zwischen Bediener-Oberfläche und Motorsteuerung) definieren (z.B. 250 Schritte nach links).

    Die Motorsteuerung (z.B. auch ein Python-Skript) könnte dann z.B. den Motor langsam hochlaufen lassen, damit (wegen Masseträgheit) keine Schritte verloren gehen. Um dem Anschlag kümmert sich die Motorsteuerung.

    Schönen Gruß, kle

  • Sowas hatte ich schon vermutet. Dachte das wär alles ein wenig schneller.


    also wenn ich dich richtig verstanden habe, ist es am besten über die Buttons einen Python Skript Aufruf zu starten, in dem die eigentlichte Steuerung versteckt ist oder?


    via exec ('sudo python /var/www/*/Steuerung.py') - nehme ich mal an


    gut, dann muss noch rausfinden wie ich das zum laufen bekomme mit dem Skript Aufruf ;)
    (hatte da Anfangs ein wenig Probleme)

  • nagut, mein Schrittmotor läuft zwar etwas langsam, aber für meine Anwendung ist es ausreichend.
    Jetzt hab ich noch eine Frage, will dafür aber nicht extra nen neuen Thread aufmachen.

    Und zwar möchte ich gerne via Apache Web App per Button ne neue Datei in einem Verzeichnis auf meinen Pie erstellen.
    Es scheitert jedoch an den Zugriffsrechten, obwohl ich hierfür eigentlich keine Sudo Rechte benötige (hab ich in der Shell bereits getestet).


    möchte gerne eine einfache Textdatei per fopen Befehl erstellen:

    $datei = fopen("/var/www/..../daten.txt","w");

    Bekomme aber die Fehlermeldung


    Warning: fopen(/var/www/.../Test.txt): failed to open stream: Permission denied in /var/www/..../Testdatei.php on line ....

    Brauch ich da etwa noch extra Zugriffsrechte?? dachte das wäre hierfür nicht nötig.. vielleicht könnt ihr mir kurz helfen =)


    Vielen Dank

  • also muss ich wenn ich das richtig verstanden habe, dem user www-data Schreibrechte für den besagten Ordner geben, in dem die Textdatei steckt oder? Dachte www-data hat bereits die besagten Rechte..

    kannst du mir bitte den Shell Befehl hierfür durchgeben? =)) :daumendreh2:
    Danke

  • danke für deine Hilfe!




    das spuckt der Befehl aus. Wenn ich das richtig verstehe gehört das Verzeichnis dem www-data User, die Datei jedoch dem User Pi - richtig?
    wenn ich die Datei ebenfalls dem User www-data zuordne sollte es funktionieren oder?

  • Bin schon ne weile raus aus dem Thema und müsste nachher auch erst nochmal nachlesen + testen, aber mir war so als müsste die PHP-Datei, die die txt-Datei erstellen soll, ausführbar sein (755er Rechte).

    Die Dateien den User www-data zuzuordnen ist imho ohnehin keine schlechte Idee.



    //Edit


    Ich habe mal ein bissel gespielt. Hier sehen die Rechte so aus:

    Code
    pi@raspberrypi:/var/www/html/testordner $ ls -lisa
    insgesamt 16
    259266 4 drwxr-xr-x 2 www-data www-data 4096 Feb 17 18:04 .
    258894 4 drwxr-xr-x 4 root root 4096 Feb 17 18:02 ..
    260945 4 -rw-r--r-- 1 www-data www-data 10 Feb 17 18:04 daten.txt
    260948 4 -rw-r--r-- 1 www-data www-data 114 Feb 17 18:03 test.php


    Zum Test hatte ich dieses kleine Skript, das die Datei daten.txt im selben Verzeichnis erstellt, dort Hallo Welt reinschreibt und die Anzahl der geschriebenen Zeichen der Datei ausgibt. (Quelle)

    PHP: test.php
    <?php
    $datei = fopen("daten.txt","w");
    echo fwrite($datei, "Hallo Welt",100);
    fclose($datei);
    ?>


    Folgende Links könnten für Dich interessant sein:


    https://wiki.ubuntuusers.de/chown/ (Eigentümer ändern)

    https://wiki.ubuntuusers.de/chmod/ (Zugriffsrechte anpassen)

  • Super!! vielen dank dir!
    ich probier das nacher gleich mal aus, war jetzt erstmal ne Woche im Urlaub und in der Zwischnenzeit nicht online ;)

    ich geb dir auf jedenfall ne Rückmeldung!!

    großes Dankeschön!