Testing Modbus RS485 commands

Dependencies:   mbed BufferedSerial

Committer:
zillkhan
Date:
Wed Oct 06 11:43:00 2021 +0000
Revision:
5:ddf182356d90
Initial changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zillkhan 5:ddf182356d90 1 #include "mbed.h"
zillkhan 5:ddf182356d90 2 #include "BufferedSerial.h"
zillkhan 5:ddf182356d90 3
zillkhan 5:ddf182356d90 4 Serial pc(USBTX, USBRX,115200);
zillkhan 5:ddf182356d90 5 Serial RS485(D1,D0); // Tx, Rx
zillkhan 5:ddf182356d90 6 DigitalOut ho(D2);
zillkhan 5:ddf182356d90 7
zillkhan 5:ddf182356d90 8 typedef uint8_t byte;
zillkhan 5:ddf182356d90 9
zillkhan 5:ddf182356d90 10 //byte data[9] = {0x01,0x04,0x00,0x48,0x00,0x02,0xf1,0xdd};//your data
zillkhan 5:ddf182356d90 11 byte enable[9] = {0x01,0x06,0x20,0x0E,0x00,0x08,0xE2,0x0F};//your data
zillkhan 5:ddf182356d90 12 byte run[9] = {0x01,0x06,0x20,0x89,0x00,0x0A,0xD3,0xE7};//your data
zillkhan 5:ddf182356d90 13 byte stop[9] = {0x01,0x06,0x20,0x0E,0x00,0x07,0xA2,0x0B};//your data
zillkhan 5:ddf182356d90 14
zillkhan 5:ddf182356d90 15 int main()
zillkhan 5:ddf182356d90 16 {
zillkhan 5:ddf182356d90 17 printf("Main\n");
zillkhan 5:ddf182356d90 18 RS485.baud(115200);
zillkhan 5:ddf182356d90 19 pc.baud(115200);
zillkhan 5:ddf182356d90 20 while(1) {
zillkhan 5:ddf182356d90 21 RS485.baud(115200);
zillkhan 5:ddf182356d90 22 pc.printf("Starting\n");
zillkhan 5:ddf182356d90 23 ho = 1; // 3.3V output from digital out pin
zillkhan 5:ddf182356d90 24
zillkhan 5:ddf182356d90 25 for (int i=0; i<(sizeof(enable)-1);i++)
zillkhan 5:ddf182356d90 26 {
zillkhan 5:ddf182356d90 27 RS485.putc(enable[i]);
zillkhan 5:ddf182356d90 28 }
zillkhan 5:ddf182356d90 29
zillkhan 5:ddf182356d90 30 wait_ms(2000); // Silent interval
zillkhan 5:ddf182356d90 31
zillkhan 5:ddf182356d90 32 for (int i=0; i<(sizeof(run)-1);i++)
zillkhan 5:ddf182356d90 33 {
zillkhan 5:ddf182356d90 34 RS485.putc(run[i]);
zillkhan 5:ddf182356d90 35 }
zillkhan 5:ddf182356d90 36
zillkhan 5:ddf182356d90 37 wait_ms(5000); // Silent interval
zillkhan 5:ddf182356d90 38
zillkhan 5:ddf182356d90 39 for (int i=0; i<(sizeof(stop)-1);i++)
zillkhan 5:ddf182356d90 40 {
zillkhan 5:ddf182356d90 41 RS485.putc(stop[i]);
zillkhan 5:ddf182356d90 42 }
zillkhan 5:ddf182356d90 43
zillkhan 5:ddf182356d90 44 wait_ms(50); // Silent interval
zillkhan 5:ddf182356d90 45
zillkhan 5:ddf182356d90 46 pc.printf("Getting data\n");
zillkhan 5:ddf182356d90 47
zillkhan 5:ddf182356d90 48 ho = 0;
zillkhan 5:ddf182356d90 49 pc.printf("The RS485 value %d\n",RS485.readable());
zillkhan 5:ddf182356d90 50
zillkhan 5:ddf182356d90 51 char buffer[50];
zillkhan 5:ddf182356d90 52 RS485.gets(buffer, 9);
zillkhan 5:ddf182356d90 53
zillkhan 5:ddf182356d90 54 for (int count = 0; count < 8; count++) {
zillkhan 5:ddf182356d90 55 pc.printf("%02hhX", buffer[count]);
zillkhan 5:ddf182356d90 56 }
zillkhan 5:ddf182356d90 57 pc.printf("\n");
zillkhan 5:ddf182356d90 58 pc.printf("Done\n");
zillkhan 5:ddf182356d90 59 wait_ms(1000);
zillkhan 5:ddf182356d90 60 }
zillkhan 5:ddf182356d90 61 }