Hallo miteinander (und Edwin ),
gibt es die Möglichkeit direkt am Raspberry Pi (in der Konsole) Zugriff auf den OPC Server zu erlangen? Im konkreten Fall müsste ich Prozessdaten lesen (und am besten auch beschreiben). Über Programme für Windows wie UAExpert (ein OPC Server Client) kann ich das schon an einem PC, aber ist das auch am Raspberry/ in Linux möglich? Der OPC Server ist bei mir in einer Codesys-Applikation implementiert.
Hättet ihr womöglich noch zusätzliche Infos zum OPC Server von Codesys? Im Forum konnte ich bisher kaum etwas dazu finden.
Vielen Dank schonmal
Grüße
Raspx10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
für diesen fall bräuchtest du einen OPCUA Client für die Linux Konsole,
ich habe mal gegoogelt aber nichts gefunden.
Wieso realisiert du das nicht mit shared Memory?
Hier gibt's ein Beispiel:
l viewtopic.php?f=18&t=4711&p=15260&hilit=shared+mem#p15260 l
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Edwin,
danke für die schnelle Antwort! Nach dem OPC Client habe ich im Internet auch schon gesucht, aber bisher auch noch nicht brauchbares gefunden.
Shared Memory ist mir neu, ich dachte bisher mit dem OPC Server würde es am einfachsten gehen. Sehe ich das dann richtig, dass bei Shared Memory ich den OPC Server gar nicht benötige?
Im Beispiel von dir hast du einen C-Code und ein Codesys-Programm geschrieben, benötige ich die auch in der gleichen Form? Die Codesys-Datei kann auch verschiedene Bibliotheken nicht einfügen (siehe Anhang).
Wenn ich die bin-Datei so ausführe, bleibt er in einer Endlosschleife hängen und ich kann nichts eingeben. Die Datei memory unter /dev/shm/ hat er erzeugt und ich kann sie nach dem Abbrechen auch lesen. Aber sie stimmt nicht mit dem Wert der Variable in Codesys überein.
Grüße
Raspx10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
klar einen OPC Client wäre schon totschick auf dem PI... aber wenn du eh lokal bist tuts ja shared mem auch.
Der PI hat ja einen OPCUA Server, der ist immer da, aber du würdest ihn nicht verwenden das ist korrekt.
Für shared mem, wenn das sharedmem schon mal korrekt angelegt wird, dann liegts ja vermurlich nur an der CODESYS Iec Applikation.
Im CODESYS Projekt "Gerät aktualisieren" auf dem Raspberry Pi im Gerätebaum...
dann müsste es gehen...
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Edwin,
danke für deine Antwort. Ich bin auch nicht ganz lokal am Raspberry, sondern steuere ihn praktisch fern
Dein Tipp mit der Aktualisierung hat geholfen, das Programm läuft jetzt. Nur glaube ich, dass die bin-Datei nicht richtig ausgeführt wird. Nach dem Starten der Datei loge ich mich in Codesys (mit deinem Programm) ein. Auf dem Raspberry blinkt die ganze Zeit eine Zeile und ich kann etwas eintippen (+Enter), aber es beendet sich nicht und blinkt nur weiter. Nach dem Beenden der bin-Datei finde ich die Datei mymemory auch im /dev/shm Verzeichnis, nur eben nicht aktualisiert. Kann es am Raspberry Model evtll liegen (B+)?
Wie aktualisierst du eigentlich in Linux die Datei? Änderst du die Datei mymemory oder machst du es über die bin-Datei?
Grüße
Raspx10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
das geht auch mit B+ und allen Pi's.
Bei der Beispiel Applikaton öffnet ja die Consolen Applikation den sharedmem und dann schreibt diese 0x41 rein... das siehst in der CODESYS Applikation.
Die CODESYS Applikation aktualisiert den Zähler in dem ersten Byte.
Als Besipiel gedacht wie du über CODESYS was in deine Applikation schreibst und eben auch umgekehrt von deiner Applikation -> CODESYS
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo Edwin,
komischerweise funktioniert das jetzt, obwohl ich die bin-Datei gar nicht gestartet habe. Reicht also schon allein die Codesys App bzw. muss man die bin-Datei nur einmal ausführen (Installation, kein Programm)?
Wenn ich dann von Codesys in die App schreiben möchte, muss ich die Funktion SysSharedMemoryWrite() verwenden? Eigentlich müsste es ja auch direkt durch das Verändern des Arrays pshm gehen? Aber du übergibst in dieser Funktion den pCounter, der ja (glaube ich) das erste Byte hochzählt. Verwendet man die Funktion also nur für sich ständig ändernde Werte?
Viele Grüße
Raspx10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo miteinander (und Edwin ),
gibt es die Möglichkeit direkt am Raspberry Pi (in der Konsole) Zugriff auf den OPC Server zu erlangen? Im konkreten Fall müsste ich Prozessdaten lesen (und am besten auch beschreiben). Über Programme für Windows wie UAExpert (ein OPC Server Client) kann ich das schon an einem PC, aber ist das auch am Raspberry/ in Linux möglich? Der OPC Server ist bei mir in einer Codesys-Applikation implementiert.
Hättet ihr womöglich noch zusätzliche Infos zum OPC Server von Codesys? Im Forum konnte ich bisher kaum etwas dazu finden.
Vielen Dank schonmal
Grüße
Raspx10
Hallo
für diesen fall bräuchtest du einen OPCUA Client für die Linux Konsole,
ich habe mal gegoogelt aber nichts gefunden.
Wieso realisiert du das nicht mit shared Memory?
Hier gibt's ein Beispiel:
l viewtopic.php?f=18&t=4711&p=15260&hilit=shared+mem#p15260 l
Grüße
Edwin
Hallo Edwin,
danke für die schnelle Antwort! Nach dem OPC Client habe ich im Internet auch schon gesucht, aber bisher auch noch nicht brauchbares gefunden.
Shared Memory ist mir neu, ich dachte bisher mit dem OPC Server würde es am einfachsten gehen. Sehe ich das dann richtig, dass bei Shared Memory ich den OPC Server gar nicht benötige?
Im Beispiel von dir hast du einen C-Code und ein Codesys-Programm geschrieben, benötige ich die auch in der gleichen Form? Die Codesys-Datei kann auch verschiedene Bibliotheken nicht einfügen (siehe Anhang).
Wenn ich die bin-Datei so ausführe, bleibt er in einer Endlosschleife hängen und ich kann nichts eingeben. Die Datei memory unter /dev/shm/ hat er erzeugt und ich kann sie nach dem Abbrechen auch lesen. Aber sie stimmt nicht mit dem Wert der Variable in Codesys überein.
Grüße
Raspx10
Hallo,
klar einen OPC Client wäre schon totschick auf dem PI... aber wenn du eh lokal bist tuts ja shared mem auch.
Der PI hat ja einen OPCUA Server, der ist immer da, aber du würdest ihn nicht verwenden das ist korrekt.
Für shared mem, wenn das sharedmem schon mal korrekt angelegt wird, dann liegts ja vermurlich nur an der CODESYS Iec Applikation.
Im CODESYS Projekt "Gerät aktualisieren" auf dem Raspberry Pi im Gerätebaum...
dann müsste es gehen...
Grüße
Edwin
Hallo Edwin,
danke für deine Antwort. Ich bin auch nicht ganz lokal am Raspberry, sondern steuere ihn praktisch fern
Dein Tipp mit der Aktualisierung hat geholfen, das Programm läuft jetzt. Nur glaube ich, dass die bin-Datei nicht richtig ausgeführt wird. Nach dem Starten der Datei loge ich mich in Codesys (mit deinem Programm) ein. Auf dem Raspberry blinkt die ganze Zeit eine Zeile und ich kann etwas eintippen (+Enter), aber es beendet sich nicht und blinkt nur weiter. Nach dem Beenden der bin-Datei finde ich die Datei mymemory auch im /dev/shm Verzeichnis, nur eben nicht aktualisiert. Kann es am Raspberry Model evtll liegen (B+)?
Wie aktualisierst du eigentlich in Linux die Datei? Änderst du die Datei mymemory oder machst du es über die bin-Datei?
Grüße
Raspx10
Hi,
das geht auch mit B+ und allen Pi's.
Bei der Beispiel Applikaton öffnet ja die Consolen Applikation den sharedmem und dann schreibt diese 0x41 rein... das siehst in der CODESYS Applikation.
Die CODESYS Applikation aktualisiert den Zähler in dem ersten Byte.
Als Besipiel gedacht wie du über CODESYS was in deine Applikation schreibst und eben auch umgekehrt von deiner Applikation -> CODESYS
Grüße
Edwin
Hallo Edwin,
komischerweise funktioniert das jetzt, obwohl ich die bin-Datei gar nicht gestartet habe. Reicht also schon allein die Codesys App bzw. muss man die bin-Datei nur einmal ausführen (Installation, kein Programm)?
Wenn ich dann von Codesys in die App schreiben möchte, muss ich die Funktion SysSharedMemoryWrite() verwenden? Eigentlich müsste es ja auch direkt durch das Verändern des Arrays pshm gehen? Aber du übergibst in dieser Funktion den pCounter, der ja (glaube ich) das erste Byte hochzählt. Verwendet man die Funktion also nur für sich ständig ändernde Werte?
Viele Grüße
Raspx10