Warning: Trying to access array offset on false in /home/c6460735/public_html/kano-x.jp/cms/wp-content/plugins/wp-sitemanager/modules/meta-manager.php on line 507

Warning: Trying to access array offset on false in /home/c6460735/public_html/kano-x.jp/cms/wp-content/plugins/wp-sitemanager/modules/meta-manager.php on line 507
ESP32 Modbus 通信 で PLC 制御 (1) – 株式会社加納製作所

最新情報

ESP32 Modbus 通信 で PLC 制御 (1)

ESP32 とPLC(FP0R)を
ModbusRTU 通信 で 繋げてみようと思います。

ESP32 をマスター
PLC(FP0R)をスレーブとします。

将来的には、RS485で、1:N 通信を考えていますが

手持ちのPLCが、RS232ポートしか持っていないので
テストは、RS232で1:1の通信でテストしてみます。

    AFP0RC32T】 | FP0R - パナソニック

 

繋げ方(回路図)です。


 

 

PLC(FP0R)

設定

ユニットID:1

通信モード:MODBUSRTU

通信速度:115200

伝送フォーマット:8、N、1 (8bit Non 1)

 

ラダー図(PLCソフト)、といっても、今回は空っぽ。

これらを、FP0Rへ書き込みます。

 

 

ESP32

必要に応じてシリアル(USB)デバッグをしたいので

ESP32 DevKitCの

シリアル2(IO16,IO17)を使用します。

開発環境は

VisualStudioCode + PlatformIO

です。

 

ModbusRTUのライブラリは
「ModbusMaster」 DocWalkerさんのものを使用させていただきました。

 

 

テスト用プログラムは、こんな感じ。

 

#include <Arduino.h>
#include <ModbusMaster.h>       //Library for using ModbusMaster
ModbusMaster node;              //object node for class ModbusMaster
uint8_t X_STATE=0;
uint8_t X_STATE_BUF=0;
uint8_t Y0[8];
uint8_t RY_NO;
uint8_t bin[8];
//———————————
void setup()
{
    Serial.begin(115200);             //Baud Rate as 115200
    Serial2.begin(115200);             //Baud Rate as 115200
    node.begin(1, Serial2);            //Slave ID as 1
}
//———————————
void dec2bin(uint8_t num){
 uint8_t i;
  for(i=0; i<8; i++){       // バッファクリア
    bin[i] = 0;
  }
  for(i=0; num>0; i++){     // Y0入力に対して変換
    bin[i] = num % 2;       // 配列に格納
    num = num / 2;
  }
}
//———————————
void loop()
{
// 入力 X0-X7
    node.clearResponseBuffer();
    X_STATE = node.readDiscreteInputs(0x0000, 8);       // 8bit 読込み
    X_STATE_BUF = node.getResponseBuffer(0);            // 1Byte 出力
//—–
    dec2bin(X_STATE_BUF);           // X0-X7 入力を配列へ
// コイル出力 Y0–Y7
    for (RY_NO=0; RY_NO<8; RY_NO++){
            node.writeSingleCoil(RY_NO, bin[RY_NO]);
    }
// 確認用 シリアル出力
    Serial.print(X_STATE_BUF);
    Serial.println();
}

 

 

ソース

MOD_BUS_RTU_TEST

 

 

実験動画

ESP32 で ModbusRTU 使ってPLC操作 – YouTube

 

PLCは
IOを増設したり
操作画面を取りつけたり
熱電対を取付けられたり
などなど簡単に周辺機器を取り付けられます。

また、工場現場を考慮して作られているのでノイズ耐性も強力です。

超高速な動作など、シビアな条件でなければ
マイコンからPLCを操作して
マイコン、PLCのそれぞれの長所を有効利用しても良いのではないでしょうか?

最新の投稿記事

加納製作所の商品開発

  • 薪ストーブ
  • メッキアノード
  • 粉体塗料
  • ミニトマト選別機

開発でお悩みの方、

まずは新たな発想を生む
私達の開発環境へお越しください。
知識・経験・ノウハウがそのお悩みを解決します。

開発のご相談