2021年5月8日 星期六

ESP32與PLC通訊

目的: 測試ESP32硬體RS232與PLC通訊

系統架構


接線


開發板設定


程式

//NodeMCU_32S UART2 and DVP-32EH COM1   

#include <HardwareSerial.h> 

#define RXD2 16

#define TXD2 17 

char CR = 0x0D;

char LF = 0x0A;

String cmd = String();

byte inByte[50] ; // 用來儲存收進來的 data byte

int i=0;

boolean once = false; 

void setup() { 

  Serial.begin(115200);

  // Serial2.begin(baud-rate, protocol, RX pin, TX pin);     

  Serial2.begin(9600, SERIAL_7E1, RXD2, TXD2); // DVP PLC Modbus ASCII 9600,7,e,1

  // force Y0 ON ":01050500FF00F6\r\n"

  cmd= cmd + ":01050500FF00F6" + CR + LF;

}

void loop(){

  if(!once){

   Serial.println(" ");

   Serial.println("ESP32 --> DVP PLC");

   Serial.print(cmd);  //print string

   for(int i=0; i<cmd.length(); i++) { //print ascii code

    Serial.print(cmd.charAt(i),HEX);

    Serial.print(" ");

  } 

    Serial2.print(cmd); //ESP32 2 PLC

    delay(100);

    Serial.println(" ");

   Serial.println(" ");

 // PLC Response

 i=0;

 while (Serial2.available()) { //PLC 2 ESP32

    inByte[i++] = Serial2.read();     

  } 

  Serial.println("DVP PLC --> ESP32"); 

  for(int j=0; j< i;j++)  

    Serial.print((char) inByte[j]);   

  for(int j=0; j< i;j++){

    Serial.print(inByte[j],HEX);

    Serial.print(" ");

  }

  Serial.println(" "); 

 i=0;

 once = true;

  }//end once

}

結果






沒有留言:

張貼留言