Hallo, ich habe auf einem Linux-System mithilfe von Docker die OpenPLC-Runtime zum laufen gebracht. Nun wollte ich ein erstes Programm basteln. Da der Rechner keine echten I/Os hat, habe ich mir das MQTT-Beispiel angesehen und dieses in angepasster Form in FUP nachgebaut. Die Simulation wurde kompiliert, und ich konnte dann eine *.st-Datei erstellen und hochladen. Damit hatte dann aber die Runtime Probleme: <code> Generating C files... ./st_files/451874.st:3-21..3-32: error: invalid specification in variable declaration. [...] ./st_files/451874.st:11-3..11-23: error: invalid variable before ':=' in ST assignment statement. ./st_files/451874.st:11-41..11-42: error: ';' missing at the end of statement in ST statement. [...] ./st_files/451874.st:14-52..14-52: error: invalid statement in ST statement. 20 error(s) found. Bailing out! Error generating C files Compilation finished with errors!</code> Ich habe dann festgestellt, dass im Projekt unter "Konfiguration" der Zieltyp auf "Win32" steht und habe diesen auf Linux umgestellt. Damit klappt dann aber das erstellen nicht mehr: <code>Zeige build in D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build Generiere SoftPLC IEC-61131 ST/AWL/AS Code... Collecting data types Collecting POUs Generate POU shc Generate Config(s) Kompilliere IEC Programm zu c-Code... Extrahiere gefundene Variablen... C Code erfolgreich generiert. SPS : [CC] plc_main.c -> plc_main.o D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In function 'PLC_SetTimer': D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:180:30: error: 'SIGUSR1' undeclared (first use in this function) 180 | pthread_kill(PLC_thread, SIGUSR1); | ^~~~~~~ D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:180:30: note: each undeclared identifier is reported only once for each function it appears in D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In function 'PLCThreadSignalHandler': D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:193:16: error: 'SIGUSR2' undeclared (first use in this function) 193 | if (sig == SIGUSR2) | ^~~~~~~ D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In function 'startPLC': D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:359:16: error: 'SIGUSR1' undeclared (first use in this function) 359 | signal(SIGUSR1, PLCThreadSignalHandler); | ^~~~~~~ D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:361:16: error: 'SIGUSR2' undeclared (first use in this function) 361 | signal(SIGUSR2, PLCThreadSignalHandler); | ^~~~~~~ D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c: In function 'stopPLC': D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c:398:30: error: 'SIGUSR2' undeclared (first use in this function) 398 | pthread_kill(PLC_thread, SIGUSR2); | ^~~~~~~ "gcc" -c "D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.c" -o "D:\Eigene Dateien\Nextcloud\Documents\OpenPLC\SHC\build\plc_main.o" -O2 -fPIC -Wno-implicit-function-declaration -Wno-int-conversion "-IC:\Users\user\OpenPLC_Editor\matiec\lib\C" -w Beendet mit Status 1 (pid 17948) C Kompilierung von plc_main.c fehlgeschlagen. C Build fehlgeschlagen.</code> Kann mir jemand verraten, was hier schief läuft?
Windows Compiler kennt keine Linux spezifischen Symbole. Die Pfade mit Laufwerksbuchstaben gibt es nur unter Windows.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.