RS485
RS485-Schnittstelle konfigurieren und in eigenen Programmen verwenden.
Die RS485-Schnittstelle ist über [RS485-GERÄT] verfügbar. Zu konfigurieren sind mindestens
[BAUDRATE], [DATENBITS], [PARITÄT] und [STOPBITS].
[RS485-KONFIGURATIONSBEFEHL]qdGate am Busende anschließen
Die 120-Ω-Terminierung der RS485-Schnittstellen ist im qdGate dauerhaft aktiviert. Das qdGate muss deshalb am physikalischen Ende des jeweiligen RS485-Busses angeschlossen werden. Am gegenüberliegenden Busende ist ein weiterer 120-Ω-Abschluss vorzusehen. Teilnehmer in der Mitte des Busses dürfen nicht zusätzlich terminiert werden.
[PLATZHALTER: Halb-/Vollduplex, Richtungssteuerung und Protokoll]
Eigene Programme sollten den bereitgestellten Service [RS485-SERVICE] verwenden, sofern dieser die
Hardware abstrahiert.
Für das Python-Beispiel ist pyserial in Version [PYSERIAL-VERSION] vorgesehen. Die C-Toolchain
ist [C-TOOLCHAIN-VERSION].
RS485 aus eigenen Programmen verwenden
Bei RS485 müssen Baudrate, Datenformat, Halb-/Vollduplex, Terminierung und Richtungssteuerung zur Hardware passen.
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
int rs485_send(const char *device_path, const unsigned char *data, unsigned int length)
{
const int fd = open(device_path, O_RDWR | O_NOCTTY);
struct termios settings;
if (fd < 0 || tcgetattr(fd, &settings) < 0) {
if (fd >= 0) {
(void)close(fd);
}
return -1;
}
cfsetispeed(&settings, B115200);
cfsetospeed(&settings, B115200);
settings.c_cflag = (settings.c_cflag & ~CSIZE) | CS8;
settings.c_cflag |= CLOCAL | CREAD;
settings.c_cflag &= ~(PARENB | CSTOPB);
(void)tcsetattr(fd, TCSANOW, &settings);
const ssize_t written = write(fd, data, length);
(void)tcdrain(fd);
(void)close(fd);
return written == (ssize_t)length ? 0 : -1;
}Für Python wird pyserial verwendet. Wenn ein Systemservice die Richtungssteuerung kapselt, ist der
Service dem direkten Gerätezugriff vorzuziehen.