IoTの端末に利用される制御装置PLC(シーケンサー)ついて
機械の制御に欠かせない装置にPLC(シーケンサー)があります。IT関連においては表に出てこず、なじみがありませんが近年のIoTにおいて必須の装置の一部です。本記事では、そんな装置であるシーケンサー(PLC)をご紹介します。
シーケンサーという名称は三菱電機の商品名です。ただし商標登録はされていません。現在は各社からPLCが販売されており、これらもシーケンサーとして同義語で販売されています。本記事では、そんな装置であるPLCをご紹介します。
PLC(シーケンサー)とは
PLCは"Programmable Logic Controller"(プログラマブルロジックコントローラ)の略でリレー回路を制御する装置です。シーケンサーとも呼ばれています。筆者は初期の頃この装置を使用したことがあり、当時はシーケンサーと呼んでいました。つい最近、IoT関連のシステムを構築することになりこのシーケンサーを扱うことになりましたが今ではPLCという言葉が一般的です。
IoTにおいて重要な構成要素のひとつがPLCです。IoTは"Internet of Things"の略でモノのインターネットと言われます。
IoTにおけるPLCの位置付けはシステムの末端の信号の入出力データを担うところです。
従来インターネットに接続されていなかった様々な機器(家電製品、電子機器、多様なセンサーを組み込んだ機器や機械に組み込まれている駆動装置)がネットワークを通じて専用サーバやクラウドサービスに接続され、相互に情報交換されるしくみを総合して“モノのインターネット”(IoT)といわれます。PLCは先ほども言いましたようにIoTにおいては末端の信号のデータの取得、制御出力に今やかかせないものに進化しています。(図1)
図1
あらゆる場面で多様な目的を達成するための機械が使われています。コンピュータがまだなかった時代では、歯車、カム、リンクを使用した機械機構によるものでしかありませんでした。それらは水車小屋の小麦引き、機械式時計、蒸気機関車などもそうです。
現代はもちろんそうではありません。マイクロプロセッサを搭載したコンピュータがあらゆる”もの”に組み込まれ、入力された信号、データによってプログラムの指示どおりに動作します。マイクロプロセッサを搭載したコンピュータの組み込み形態には2種類あります。
ひとつは専用のCPUと入出力I/Oを利用する方法。これらはワンチップ化して組み込まれる場合も多種あります。電子時計や小さな家電製品がそれにあたります。もうひとつはPLCで、PLCは工場内の環境や生産設備の自動運転によく使われます。
最近ではIoTを活用したスマート農業で栽培環境データとその制御で使われています。
どちらの組み込み形態も”状態”、”動作”を制御するにはプログラムが必要です。CPUとI/Oを搭載したボードではOSを搭載していれば専用のプログラム言語でプログラミングし、入出力の制御が可能になります。OSがなくても独自でマルチタスクを実装し、プログラミングすることもできます。
PLC内部にはCPUが搭載されており、基本的はCPUとI/Oのハードウエアー構造とほぼ同じです。さらに信号の入力と出力装置、電源装置、通信装置、記憶装置も内蔵しており基本的はコンピュータと類似しています。コンピュータと同じならパソコンのようなものでも良いのではとなりますが、PLCでは入出力制御に特化していることからその制御を容易に実現できるところが違います。
PLCの場合は一般的にラダープログラムと呼ばれる表記でプログラミングし、制御を行います。さらにCPUとI/OとPLCを両方実装したハイブリッド型もあり、どの形態においてもメリット、デメリットがあります。
メリット:
[CPUとI/Oを搭載したボード]
・プログラムで計算結果に基づいてI/O(入出力)をコントロールできます。
・インテリジェンスな制御が可能です。また産業用IoT向けに専用のIntel製CPUを搭載されたボードも出てきています。
[PLC]
・入出力制御を容易に実現できる。
・制御の変更は配線を変更せずにできる。
デメリット:
[CPUとI/Oを搭載したボード]
・専用のボードを用意するので、他に流用できない。
・高度なプログラミングが必用。
[PLC]
・メーカーによってラダー図の表現が統一されていない。
初期のPLC(シーケンサー)
筆者の当初の職歴はCPUが実装された通信ボードやI/O制御ボードの制御機系のエンジニアでした。4ビットから16ビットのCPUを使い、マルチタスクでプログラミング言語はC、Assembler(アセンブラ)、PL/M等を使っていました。
端子台から結線されたI/O制御ボードからのデータ取得やリレー回路ON、OFFはプログラミングで行うのが常套手段でした。そこに、入出力制御をもっと容易に制御できて集約したものがPLCで当初は三菱がシーケンサーという名称で販売していました。
初期のPLCがそれにあたります。制御プログラムは回路図のような記号で動作を規定できるものでした。
三菱シーケンサーの歴史(参考)
https://www.mitsubishielectric.co.jp/fa/products/cnt/plc/pmerit/history.html
この年表では2020年にネットワークの統合化をされており、まさしくIoT時代へと進化しています。
PLCの制御
現在のPLCはリレー回路の制御だけにとどまらず、ネットワークに接続しTCP/IP通信により情報のやり取りができるためIoTとの親和性が高くなっています。また、デジタル信号ユニット、アナログ入出力の拡張ユニットの増設も簡単にできるようになっています。
筆者は制御の内容によってCPU専用ボードとPLCを使い分けてきました。過去世代のPLCは1サイクルにおける入力と出力をコントロールするだけでしたが、現在はCPU、メモリー容量も増大しA/Dコンバータのデジタル信号もそのまま入力可能です。またその値によって外部装置に対して出力を制御できます。さらに収集した値をネットワーク接続でサーバへ送ることによって、サーバ側で解析しその結果からフィードバック制御を受けることが可能です。
サーバ側でAIによる解析結果によってその指示をPLC内蔵装置に送信することで、末端のPLCを内蔵した装置はその指示に従うだけでインテリジェンスな動作が可能になります。IoTを活用したスマート農業にはかかせないものになっています。温度、湿度管理から水分、肥料の投入制御でPLCが活躍しています。
PLCのプログラミングとは
PLCのプログラミングの記述方法は手続き言語(java、python、C#、VB等)とは異なっています。ラダープログラムと呼ばれるもので、ラダー言語(ラダー図)によって表現します。リレー回路と類似な記述が出来る為、これをマスターすればどのメーカーのものでも制御可能です。(I/Oのポート番号などはメーカーにより変わります)
筆者は最初のころこのラダー図はあまりなじめず、ラダー図からニーモニック(図2)である命令語(Assemblerのニーモニックのようなもの)に変換、逆変換して使っておりました。未だに、ラダー図は作成しますが、ニーモニックによるプログラムも出力しています。ニーモニックは、メーカーにより方言がありますがそのメーカーが出しているマニュアルに従えばすぐ覚えられます。通常はラダー図(図4)で組めれば十分です。
図2
パナソニックのFP7シリーズのシンボリック(記号)とニーモニックの一覧の一部です。(図3)
図3
ラダー図は両サイドの母線間にシンボリック(図3)を接続しひとつの接続線を作ります。接続線は複数存在し、独立しているものもあれば連結しているものもあります。シンボリックはほぼどのメーカーも共通ですが、ニーモニック名はメーカー固有です。手続き言語系とは違ってリレー回路がわかればある程度初見でも想像がつきます。
図4
信号の流れは母線間の左から右へ、処理は上から下へと時系列で繰り返し(スキャン)流れます。スキャン速度は装置の仕様により異なります。数マイクロ秒~数ミリ秒で、上位にあるものと下位にあるものは時間差が生じるので注意が必要です。とはいってもほぼリアルタイムといっても問題ありません。数マイクロ秒の時間差も考慮しなければならない場合は、上下のどの位置に書くかも重要で検討する必要があります。
手続き言語で書かれたプログラミングでマルチタスクやスレッドを実装したアプリケーションのように並列で処理され、プロセス間で連携しているようなイメージに近いです。初めてラダー図を触られてそれが思い通りに動作したときは感激すると思います。
図5はスイッチの開、閉スイッチと扉の位置センサーを入力情報としてモータを制御するイメージ図です。
図5
現在のPLCではイーサネット、TCP/IPによるサーバとの接続が当たり前となっています。管理サーバから現地端末のPLCに接続し、I/Oの入出力が可能となります。これにより管理サーバから取得したデータ値によってシーケンサーに対してフィードバックが可能になります。(図6)
図6
サーバとの接続プロトコル(通信仕様)は多種存在します。残念ながらRFC(インターネット関連の技術に関する仕様)ではPLCとのプロトコルは規定されておりません。しかしながら、一番柔軟なのがMCプロトコル通信でほぼどの日本のメーカー(三菱、キーエンス、パナソニック、オムロン)のPLCにも搭載されています。
MCプロトコル通信は三菱が提唱したプロトコルでTCP/IPのソケットインターフェースで用意に自身で実装できます。コマンド形態、I/Oのレジスタ値もほぼ同様にメーカー間で互換性があります。MCプロトコル通信はここではその内容は詳しくはとりあげませんが、MCプロトコル通信を実装しておけばメーカーの装置を変えてもほぼ同様の通信制御ができます。(ただしラダー図はメーカー専用のプログラムが必用です)
機器のマニュアルに通信仕様が載っていますので、TPC/IPでソケット通信プログラムを書いたことがある方は用意に作成できます。またネット上にMCプロトコル通信を利用し、サンプルプログラムを公開されているエンジニアも多くおられますので参考になります。
https://syoshinsya.mydns.jp/syosinsya/_TryPgm/MCprotocol.html
https://qiita.com/kiki0817/items/343ee28a7cf73a14ebca
PLCのさらなる発展
PLC(シーケンサー)は当初は単独で機械に組みこまれてきましたが、今はクラウド上のサーバに多数のPLCがIoT機器の一部として接続されています。クラウドサーバからPLCを監視し、その内容をAIで解析して他システムへ連携するということが当たり前のようになってきています。また、端末側にもCPUボード+AI推論組み込み+PLCで端末側の処理も高度化してきています。
つい最近では、ロームが単独で電子機器の故障予知が可能な「オンデバイス学習人工知能(AI)チップ」を開発しています。
「ローム、リアルタイムに故障を予知する超低消費電力のオンデバイス学習AIチップを開発」このようなAIチップを搭載したPLCも今後出てくるかもしれません。
ITエンジニアを目指す方はPLC(シーケンサー)も触る場面がありましたら是非経験を積んで得意とする分野を広げてマルチなエンジニアを目指されてはと思います。
ドメインが実質0円(年間最大3,882円お得)になるサーバーセット割特典、
V2プランが初期費用無料・15%OFF(月額390円→331円)ブラックフライデーセールを展開中です。
最新のキャンペーンはこちらから
※ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。
医療メーカーで新素材研究開発後、電機メーカーで制御器系システム開発を経てIT系マルチエンジニアをしています。またデザイン思考を実践し、アート思考などのいろんな思考方法に興味があります。