Codesys serielle Verbindung mit Raspberry Pi und Arduino

Codesys Logo

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert