CODESYS auf dem Raspberry PI -jetzt verfügbar

Moin Moin,

ich habe gestern zeit gefunden mich mit OPCUA auf dem Rpi zu beschäftigen. Leider Vermisse ich das PythonSkript Beispiel. Wo kann man dieses finden / einsehen?
Außerdem ist mir gestern aufgefallen das die NodeId so extrem lang ist, kann man die Verkürzen? also dieses |var|CODESYS.... weglassen?

Beste Grüße und weiter so!
Hendrik
 
Moin,
danke erstmal für deinen Tipp.
Wie kann ich denn eine OPC Var von mit Python schreiben. Gibt es hierfür auch ein Beispiel?
Grüße Hendrik
 
Moin, ich melde mich mal wieder hier mit einem anliegen =)

ich bin jetzt Besitzer von einem Meter WS2812B mit 144 LEDs.
https://tutorials-raspberrypi.de/raspberry-pi-ws2812-ws2811b-rgb-led-streifen-steuern/
Ich würde diese gerne einzeln ansteuern.
Folgende Idee:
Ein Array [1..144] of DWORD für die einzelnen Farben die ich gerne in einem Zyklus an ein Python Script senden kann. OPC UA ist wahrscheinlich die einfachste variante... aber auch die beste / schnellst hierfür?

was meint ihr?

MfG
Hendrik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hendrik,
zu deiner Frage von weiter oben OPCUA Client in Python:
Anbei das Beispiel welches eine Variable schreibt über den OPCUA Client.
Wichtig:
das Python Skript als Pi User ausführen nicht als "root"
python3 simpleclientRaspi.py

Grüße
 

Anhänge

  • simpleclientRaspi_write.zip
    985 Bytes · Aufrufe: 39
  • OPCUAClientwrite.jpg
    OPCUAClientwrite.jpg
    268,7 KB · Aufrufe: 42
Zuletzt bearbeitet:
Hallo,

nach langer Zeit beschäftige ich mich mal wieder mit dem Raspberry und Codesys darauf. Ich kämpfe derzeit mit einem Netzwerk Problem. Hängt mein Pi in meinem WLAN kann ich micht sofort verbinden und auch ein Program auf die Steuerung laden.
Verbinde ich den PI aber per Kabel geht es nicht. Ich habe eine feste IP Adresse im korrekten Adressraum vergeben. Ich kann den PI pingen und umgekeht. Alle Funktionen unter Option Tools/Update Raspberry Pi funktionieren. Ich kann also die Runtime aufspielen und auch die SystemInfo herauslesen. Eine SSH Verbindung funktioniert. Wenn ich aber im CoDeSys Control... Netzwerk durchsuchen nutze, wird die gestartete Runtime nicht gefunden. Leider bin ich nicht so der Linux Netzwerk Spezialist, vielleicht übersehe ich da auch noch etwas?

Ich nutze die Runtime V3.12.5.0 in einem CoDeSys 3.5 SP12 (64Bit) aus einer Win7 VMWare heraus.
 
Hi,
was du immer machen kannst in solchen Fällen, die IP Adresse des PI's als Gateway Adresse eintragen (dann umschalten auf das neue Gateway) und dann über des Gateway des Pi scannen...
denke dann wird es funktionieren.
Grüße
 

Anhänge

  • PIGateway.jpg
    PIGateway.jpg
    85,4 KB · Aufrufe: 81
Zuletzt bearbeitet:
Hallo zusammen,

ich hätte da noch einmal eine Frage zur Zykluszeit eines CoDeSys Kernals auf einem standart PI Raspian (RaspberryPi 3). Ich habe eine Zeit von 2ms eingestellt und es scheint alles zu funktionieren. Läuft das System dann wirklich so schnell oder wird einfach kein Fehler erzeugt. Es handelt sich ja auch leider nicht um ein RealTime Betriebssystem.
 
Hallo,
das hängt natürlich von deinem Projekt ab,
aber der PI3 kann prinzipiell schon auch locker schneller auch <1ms Tasks.
Du kannst den Jitter und eine Tasklaufzeiten im Taslmonitor kontrollieren... siehe Screenshot

Wenn man Echtzeit benötigt sollte man einen rt_preemt gepatchten Linux Kernel verwenden.

Grüße
 

Anhänge

  • task_jitter.jpg
    task_jitter.jpg
    91,5 KB · Aufrufe: 57
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich hänge seit ein paar Tagen an folgendem Problem und finde keine entsprechende Lösung.:cry:
Ich rufe im Event "OnMouseClick" den Standarddialog Numpad mit Variable schreiben auf.
Im Event " OnDialogClosed" wird dann die Variablenbearbeitung fortgesetzt. Soweit so gut.

Ich schaffe es nicht auszuwerten ob der Benutzer "OK" oder "ESC" im Dialog Numpad betätigt hat.
Gibt es eine Möglichkeit das Dialogresult von Numpad auszuwerten oder muss ich einen eigenen Dialog kreieren? Da könnte ich einen Rückgabewert definieren.
Holger
 
Hallo und nochmal Danke für die schnelle Antwort.
Ich habe jetzt herausgefunden das meine I2C Devices - ein MPU9150 und eine MD25 H-Brücke furchtbar langsam sind. Die Frage ist ob ich diese noch beschleunigen kann.

Orginal:
Wenn ich mir meinen Task so anschaue, läuft der richtig schnell. Bei einer Intervall Zeit von 12ms zeigt mir die Tasküberwachung Zykluszeiten von ca60µs an. Reduziere ich die Interval Zeit z.b. auf 10ms springt die Zykluszeit dann auf ca17000µs. Am aufgerufenen Programm selbst, scheint das nicht zu liegen, da ich bereits ein anderes, fast ohne Code getestet habe, auch hier zeigt sich selbiges Problem. In dem Programm lese ich einen I2C Gyroskop aus und steuere eine H-Brücke an. Beides I2C Geräte. Es gibt eine Visu, aber die läuft mit 100ms sehr langsam und wenn ich die wegnehme ändert sich das Verhalten nicht.
 
Zuletzt bearbeitet:
Hi,
du könntest mal die I2C Geschwindigkeit "pimpen" , denke aktuell steht die auf 400000...
http://www.mindsensors.com/blog/how-to/change-i2c-speed-with-raspberry-pi
Für einen Test mal:
sudo nano /etc/init.d/codesyscontrol
echo bcm2708_i2c.0 > /sys/bus/platform/drivers/bcm2708_i2c/unbind
echo 400000 > /sys/module/i2c_bcm2708/parameters/Baudrate
echo bcm2708_i2c.0 > /sys/bus/platform/drivers/bcm2708_i2c/bind
hier mal hoch drehen auf 1000000...

Grüße
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hab ich jetzt mal versucht, ändert jedoch scheinbar nichts an den langsamen Zykluszeiten. Ich habe jetzt für MD25 und MPU9150 einen seperaten Task definiert. Die Zeiten sind beim MD25 fast 25ms und der MPU liegt bei 6ms. An diesen zwei Tasks hängt jetzt kein Programm mehr. Ich baue gerade einen SelfBalancing Robot. Der steht auch mittlerweile und seit ich die Tasks separiert habe funktioniert die Regelung: https://www.youtube.com/watch?v=7KZBrpMK6gM. Ich finde aber gerade die MD25 H-Brücke echt langsam. Zwischenablagebild.jpg Laut Dokumentation kann der MD25 I2C Kommunikation bis zu 100khz. Ich muss mir nochmal den Treiber anschauen. Vielleicht liegt ja hier das Problem.

Mir ist jetzt aufgefallen, das die Zykluszeit des MD25 massiv zunimmt, nachdem die CPU in den RUN geht. In den ersten tausend Zyklen steigt die Zeit fast linear auf die hohen Werte? Ich habe den Treiber des MD25 selbst geschrieben. Könnte es hier einen Fehler geben der zu einem Anstieg der Zykluszeit führt? Ich habe die XML Datei entsprechend der Anleitug angepasst und eine library geschrieben welche die Methoden AfterReadInputs und BeforeWriteOutpus enthält.
 
Zuletzt bearbeitet:
Hallo,

ich versuche gerade auf einem Rapi3 mit aufgesteckten PiFace 2 dem PiFace irgend eine Funktion zu entlocken. Aber es passiert rein gar nichts. Ich habe auf dem Raspi alle möglichen Updates durchgeführt und CoDeSys installiert. Weiterhin habe ich in der Config den SPI gestartet. Aber mit meinem eigenen wie auch den Beispielprojekten sehe ich kein Signalwechsel, sofern ich einen der 4 Taster drücke oder aber eine Brücke zu GND anklemme.

Habt Ihr noch einen Tipp was ich probieren könnte? Muss ich vielleicht noch etwas aktivieren oder nachinstallieren?

Danke!

Update: Mein Pi erkennt wohl das PiFace nicht "No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0)."
 
Zuletzt bearbeitet:
Hi,
in der Tat, da gibt’s ein Problem mit der SPI Geschwindigkeit (seit Stretch)
Du musst am SPI Master die Geschwindigkeit reduzieren (Default ist 4000000)


Grüße
 

Anhänge

  • SPI_SPeed.jpg
    SPI_SPeed.jpg
    107,6 KB · Aufrufe: 26
Zuletzt bearbeitet:
Zurück
Oben