Die Befehle sehen dann beispielsweise so aus:
I00CX125000.000429496729511110001001*
Was ich bereits gemacht habe:
1.
Eintrag für die Serielle Schnittstelle im SPS Config file:
/etc/CODESYSControl.cfg
[SysCom]
Linux.Devicefile=/dev/ttyAMA
die Serielle Schnittstelle wurde in der Raspberry-Pi Config für die Login-Shell deaktiviert aber als Hardware aktiviert.
Ich verstehe nur noch nicht, was ich nun in meinem Programm einbinden/definieren muss, um die Schnittstellenkonfiguration und die Steuerstrings zu übertragen.
Das sollen die Schnittstellenpaprameter sein.
Standard Speed High Speed
BaudRate = 115200
Parity = None
StopBits = One
DataBits = 8
Handshake = None
Wie/wo übergebe ich die?
Wie steuere ich, wann ein String gesendet wird?
Wie kann ich die Antwortstrings auswerten?
Wie spreche ich zudem die der GPIO-Pins an, bzw. kann sie als Eingänge lesen?
Ich verstehe die Adressierung noch nicht so ganz.
Es wäre ganz toll, hier Unterstützung zu bekommen.
Vielen lieben Dank
Gruss
McNugget
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
seit 3.5SP11 musst solltest du das in /etc/CODESYSControl_User.cfg
eintragen.
also in CODESYSControl.cfg entfernen die Sektion und in CODESYSControl_User.cfg den vorhanden Eintrag anpassen.
[SysCom]
Linux.Devicefile=/dev/ttyAMA
zu dem seriellen lesen es gibt ein Store Beispiel: https://store.codesys.com/serial-com.html
Am besten direkt über das CODESYS Einkaufwagen Symbol installieren und dann enthält diese Applikation zwei Arten wie man es machen kann
1. CAASerialCom
2.Syscom
je nach Gusto eines davon adaptieren an deine Applikation
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe das SysComLibExample einfach mal in mein Projekt einkopiert. Grundsätzlich läuft es.
Allerdings bekomme ich es nicht hin, dass ich einen String nur einmal ereignisgesteuert über die COM-Schnittstelle übergebe.
Der String wird immer endlos wiederholt.
Habe es jetzt versucht, die "Str" Variable und "bWriteCom" global zu definieren und "bWriteCom" per R_trig zu triggern. da kommt der String immer noch etwa 50 Mal.
Wie kann ich es hinbekommen, meinen String nur einmal ereignisgesteuert auszugeben?
Vielen Dank schon mal.
Gruß
McNugget
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
stand heute auch vor dem Thema das ich eine Serielle Kommunikation am RPI benötigte und habe mal das 3S Beispiel Projekt für meine Bedürfnisse angepasst.
zu den Änderungen:
- Externe Variablen hinzugefügt zum Steuern der Kommunikation
- nach einem sende Befehl werden eine bestimmte Anzahl an Bytes gelesen ... danach wird der serial Port wieder geschlossen.
im Anhang Bilder der Variablen und des modifizierten Programmes
VG Stefan
Edit : Jetzt erst gesehen das der letzte post schon etwas her ist ... aber anderen wird wohl helfen auf den richtigen weg zu kommen
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo allerseits,
ich steige gerade in die Programmierung des Raspberry Pi in Codesys ein.
Die runtime ist auf dem Pi installiert. Demoprogramme von Codesys kann ich ausführen.
Ich möchte gerne eine Platine einbinden, die direkt als HAt aufgesetzt wird.
http://pthat.com/
Noch habe ich die Platine nicht.
Der HAT wird laut Hersteller über ASCII-Strings angesprochen.
http://pthat.com/index.php/command-set/
Die Befehle sehen dann beispielsweise so aus:
I00CX125000.000429496729511110001001*
Was ich bereits gemacht habe:
1.
Eintrag für die Serielle Schnittstelle im SPS Config file:
/etc/CODESYSControl.cfg
[SysCom]
Linux.Devicefile=/dev/ttyAMA
Ich verstehe nur noch nicht, was ich nun in meinem Programm einbinden/definieren muss, um die Schnittstellenkonfiguration und die Steuerstrings zu übertragen.
Das sollen die Schnittstellenpaprameter sein.
Standard Speed High Speed
BaudRate = 115200
Parity = None
StopBits = One
DataBits = 8
Handshake = None
Wie/wo übergebe ich die?
Wie steuere ich, wann ein String gesendet wird?
Wie kann ich die Antwortstrings auswerten?
Wie spreche ich zudem die der GPIO-Pins an, bzw. kann sie als Eingänge lesen?
Ich verstehe die Adressierung noch nicht so ganz.
Es wäre ganz toll, hier Unterstützung zu bekommen.
Vielen lieben Dank
Gruss
McNugget
Hallo,
seit 3.5SP11 musst solltest du das in /etc/CODESYSControl_User.cfg
eintragen.
also in CODESYSControl.cfg entfernen die Sektion und in CODESYSControl_User.cfg den vorhanden Eintrag anpassen.
[SysCom]
Linux.Devicefile=/dev/ttyAMA
zu dem seriellen lesen es gibt ein Store Beispiel:
https://store.codesys.com/serial-com.html
Am besten direkt über das CODESYS Einkaufwagen Symbol installieren und dann enthält diese Applikation zwei Arten wie man es machen kann
1. CAASerialCom
2.Syscom
je nach Gusto eines davon adaptieren an deine Applikation
Grüße
Edwin
dann noch GPIO's definieren und mappen hier:
Hallo Edwin.
Vielen Dank für die schnelle und gute Hilfe, die Screenshots helfen mir sehr.
Kannst du mir sagen, warum das alles beim Ausführen so aussieht?
Ich habe Deklaration und Anweisungsteil umkopiert in eine Funktion mit Boolscher Ausgabe.
Diese rufe ich auch im PLC_PRG auf.
Aber irgendwie scheint es keine Aktualwerte, sondern nur Fragezeichen zu geben...
Vielen Dank auf jeden Fall schon mal bis hier.
Gruss
McNugget
Mittlerweile arbeite ich direkt auf der Hardware.
An die GPIO-Pins ist ein Pegelwandler auf USB angeschlossen.
Mit einem Terminalprogramm konnte ich bereits strings senden. Also sollte von der Hardwareseite alles stimmen.
Was mit neu war, war die Info, dass sich die Portadressierung im Pi3 von den anderen Versionen unterscheidet.
In die /etc/CODESYSControl_User.cfg
ist jetzt folgendes eingestragen:
[sysCom]
Linux.Devicefile=dev/ttyS
[CmpBlkDrvCom]
Com.0.Name=MyCom
Com.0.Baudrate=115200
Com.0.Port=3
Com.0.EnableAutoAdressing=1
Wie und wo kann ich die Com-Porteinstellungen definieren?
Wie sage ich in Codesys, dass sich die Ausgabe auf den ComPort MyCom bezieht?
Gruss
McNugget
Hallo,
du brauchst nur:
[sysCom]
Linux.Devicefile=dev/ttyS
das andere bitte nicht aktivieren.
Baudrate usw wir ja alles im IEC Projekt angegeben.
Grüße
Edwin
Hallo Edwin.
Vielen Dank. Jetzt läuft die Kommunikation.
Ich habe das SysComLibExample einfach mal in mein Projekt einkopiert. Grundsätzlich läuft es.
Allerdings bekomme ich es nicht hin, dass ich einen String nur einmal ereignisgesteuert über die COM-Schnittstelle übergebe.
Der String wird immer endlos wiederholt.
Habe es jetzt versucht, die "Str" Variable und "bWriteCom" global zu definieren und "bWriteCom" per R_trig zu triggern. da kommt der String immer noch etwa 50 Mal.
Wie kann ich es hinbekommen, meinen String nur einmal ereignisgesteuert auszugeben?
Vielen Dank schon mal.
Gruß
McNugget
Kann mir irgendwer auf die Sprünge helfen?
Vielen Dank
gruss
McNugget
Leider habe ich das Problem immer noch. Kann mir jemand einen Wink mit dem Zaunpfahl geben?
Wie kann ich SCII-Codes ereignisgesteuert ausgeben?
Vielen Dank schon mal für die Hilfe.
Gruss
McNugget
Könnte mir jemand helfen?
Vielen Dank
McNugget
Hallo McNugget,
stand heute auch vor dem Thema das ich eine Serielle Kommunikation am RPI benötigte und habe mal das 3S Beispiel Projekt für meine Bedürfnisse angepasst.
zu den Änderungen:
- Externe Variablen hinzugefügt zum Steuern der Kommunikation
- nach einem sende Befehl werden eine bestimmte Anzahl an Bytes gelesen ... danach wird der serial Port wieder geschlossen.
im Anhang Bilder der Variablen und des modifizierten Programmes
VG Stefan
Edit : Jetzt erst gesehen das der letzte post schon etwas her ist ... aber anderen wird wohl helfen auf den richtigen weg zu kommen