Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Problem mit SysProcessExecuteCommand und SysProcess.library

  1. #1
    Registriert seit
    06.11.2015
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich möchte gerne LED-strips via Infrarot mit meinem Raspberry PI steuern.
    Mit Putty und z.B. dem Befehl "irsend SEND_ONCE ledband_aqua KEY_RED" funktioniert alles ohne Probleme. Nun möchte ich aber mit Codesys eine Visualisierung erzeugen, mit der ich die Befehle, die ich sonst in Putty benutzen würde, ausführen kann. Im Internet bin ich auf die Funktion SysProcessExecuteCommand gestoßen, mit der dass wohl einfach zu realisieren sein soll. Jedoch bin ich nicht in der Lage die Bibliothek SysProcess.library zu finden.

    Der Eintrag bei SysProcess in der CODESYSControl.cfg sieht bei mir so aus:
    Code:
    [SysProcess]
    Command.0=shutdown
    Command.1=irsend SEND_ONCE ledband_aqua KEY_RED
    In Codesys habe ich es so probiert:
    Code:
    SysProcessExecuteCommand('irsend SEND_ONCE ledband_aqua KEY_RED')
    Ich erhalte dann die Fehlermeldung
    Code:
    Bezeichner 'SysProcessExecuteCommand' nicht definiert
    Hat jemand mit der Funktion schon gearbeit und kann mir sagen wo ich die Bibliothek finde bzw. was ich sost noch falsche mache?

    Danke schonmal im Voraus
    Zitieren Zitieren Problem mit SysProcessExecuteCommand und SysProcess.library  

  2. #2
    Registriert seit
    24.07.2013
    Beiträge
    420
    Danke
    1
    Erhielt 132 Danke für 111 Beiträge

    Standard

    Hi,
    ich hatte hier mal ein Beispiel gepostet:
    http://forum.codesys.com/viewtopic.p...p=12699#p12699
    hier wird 'SysProcessExecuteCommand2' statt 'SysProcessExecuteCommand' aufgerufen der Unterschied ist lediglich das man die Ausgabe aus der Konsole in die IEC Welt als Rückgabe reingereicht bekommt

    Denke das Problem ist hier, du solltest nur ein Command angeben also nicht irsend SEND_ONCE ledband_aqua KEY_RED sondern nur irsend,
    den Rrest übergibst du in IEC 'SysProcessExecuteCommand'.
    In der SysProcess Sektion gibt frei was erlaubt ist aus IEC auszurufen.

    [SysProcess]
    Command.0=shutdown
    Command.1=irsend SEND_ONCE ledband_aqua KEY_RED (SEND_ONCE ledband_aqua KEY_RED entfernen aus der Zeile)


    Grüße
    Geändert von HausSPSler (24.11.2015 um 06:24 Uhr)
    Edwin Schwellinger
    3S-Smart Software Solutions GmbH

  3. #3
    Jimbo200 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.11.2015
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Leider kann ich mir das Beispiel nicht anschauen, da ich noch auf die Aktivierung meines Accounts warten muss.
    Aber ich hab diesen Beitrag von dir gefunden Raspberry Pi - Datei starten

    Aus dem Programm Raspi_PlayMP3_triggered_byPLC hab ich dann die Zeilen
    Code:
    xPlaySound: BOOL;
        command1 : STRING := 'mpg321 /home/pi/03_-_haus_ma_see_-_stadtaffe.mp3';
        stdout : STRING(1000) := '';    
        Result : RTS_IEC_RESULT
    
    
    IF xPlaySound THEN
        SysProcess.SysProcessExecuteCommand2(pszCommand:=command1, pszStdOut:=stdout, udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result));
        xPlaySound := FALSE;
    END_IF
    kopiert und für mein Programm so bearbeitet
    Code:
    rot_s: BOOL;
    command1 : STRING := 'irsend SEND_ONCE ledband_aqua KEY_RED';
    stdout : STRING(1000) := '';      
    Result : RTS_IEC_RESULT;
    
    IF rot_s = TRUE THEN
    
    SysProcess.SysProcessExecuteCommand2(pszCommand:=command1, pszStdOut:=stdout, udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result));
    
    END_IF
    Leider folgt aber keine Aktion wenn rot_s auf true gesetzt wird.
    codesys.jpg

  4. #4
    Registriert seit
    24.07.2013
    Beiträge
    420
    Danke
    1
    Erhielt 132 Danke für 111 Beiträge

    Standard

    Hallo,
    Rückgabewert 25 bedeutet das es ein "nicht erlaubtes Kommando ist" das bedeute du hast dein Kommando nicht in /etc/CODESYSControl.cfg freigeschaltet.
    Kannst du schauen ob wirklich nur eine Sektion von SysProcess in diesem Konfig file vorhanden ist und es müsste:


    [SysProcess]
    Command.0=shutdown
    Command.1=irsend

    sein.

    Grüße
    Edwin Schwellinger
    3S-Smart Software Solutions GmbH

  5. #5
    Registriert seit
    03.12.2013
    Ort
    Bremen
    Beiträge
    165
    Danke
    13
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Hey ich melde mich hier weil ich denke das meine Fragen besser hierher passen.

    Ich versuche auch einen Linux aufruf auszuführen und die Werte aus der Konsole in die IEC-Welt zu bekommen.

    bei mir handelt es sich um das auswerten einer Wägezelle mit dem HX711.


    Mit der Hilfe dieser Seite
    http://hivetool.org/w/index.php?titl...tool_on_the_Pi
    den HX711 ans Laufen bekommen.

    jetzt muss ich das Ganze nur noch in die IEC-Welt bekommen. nur bekomme ich das leider noch nicht ganz hin. Gibt es zu der FUNCTION SysProcessExecuteCommand2
    noch eine Beschreibung irgendwo?

    Folgendes gebe ich unter Linux ein:

    sudo hx711

    Dann wird das Programm ausgeführt das liefert mir wie auf folgendem Bild zu sehen dann werte zurück.

    Habe das ganze bei CODESYS wie folgt umgesetzt. Bild_CODESYS.jpg

    meine CODESYSControl.cfg sieht wie folgt aus:

    [SysProcess]
    Command.0=shutdown
    Command.1=mpg321
    Command.2=hx711


    vll könnt Ihr mir ja noch einen weiteren Tipp geben =)



    MfG Hendrik

  6. #6
    Registriert seit
    24.07.2013
    Beiträge
    420
    Danke
    1
    Erhielt 132 Danke für 111 Beiträge

    Standard

    Hi Hendrik,
    was kommt beim Aufruf in CODESYS zurück?
    denke es liegt daran das hx711 nicht unter /usr/bin liegt... kann das sein?
    Vermute das binary wird nicht gefunden.
    Edwin Schwellinger
    3S-Smart Software Solutions GmbH

  7. Folgender Benutzer sagt Danke zu HausSPSler für den nützlichen Beitrag:

    Hendrik (05.01.2016)

  8. #7
    Registriert seit
    03.12.2013
    Ort
    Bremen
    Beiträge
    165
    Danke
    13
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Hey Danke

    genau das war der Fehler!

  9. #8
    Registriert seit
    14.04.2014
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Herr Schwellinger
    Ich möchte mich hier auch noch kurz einlinken, obwohl der letzte Thread schon eine Weile her ist.

    Kann ich so auch eine Python Datei ausführen?
    Code:
    PROGRAM mystrom_py
    VAR
        xPlaySound: BOOL;
        command1 : STRING := 'mystrom0 /home/scripte/my_strom_off.py';
        stdout : STRING(1000) := '';    
        Result : RTS_IEC_RESULT;
        xExecuteSysP: BOOL;
        xshowCPUInfo: BOOL;
    END_VAR
    
    IF xPlaySound THEN
        SysProcess.SysProcessExecuteCommand2(pszCommand:=command1, pszStdOut:=stdout, udiStdOutLen:= SIZEOF(stdout),pResult := ADR(Result));
        xPlaySound := FALSE;
    END_IF
    Bei der Ausführung passiert jedoch nichts. Die CodesysControl.cfg wurde angepasst und die Python Datei ist getestet.
    Code:
    [SysProcess]
    Command.0=shutdown
    Command.1=mystrom0
    fg Sascha Sven Verna

  10. #9
    Registriert seit
    24.07.2013
    Beiträge
    420
    Danke
    1
    Erhielt 132 Danke für 111 Beiträge

    Standard

    Hallo,
    bitte das python script entweder ins /root Verzeichnis oder aber nach /usr/bin dann wird es gehen...!
    Grüße
    Edwin Schwellinger
    3S-Smart Software Solutions GmbH

  11. #10
    Registriert seit
    14.04.2014
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen

    Leider ohne Erfolg. Über das Terminal ist es kein Problem und das Script startet ohne Probleme.
    Code:
    pi@raspberrypi:~ $ sudo python /usr/bin/my_strom_off.py
    False
    bereits AUS
    pi@raspberrypi:~ $ sudo python /root/my_strom_off.py
    False
    bereits AUS
    Unter Codesys jedoch nicht. Ich habe beide Verzeichnisse /root und /usr/bin ausprobiert. Auch mit Uterschiedlichem Befehelen.
    Code:
    command1 : STRING := 'mystrom0 sudo python /root/my_strom_off.py';
    oder
    command1 : STRING := 'mystrom0 /root/my_strom_off.py';
    Grüsse Sascha

Ähnliche Themen

  1. LibnodaveConnection Library mit MC7 Umwandlung
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 25.08.2010, 23:29
  2. LibNodave mit Routing und Connection Library...
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 0
    Letzter Beitrag: 21.06.2010, 11:49
  3. LibNoDave und Connection Library mit Routing...
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 27.05.2010, 08:06
  4. Problem mit Library
    Von Diesla im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 24.07.2009, 20:09
  5. Trysim und Standard Library Bausteine
    Von RMA im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 28.04.2008, 17:18

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •