Problem mit _

mauskopf
2014-12-27
2014-12-30
  • mauskopf - 2014-12-27

    Hallo Experten!
    Wollte von meinem Pi aus ein Linux Skript starten.
    Ich habe das Skript unter /usr/bin/ angelegt und ausführbar gemacht!(in Putty funktioniert das skript)
    In der CODESYSControl.cfg habe ich folgende Einträge gemacht
    [SysProcess]
    Command=AllowAll
    Command.0=cs_mail

    Der Aufruf in Codesys sieht so aus
    IF (xSendMail) THEN
    _('cs_mail' , ADR(Result) );
    xSendMail:=FALSE;
    END_IF

    Result ist nach dem Ausführen auf 25
    Was mache ich falsch?

    Vielen Dank Peter

     
  • eschwellinger

    eschwellinger - 2014-12-27

    Hallo,

    sieht erst mal nicht so verkehrt aus,
    in SysProcess brauchst du entweder AllowAll oder aber den Namen deines skriptes (beides ist nicht notwendig)
    kannst du mal
    cat /tmp/codesyscontrol.log
    aufrufen...

    bei mir sieht das so aus wenn amn Funksteckdosen einschaltet:

    1419697476: Cmp=IECVisualization, Class=1, Error=0, Info=0, pszInfo= Visu_PRG: Successfully Removed Client with IEC-ID: 0
    1419700604: Cmp=CmpWebServer, Class=1, Error=0, Info=0
    sending systemCode[10000] unitCode[4] command[1]
    sending systemCode[10000] unitCode[4] command[1]
    sending systemCode[10000] unitCode[4] command[0]

    Grüße
    Edwin

     

    Related

    Talk.ru: 1

  • mauskopf - 2014-12-27

    Hallo Edwin,
    Danke für deine Hilfe!
    mit dem obigen Befehl bekomme ich folgende Ausgabe!

    Wie könnte ich vorgehen um den Fehler zu finden?

    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRetain</cmp> init, <id>0x00000017</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRouter</cmp> init, <id>0x00000018</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpSchedule</cmp> init, <id>0x00000019</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpSrv</cmp> init, <id>0x0000001c</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBlkDrvTcp</cmp> init, <id>0x00000030</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBlkDrvUdp</cmp> init, <id>0x00000007</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBinTagUtil</cmp> init, <id>0x00000004</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelMgr</cmp> init, <id>0x00000009</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelServer</cmp> init, <id>0x0000000a</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceServer</cmp> init, <id>0x00000016</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCommunicationLib</cmp> init, <id>0x0000000c</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCoreDump</cmp> init, <id>0x00000083</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIecVarAccess</cmp> init, <id>0x00000060</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpPlcShell</cmp> init, <id>0x00000128</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpTraceMgr</cmp> init, <id>0x00000070</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceClient</cmp> init, <id>0x00000015</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelClient</cmp> init, <id>0x00000008</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAAsyncMan</cmp> init, <id>0x00004007</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAABehaviourModel</cmp> init, <id>0x00004015</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAACallback</cmp> init, <id>0x00004001</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAADTUtil</cmp> init, <id>0x00004013</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAFile</cmp> init, <id>0x00004008</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAMemBlockMan</cmp> init, <id>0x00004003</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAANetBaseServices</cmp> init, <id>0x00004018</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAARealTimeClock</cmp> init, <id>0x00004014</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAASegBufferMan</cmp> init, <id>0x00004019</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAASerialCom</cmp> init, <id>0x00004012</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATick</cmp> init, <id>0x00004009</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATickUtil</cmp> init, <id>0x00004010</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATypes</cmp> init, <id>0x00004006</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelClientIec</cmp> init, <id>0x0000005d</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceClientIec</cmp> init, <id>0x0000011d</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBinTagUtilIec</cmp> init, <id>0x0000005c</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpUserDB</cmp> init, <id>0x00000064</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpUserMgr</cmp> init, <id>0x00000061</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCryptMD5</cmp> init, <id>0x0000006a</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCharDevice</cmp> init, <id>0x00000300</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRasPi</cmp> init, <id>0x00002345</id> <ver>3.5.4.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBitmapPool</cmp> init, <id>0x00000050</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpDynamicText</cmp> init, <id>0x00000051</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpVisuHandler</cmp> init, <id>0x00000054</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpVisuServer</cmp> init, <id>0x00000057</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpWebServer</cmp> init, <id>0x00000071</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpWebServerHandlerV3</cmp> init, <id>0x00000072</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAStorage</cmp> init, <id>0x0000007e</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpAlarmManager</cmp> init, <id>0x0000007c</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpGateway</cmp> init, <id>0x0000000f</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpGwCommDrvTcp</cmp> init, <id>0x00000010</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCodeMeter</cmp> init, <id>0x0000007a</id> <ver>3.5.5.0</ver>
    1419697040: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= Dynamic: <cmp>CmpOpenSSL</cmp> init, <id>0x00000033</id> <ver>3.5.5.0</ver>
    1419697042: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>10.99.99.207</ipaddress>, subnetmask <sub

     
  • eschwellinger

    eschwellinger - 2014-12-28

    Hi,

    vielleicht musst du mal das script anhängen und ich teste es mal damit bei mir.

    Grüße
    Edwin

     
  • mauskopf - 2014-12-28

    Ja kann machen nur leider ist das Problem das in diesem Skript Benutzer Namen und Passwort befindet!
    Hast Du ein einfaches Skript zum ausprobieren?
    Danke für deine Hilfe

     
  • eschwellinger

    eschwellinger - 2014-12-28

    Hi,

    ja ist klar, mach bitte mal
    ein skript

    #!/bin/bash
    ls

    dann kontrolliere ob du in /tmp/codesyscontrol.log den ausgeführten 'ls' Befehl siehst.. nachdem du es in CODESYS im IEC Code aufgerufen hast.

    Grüße
    Edwin

     
  • mauskopf - 2014-12-28

    Danke für deine Hilfe
    Habe das Skript nach den Vorgaben aus deinem letzten Post geändert und ausprobiert!
    Immer noch keine Reaktion in /tmp/codesyscontrol.log!
    Result ist immer 25
    Was bedeutet das?

    Was kann ich noch probieren?

     
  • mauskopf - 2014-12-28

    Hier noch meine CODESYSControl.cfg musste die endung txt verwenden da cfg nicht erlaubt ist!
    Hast du ein Codesys Projekt das funktioniert dann könnte ich das probieren?

    CODESYSControl.txt [1 KiB]

     
  • eschwellinger

    eschwellinger - 2014-12-28

    Hi,

    also an der Konfig liegts nicht damit gehts bei mir...
    vielleicht musst du doch dein script schicken mach doch einfach die User und passwort zu Test und Testpw,
    dann versuch ich damit.

    Grüße
    Edwin

     
  • mauskopf - 2014-12-28

    Habe das Skript Angepasst und die endung sh int txt geändert!
    Danke für deine Hilfe!

    cs_mail.txt [170 Bytes]

     
  • eschwellinger

    eschwellinger - 2014-12-28

    Hi,

    hast recht, mit dem script gehts schief... aber als workaround
    bau dir doch den String in CODESYS (also das was du senden willst) zusammen und schicks direkt über Sysprocess als Workaround.
    Dann geht es.
    Grüße
    Edwin

    IMG: sendEmail.png

     
  • mauskopf - 2014-12-28

    Leider funktioniert es auch so nicht!
    Bitte schike mir dein test Projekt!

    Danke für deine Hilfe

     
  • eschwellinger

    eschwellinger - 2014-12-28

    Hi,

    hier mein Projekt.
    in /tmp/codesyscontrol.log sehe ich, das das verschicken, naja sagen wir besser der Aufruf des Kommandos funktioniert.. (es würde ne Email verschicken wenn
    man gültige Userdaten einträgt)

    Grüße
    Edwin

    IMG: log.png

    SendEmail.project [111.05 KiB]

     
  • mauskopf - 2014-12-28

    Bin kurz weg probier es heute Abend!
    Danke!

     
  • mauskopf - 2014-12-29

    Kann dein Projekt nicht öffnen Bekomme folgende Fehlermeldungen

    [FEHLER] SendEmail: Device: Bibliothek IoStandard, 3.5.4.0 (3S - Smart Software Solutions GmbH) konnte nicht eingefügt werden:
    [FEHLER] SendEmail: C0046: Bezeichner 'IoConfigConnector' nicht definiert

    Mein Projekt ist leider zu groß um es hier einzustellen troz Komprimierung!
    Was mir aufgefallen ist du verwendest einen separaten Task für die LinuxCommands. Hat das einen Grund

    Vielen Dank für dein Bemühen!

     
  • eschwellinger

    eschwellinger - 2014-12-29

    Hallo,
    du meinst du kannst es öffnen, aber nicht Fehlerfrei übersetzen.
    Im Gerätebaum - rechtsclick auf das Raspberry Pi Device und Gerät aktualisieren auf deine Version.
    Compiler und VisuProfil auf deine verwendete Version setzen,
    dann müsste das Projekt übersetzbar sein.

    Die eigene Task für die Kommandos ist kein muss, aber eine Empfehlung. Der Aufruf kann die Task für mehrere Sekunden blockieren
    je nachdem wie lange der Linux Befehl dauert.

    Grüße
    Edwin

     
  • mauskopf - 2014-12-29

    Danke für deine Hilfe!
    Wo kann ich Compiler und VisuProfil auf meine verwendete Version setzen?

     
  • eschwellinger

    eschwellinger - 2014-12-29

    Projekt->Projekteinstellungen dann 'Compiler-Optionen'
    und dann Visualisierungsprofil ist auch hier ganz links unten in diesen Projekt einstlleungen zu finden.

    IMG: ProjektEinstellungen.png

     
  • mauskopf - 2014-12-29

    Hallo Edwin
    ich verzweifle:(!
    Habe eine Neue SD Karte mit dem Image geflasht und dein Projekt was eigentlich funktionieren müsste eingespielt aber NIX es geht nicht!

    Das Image das ich habe Heißt codesysrasp3550.img ist es das richtige?
    Bin wirklich Ratlos!
    Ich bekomme immer als rückgabe wert von Result 25!
    Was bedeutet 25 ?
    Hast du noch eine Idee was ich noch tun kann ich mache bestimmt irgendwo einen Großen Fehler aber Wo??

    Herzlichen Dank

    Peter

     
  • eschwellinger

    eschwellinger - 2014-12-29

    Hallo Peter,

    Fehler 25 bedeutet das du keine Rechte hast, diesen Befehl mit SysPro... auzurufen.
    Will also heißen CODESYS akzeptiert deine EIngabe im /etc/CODESYSControl.cfg nicht,

    wenn du das Image drauf gemacht hast kannst du nochmals überprüfen ob der Eintrag in diesem File
    vielleicht nicht versehentlich doppelt drin ist?
    Was anderes kann es nicht mehr sein.

    Beachte es stand schon ein Eintrag nach dem flashen der SD Karte in diesem File:
    Wenn du nun einen neuen dazugemacht hast wird vermutlich nur der erste verwendet der dann aber nicht zu deinem Befehl passt.
    Also schauen wieviele Sektionen von:
    [SysProcess]

    du in diesem File findest, es darf nur eine Sektion mit deinem Eintrag geben.

    hab mir gerade deine hochgeladene txt angeschaut es ist tatsächlich das Problem,sorry das hatte ich übersehen beim ersten mal.
    [SysProcess]Command.0=generateCert.sh
    [CmpWebServer]
    ConnectionType=0

    [CmpOpenSSL]
    WebServer.Cert=server.cer
    WebServer.PrivateKey=server.key
    WebServer.CipherList=HIGH

    [CmpLog]
    ;Logger.0.Name=StdLogger
    ;Logger.0.Enable=1
    ;Logger.0.MaxEntries=100000
    ;Logger.0.MaxFileSize=500000
    ;Logger.0.MaxFiles=3
    ;Logger.0.Backend.0.ClassId=0x0000010B
    ;Logger.0.Backend.1.ClassId=0x00000104
    ;Logger.0.Filter=0xFFFFFFFF

    [CmpApp]
    Bootproject.RetainMismatch.Init=1
    Application.1=Application

    [SysMem]
    Linux.Memlock=0

    [CmpCodeMeter]
    InitLicenseFile.0=3SLicense.wbb

    [SysCom]
    Linux.Devicefile=/dev/ttyUSB
    portnum := COM.SysCom.SYS_COMPORT1;

    [SysProcess]Command=AllowAll#Command.0=cs_mail

    Bitte den ersten fett markierten entfernen dann klappts auch.

    Grüße
    Edwin

     
  • mauskopf - 2014-12-29

    Hallo Edwin,
    Jetzt funktioniert das Ganze:D!
    Das Problem war so Simpel aber ich glaube ich hätte noch Ewig gesucht!
    Vielen Vielen Dank für deine Hilfe!

    PS Gibt es ein gutes Dokument mit Codesys Programm Teilen zum Erlernen dieser Programmiersprache?

     
  • eschwellinger

    eschwellinger - 2014-12-30

    Hallo Peter,

    ich habe leider nichts was dir schicken kann,
    ich würde einfach Store Applikations Besipiele anschauen oder aber vielleicht bei Amazon oder anderer Büchershop nach CODESYS suchen,
    da kommen dann sehr viele Buchvorschläge, allerdings kann ich dir kein bestimmtes empfehlen.

    So generell hat die IEC 61131-1 das ist die Norm für SPS Sprachen, ja nicht nur mit CODESYS zu tun sondern eben auch andere SPS'en
    werden nach dieser Norm programmiert.
    Daher kommst du vermutlich auch mit "googlen" schon ziemlich weit.

    Es gibt in CODESYS folgende Editoren:
    Strukturierter Text (ST)
    Ablaufsprache (AS)
    Funktionsbausteinsprache (FBS)
    Kontaktplan (KOP)
    Continious Function Chart (CFC)
    Anweisungsliste (AWL)

    Grüße
    Edwin

     

Log in to post a comment.