Introducción
Esta es la biblioteca de Industrial Shields para todos los diferentes PLC de Industrial Shields .
Requisitos
PLC Ethernet o de 20 E/S: PLC Ethernet PLC de 20 E/S
Biblioteca SimpleComm de Industrial Shields: Repositorio de SimpleComm en GitHub
Uso
Con la biblioteca SimpleComm puedes enviar datos a través de cualquier Stream de Arduino: RS-485, RS-232, Ethernet… Es lo bastante flexible para admitir distintos tipos de comunicación: ad hoc, maestro-esclavo, cliente-servidor… con una API fácil de usar.
La clase SimplePacket encapsula los datos en un paquete.
La función setData rellena el paquete con los datos deseados para enviarlo a un dispositivo remoto. Es posible rellenar el paquete con distintos tipos de datos: bool, char, unsigned char, int, unsigned int, long, unsigned long, double, string e incluso tipos de datos personalizados.
int num = 1234;
SimplePacket packet1;
packet1.setData(num);SimplePacket packet2;
packet2.setData("text data");typedef struct {
int a;
char b;
} customType;
customType customVar;
customVar.a = 1234;
customVar.b = 'B';
SimplePacket packet3;
packet3.setData(customVar, sizeof(customVar));También existen funciones getter, que devuelven los datos contenidos en el paquete según el tipo de dato. Si se especifica la longitud, devuelve la longitud de los datos en bytes.
int num = packet1.getInt();const char *str = packet2.getString();const customType *var = (const customType*) packet3.getData();La clase SimpleComm es la interfaz para enviar y recibir paquetes a través del Stream de Arduino deseado.
La función begin(byte) habilita el sistema de comunicación y establece el identificador/dirección del dispositivo. Cada dispositivo tiene su propia dirección que lo identifica. Los dispositivos reciben los paquetes enviados a su dirección, pero no los enviados a otras.
byte address = 1234;SimpleComm.begin(address);Es posible enviar paquetes a un dispositivo con una dirección y, opcionalmente, definir el tipo de paquete.
byte destination = 87;
SimpleComm.send(RS485, packet, destination);
SimpleComm.send(RS485, packet, destination, 0x33);Para enviar paquetes a todos los dispositivos es posible enviar un paquete de difusión (broadcast) con el campo de destino establecido en 0 (cero).
byte destination = 0;
SimpleComm.send(RS485, packet, destination);La función receive recibe un paquete de otro dispositivo a través del stream. Devuelve true si realmente se ha recibido un paquete.
SimplePacket rxPacket;if (SimpleComm.receive(RS485, rxPacket)) {
// A packet is received
}También es posible recibir todos los paquetes (modo sniffer) estableciendo la dirección de SimpleComm en 0 (cero). Este modo es útil al implementar un nodo pasarela entre Ethernet y RS-485.
byte address = 0;
SimpleComm.begin(address);
