0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いざ、SCADA学習に向けた「PLCデータの中継基地」を自作するぞ!【設計編】

0
Posted at

はじめに

製造現場のDX、スマートファクトリー……。
そんなキラキラした言葉の裏側で、私たちはいつも「データ取得」という泥臭い壁にぶつかります。

「SCADA(監視制御システム)を自作して、モダンなWeb技術で現場を可視化したい!」

そう思っても、高価な産業用PCや、複雑なライセンス、そして「現場の生データ」をどう安定して持ってくるかという課題が立ちはだかります。

「お金がないなら、知恵とコードで解決すればいい」

そんな思いから、私はSimpleEdgeGatewayというリポジトリをGithubに作成しました。

私がやりたいこと

PLCSimからSCADAへ。データが旅をするための道を作る

以前、私はPLCSim(PLCシミュレータ)を自作しました。

これは「データの源泉」です。

そして最終的には、ReactやPythonを駆使した「自作SCADA」という「データの海」に辿り着きたい。

今回作るのは、その間を繋ぐ**「データのパイプライン(中継基地)」**です。

  1. PLCSim(源泉):生の数字を吐き出す
  2. SimpleEdgeGateway(中継):←今回ココ! 数字を意味のある情報に変換・蓄積し、APIで提供する
  3. Self-made SCADA(海):美しく可視化し、現場の意思決定を支える

システム構成図

本プロジェクトの全体像です。
SQLiteを中心に、各機能が自律的に動きながらデータをSCADAへと繋いでいきます。

SimpleEdgeGatewayのこだわり

ただの中継プログラムではありません。
現場で「使われている」ものを目指して、以下の設計を固めました。

  • SQLite-centric: プロセス間連携のハブにSQLiteを据える。設定変更もデータ蓄積も、すべてDBを通すことで堅牢かつ柔軟に。
  • Single Binary: 現場に「Pythonを入れてください」とは言えない。PyInstallerで1つの実行ファイルにまとめ、WindowsでもLinuxでも置くだけで動くポータビリティを。
  • SCADA-Friendly: Zabbix APIのようなJSON-RPCやREST APIを搭載。未来の自分がSCADAを実装する時に「最高に使いやすい!」と思えるインターフェースを。

・・・仕事でzabbixを使っているので、いつかはzabbixのようなアプリを作ってみたいという憧れがありました。。。

現在の状況

「コードを書く前に、徹底的に考える」

まずはGitHubに、アーキテクチャ設計、DB設計、収集ロジック、ロードマップをすべてドキュメント化して公開してみました。

全部やり切れるか、、、不安ではありますが。。。

ドキュメントのステータスは Design Freeze(設計凍結)

つまり、もう迷いはありません。あとは作るだけです。

決意表明

正直、一人でこれだけのスタックをカバーするのは無謀かもしれません。

でも、現場のエンジニアが「自分で作ったシステムで、現場が変わった」と言える世界を、私は見てみたい。

 
このプロジェクトを通じて、以下の3つの自信をつけたいと思っています。
 

  1. お金をかけなくても、オープンソースとエンジニアリングで高度な監視基盤は作れる。
  2. SQLiteはエッジサーバーにとって最強の武器である。
  3. 自作SCADAへの道は、ここから始まる。

 
進捗は振り返り出来るタイミングで順次QiitaとGitHubに残していきたいと思っています。
もし同じように「現場を自分の手で良くしたい」と思っている方がいれば、ぜひ繋がってください!

やるぞ!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?