Informationen und Textbausteine:
In Bearbeitung [ … ]
Modbus/ Serial Einrichtung:
sudo raspi-config
Would you like a login shell to be accessible over serial?
-> NO
Would you like the serial port hardware to be enabled?
-> YES
The serial login shell is disabled
The serial interface is enabled
/boot/firmware/config.txt
`[all]
# Disconnect bluetooth fram UART
dtoverlay=w1-gpio
dtoverlay=disable-bt
enable_uart=1`
/etc/codesyscontrol/CODESYSControl_User.cfg
[SysCom]
Linux.Devicefile.1=/dev/ttyAMA0
Linux.Devicefile.2=/dev/ttyUSB0
Beispielprogramm:
Arduino:
void setup() {
Serial.begin(9600); // Setze die Baudrate auf 9600
}
void loop() {
if (Serial.available() > 0) {
String receivedData = Serial.readStringUntil('\n');
Serial.print("Empfangen: ");
Serial.println(receivedData);
String responseData = "Antwort: " + receivedData;
Serial.println(responseData);
}
}
Codesys:
- Erstelle ein neues CODESYS-Projekt und füge einen seriellen Kommunikationsbaustein hinzu.
- Konfiguriere die serielle Schnittstelle (/dev/ttyAMA0 oder entsprechend).
Beispielprogramm in ST (Structured Text):
PROGRAM Serial_Comm
VAR
uart: SysCom.SerCom; (* Serieller Kommunikationsbaustein *)
sendData: STRING := 'Hallo Arduino';
receiveData: STRING;
bytesWritten: DINT;
bytesRead: DINT;
END_VAR
(* Initialisierung der seriellen Schnittstelle *)
uart.pPort := '/dev/ttyAMA0';
uart.iBaudRate := 9600;
uart.iDataBits := 8;
uart.iStopBits := 1;
uart.iParity := SysCom.Parity.NONE;
uart.xActive := TRUE;
(* Sende Daten an Arduino *)
IF uart.xConnected THEN
uart.Write(s:=sendData, len:=LEN(sendData) + 1, rd:=bytesWritten);
END_IF
(* Empfange Daten vom Arduino *)
IF uart.xConnected THEN
uart.Read(s:=receiveData, len:=256, rd:=bytesRead);
END_IF