2021年5月29日 星期六

Arduino與PLC RS485通訊

 目的:測試Arduino 與PLC RS485通訊

系統架構



線路


程式 

/*

  Arduino and DVP  PLC COM2 RS485  

 */

char CR = 0x0D;

char LF = 0x0A;

String cmd = String();

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

int i=0;

boolean once = false;

void setup()                    // run once, when the sketch starts

  Serial.begin(9600);

 Serial1.begin(9600,SERIAL_7E1);     // 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("Arduino --> 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(" ");

  }  

    Serial1.print(cmd); //Arduino 2 PLC 

    delay(100); 

    Serial.println(" ");

   Serial.println(" ");

 // PLC Response

 i=0;

 while (Serial1.available()) { //PLC 2 Arduino

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

  } 

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

  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(" ");

  }  

 i=0;

 once = true;

  }//end once 

}

結果





沒有留言:

張貼留言