Problem mit SysProcessExecuteCommand und SysProcess.library

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,


ich versuche momentan für meine Bachelorarbeit ebenfalls die Einbindung von einem Python Skript in Codesys. Ich möchte die Daten des Sensors BME280 (Anleitung Python: https://xdevs.com/guide/thp_rpi/) in Codesys aufrufen und dann weiterverarbeiten. Leider bekomme ich nur den Wert 0 zurückgeliefert als Resualt und diResult, was laut der Fehlertabelle OK bedeutet. Es werden außerdem keine Fehler oder Warnungen angezeigt.
Ich hab die CodesysControl.cfg angepasst und das Skript in /usr/bin abgelegt (kann ausgeführt werden in der putty Konsole).


Was mir bis jetzt noch unklar ist, ist die __init__.py Datei. Ich hab sie angelegt, jedoch verstehe ich ihre Funktion nicht ganz. Was muss in die Datei ? Momentan liegt sie bei mir ebenfalls bei /usr/bin/ . (Ich hab zwar in meinem Python Skript ebenfalls eine Programmabschnitt gesehen mit __init__.py, jedoch leider kein Zusammenhang herstellen können.)


Im Anhang befinden sich Bilder zu folgenden Punkten:
- sudo nano CODESYSControl.cfg
- eingeloggtes Codesys Projekt
- python Skript Aufruf in putty Konsole

Vielen Dank im Voraus für Eure Hilfe/Ratschläge.

Viele Grüße

Nico
CODESYSControl_cfg.PNGcodesys_pythonII.PNGEingeloggt Codesys.jpgputtyabfrage_BME280.PNG
 
Moin Nico,

geh mal in der Verzeichniss wo die dein Python Skript gespreichert hast. Probiere dies mal ohne sudo python auszuführen.

wenn das nicht geht musst du dein Python skript bearbeiten und mit chmod +x die Datei zugänglich machen.

__init__.py sorgt dafür das du die installierten python skripte die irgendwo auf deinem Pi liegen in anderen Python skripten verwendet werden können.

Vll hilft dir das schon.

MfG Hendrik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achtung bin gerade wieder mit diesem Weg auf dem RPi unterwegs und der Pfad für die CodesysControl.cfg hat sich geändert.

sudo nano /etc/CODESYSControl_User.cfg

Grüße Hendrik
 
Hallo Hendrik,

ich bekomme bei mir das Script von Codesys aus nicht ans laufen.

Das Inhalt des Test-Scripts mit Namen Bild lautet
#!/bin/sh
echo test > /home/pi/444.txt

Das Script ist mit chmod +x+u ausführbar gemacht und liegt unter /usr/bin und auch unter /usr/local/bin

In der CODESYSControl_User.cfg und in der CODESYSControl.cfg ist eingetragen
[SysProcess]
Command.0=shutdown
Command.1=Bild
Command.2=Echo

Den Raspi habe ich den root Zugriff per SSH mit
sudo nano /etc/ssh/sshd_config
PermitRootLogin without-password suchen
und
ändern in: PermitRootLogin yes
beigebracht

Unter Codesys update Raspberry ist der Login als root mit Paßwort eingestellt


Leider bekomme ich sowohl bei
SysProcessExecuteCommand('Bild', ADR(Result));
asl auch bei
command2:='Bild';
SysProcess.SysProcessExecuteCommand2(pszCommand:=command2, pszStdOut:=stdout, udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result));
eine 25 (No access rights for this operation) als Rückmeldung.

Ein echo Befehl von Codesys aus ausgerufen funktioniert.

In der Konsole angemeldet als Pi kann ich das Bild-Script problemlos Befehl aufrufen.
Unter root auch.

Nur Codesys zickt rum.

Zur Info:
Ich habe die Lösung gefunden. Der CodesysControler mußte einmal gestoppt und wieder gestartet werden. Danach klappte der Scriptaufruf auch mit Codesys.
sudo service codesyscontrol stop
sudo service codesyscontrol start

Das Script wird bei mir übrigens von Codesys im Ordner /usr/bin/ gesucht.


Gruß,
Xav
 
Zuletzt bearbeitet:
Hallo Xav,
also bei mir geht das auf anhieb so:
folgendes beachten, prüfen:
Ist die Sektion:

[SysProcess]
Command.0=shutdown
Command.1=Bild
Command.2=Echo

wirklich in
sudo nano /etc/CODESYSControl_User.cfg
das war früher mal in CODESYSControl.cfg ... nun ist das Konfig file gesplittet damit bei einem Update alles User Setting bestehen bleiben

Den Raspi habe ich den root Zugriff per SSH mit
sudo nano /etc/ssh/sshd_config
PermitRootLogin without-password suchen
und
ändern in: PermitRootLogin yes
beigebracht
das kannst du dir alles sparen...

Grüße
 

Anhänge

  • SysExceProcess.jpg
    SysExceProcess.jpg
    377,1 KB · Aufrufe: 74
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Edwin,

Du hattest recht. Es funktioniert alles auch ohne Einrichten des SSH Zugriffs per root.
Im Moment klappt alles wunderbar. Auch wenn ich Raspistill lieber direkt aus Codesys steuern würde statt per SysCommand.
Aber vielleicht gibt es ja demnächst ein Update, das den Bug zur Übergabe von Hochkommata in Codesys mit Raspberry_Pi_Camera.Still beseitigt.
Vielen Dank für Deinen Hinweis.
Gruß,
Xav
 
Moin,
ich habe leider auch noch Probleme mit dem Ausführen einer Python-Datei über Codesys.
In der CODESYSControl_User.cfg sind folgende Einträge:
Code:
[SysProcess]
Command.0 = shutdown
Command = AllowAll

Der Rückgabewert des SysProcessExecuteCommand2 Befehls ist 0. Daher gehe ich davon aus, dass die Konfigurierung erfolgreich ist. Die auszuführende Datei habe ich in folgende Ordner gelegt:

/home/pi
/usr/bin
/usr/local/bin

Über putty kann ich die Datei über "simpletest.py" ausführen (siehe Anhang). Das Resultat ist das Auslesen eines DHT11 Sensors. ICh gehe davon aus, dass der ausgeführte String als Referenz an stdout übergeben wird. Die Werte möchte ich in Codesys weiter nutzen.

Leider wird jedoch kein Befehl in der Raspberry Konsole ausgegeben. Gibt es irgendetwas, was ich übersehen habe?
Im Anhang befindet sich noch der FB Auszug aus Codesys.

Gruß

Entenfreund
 

Anhänge

  • putty.jpg
    putty.jpg
    8,3 KB · Aufrufe: 20
  • FB.jpg
    FB.jpg
    76,7 KB · Aufrufe: 38
Hallo,

nur das in /etc/CODESYSControl_User.cfg
[SysProcess]
Command = AllowAll

aus /etc/CODESYSControl.cfg diese [SysProcess]
section entfernen
Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meine CODESYSControl.cfg hat keinen [SysProcess] Eintrag mehr. Der Versuch, den RaspberryPi über den Befehl "reboot" neu zu starten, hat auch nicht funktioniert. Hat jemand noch einen Tipp ?
 
Hi,
häng mal nochmal die Screenshot an von, wenn du online bist und die Funktion aufrufst - Rückgabe wert.
Das einzige was du noch versuchen kannst in
CODESYSControl_User.cfg

[SysMem]
Linux.Memlock=0
eintragen...

Grüße
 
Moin,
der Eintrag war (leider) schon so vorhanden. Ich habe jetzt nochmal ein komplett neues Projekt erstellt. Die erste Ausgabe von "simpletest.py" (im Anhang zu sehen) ist von mir manuell eingetippt worden.
SysProcess gibt eine 0 zurück, aber Result wird eine 25 zugewiesen. Hilft mir das weiter in der Fehlersuche? Ich werde mich nochmal auf die Suche begeben.

Gruß

Entenfreund
 

Anhänge

  • CODESYSControl.cfg.JPG
    CODESYSControl.cfg.JPG
    66,9 KB · Aufrufe: 46
  • CODESYSControl_User.cfg.JPG
    CODESYSControl_User.cfg.JPG
    29,2 KB · Aufrufe: 41
  • projekt.JPG
    projekt.JPG
    97,4 KB · Aufrufe: 51
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Entenfreund,
da kommen wir doch der Sache näher,
25 als Rückgabewert bedeutet:
#define ERR_NO_ACCESS_RIGHTS 0x0019 /*
No access rights for this operation */
Bitte das hier ohne die Leerzeichen... denke dann sollte es gehen.
[SysProcess]
Command=AllowAll

Grüße
 
Zuletzt bearbeitet:
Es klappt. Das war eine schwere Geburt. Der Command=AllowAll war bereits ohne Leerzeichen abgespeichert. Als ich mir einmal den Ordner etwas genauer unter die Lupe genommen habe, ist mir ausgefallen, dass da mehrere CODESYSControl Dateien waren, die wahrscheinlich im Eifer des Gefechts dort abgespeichert worden sind. Kurz aus dem Ordner rausgezogen und ich habe meinen String in stdout.

Danke für die Hilfe!:ROFLMAO:
 
Zurück
Oben