4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WebエンジニアがSCADAに興味を持ち、PLCを理解するために自作シミュレータを作った話

4
Posted at

はじめに

これまでWebシステムや業務アプリケーションの開発を中心に仕事をしてきましたが、
最近「AI時代において価値のあるエンジニアとは何か」を考えるようになりました。

AIやデータ分析が一般化する中で、
単にデータを「使う側」だけでなく、
データを「生む側」に近いシステムを理解していることが重要になるのではないか
と感じるようになりました。

その中で興味を持ったのが SCADA(監視制御システム) です。

1. なぜSCADA開発に携わりたいと思ったのか

SCADAは、工場設備やセンサーなどから直接データを収集し、
現場の「事実」を扱うシステムです。

Webシステムとは違い、

  • 常に動き続ける
  • 正確さより安定性が重視される
  • データが欠損・遅延することが前提

といった、まったく異なる設計思想を持っています。

AI時代において価値を生むのは
「どんなモデルを使うか」よりも
「どんなデータを、どのように取得しているか」 だと考えています。

その入口にあるSCADAを理解できれば、
長期的にも“つぶしの効く”エンジニアになれるのではないかと思い、
この領域に興味を持ちました。

2. PLCに関する理解整理(Webエンジニア視点)

SCADAを調べる中で、必ず出てくるのが PLC です。

PLCについて学び始めて、最初に戸惑ったのは
Webシステムとは設計思想がまったく違う という点でした。

  • イベント駆動ではなく、スキャン方式
  • 入力(X) / 出力(Y) / 内部リレー(M) / データレジスタ(D)
  • 「1回取れればOK」ではなく、常に値が揺れ続ける世界

特に印象的だったのは、
PLCでは「今この瞬間の値」よりも
状態の変化や継続性 が重要になる点です。

この感覚は、実際に値が流れる様子を見ないと理解しづらいと感じました。

3. 実機が触れないので、PLCシミュレータを作ってみた

PLCを理解するには、実際に触るのが一番だと思いました。
しかし、個人でPLC実機を用意するのはコスト的に現実的ではありません。

そこで、

「お金はないが、PLCには触れてみたい」

という理由から、
PLCの最低限の振る舞いを再現する 簡易PLCシミュレータ
Pythonで自作してみることにしました。

目的は以下です。

  • PLCのスキャンモデルを理解する
  • PLCメモリ(X/Y/M/D)の役割を体感する
  • SCADAが「PLCからデータを取得する」とはどういうことかを掴む

4. シミュレータの構成

シミュレータは、以下の3要素で構成しています。

PLCシミュレータ

  • X / Y / M / D メモリを保持
  • スキャンサイクルでラダー風ロジックを評価
  • Modbus TCPで外部と通信

デバイスシミュレータ

  • センサーを模した値の変動
  • ON/OFFパターン
  • パルス信号(瞬断)

通信

  • Modbus TCP(pymodbus使用)

設定はすべてYAMLで定義し、
コードを書き換えずに構成を変更できるようにしています。

5. 作って分かった「PLCデータ取得」の本質

シミュレータを作ってみて強く感じたのは、

「PLCからデータを取得する」とは、
単に値を読むことではない

という点です。

  • 値は常に変わる
  • 一瞬しか立たないビットがある
  • 通信が途切れる前提で考える必要がある

SCADAは、
こうした 不完全で揺らぐデータ を前提に設計されているシステムだと実感しました。

先輩から
「まずはPLCからデータを取得する箇所を理解することが重要」
と言われた意味が、ようやく腑に落ちました。

6. 今後やりたいこと

次のステップとして、以下を考えています。

  • 状態遷移(OFF→ONなど)をイベントとして切り出す
  • メッセージングによる上位システム連携
  • SCADA的なタグ管理・履歴管理

PLC → SCADA → データ活用
この流れを一通り理解できることを目標にしています。

おわりに

本記事は、
「SCADAに興味はあるが、PLCがよく分からない」
というWebエンジニア視点での試行錯誤の記録です。

同じような立場の方の参考になれば幸いです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?