三菱シーケンサの通信方式に対応した[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードを使用した、エッジアプリの作成を学びます。

商品名をシーケンサと言う三菱電機製のPLCは、様々な外部との通信をサポートしています。シーケンサの下まわりに繋がるセンサや機器との通信(フィールド通信とかフィールドバスなどと呼ばれる)と、PLCの持つ情報を主に上位の情報機器に供給する通信(かつては上位通信と呼ばれた)に分類できますが、ia-cloud・Node=REDノードで使用するのは、この上位の情報機器とのやり取りをつかさどるシリアル通信やTCP/IP通信で、MCプロトコールと呼ばれるもので、仕様書が公開されています。また三菱電機は、このMCプロトコールの中でのイーサネット対応(TCP/IP通信)の通信規格を統合し、新たに「SMLP」通信規格として発表し規格を公開しています。

三菱シーケンサの通信方式に対応した[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードは、この「MCプロトコール」と「SMLP」に対応した通信を行い、シーケンサ からのデータを取得します。これらの通信は、シーケンサ の動作自体には直接影響を与えないように設計されており、通信でデータを取得することで、シーケンサのスキャンタイムや応答時間には影響は出ることはありません。

また安全性を考慮し、今のところ、データの書き込み機能は搭載しておりませんので、このノードを使用してシーケンサの内部データを書き換えることはできません。

では、データの取得方法を学んでいきましょう。

ノードの選択

他のセンサ・制御機器のノードと同様、[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードも[iaCloud devices]カテゴリーにあります。見つけにくい場合は、ノードを検索ウインドウに「三菱」か「シーケンサ」と入力すると簡単に見つかります。下図のフローは、本項で作成するフローです。

[三菱通信設定ノード]

[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードをダブルクリックしプロパティ設定ウインドウを開くと、一番上に「通信ノード」とあり、三菱SLMPとMCプロトコールを実行する通信設定のノードを選択する必要があります。この[三菱通信ノード]は、接続する三菱シーケンサ の通信ポート一つに対して、一つの[三菱通信ノード]を追加し、それを複数の[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードで使用できます。既存の[三菱通信ノード]がある場合は、それを選択します。最初は存在しないので、鉛筆マークボタンから新規作成し、追加します。

[三菱通信ノード]には基本的なプロパティとして、以下の二つのプロパティがあり、必要なデータアクセスの状況により設定をします。通常はデフォオルトのままとしてください。

共通プロパティ

  • 通信周期:[通信ノード]がシーケンサと通信をし、取得すべきデータ全部を更新する周期です。1秒以上で設定ください。デフォルトは5秒です。
  • 連続読出数:[通信ノード]は、シーケンサのデバイスを連続読出しで読出しますがその連続数です。デフォルトは64ワードです。
  • 連続読出限定:読出しデバイスに設定されていないデバイスにアクセスしないようにすることができます。通常チェックなしです。

この三菱通信設定ノードは、三菱SMLPのTCP/IP通信と、シリアル通信MCプロトコールのシリアル通信の形式4(アスキー形式)と形式5(バイナリー形式)に対応していますので、必要に応じて選択してください。

通信設定

三菱シーケンサ のエンジニアリングソフトウエアGX Works等で設定したパラメータを、[通信ノード]に設定します。三菱電機のシーケンサには多くの機種が存在しますが、基本の通信仕様は共通である為、FXシリーズ、Qシリーズ、最新のiQ-Rシリーズなどからデータ収集を行うことができます。

  • TCP通信
    • Netアドレス:接続するシーケンサのIPアドレスを設定します。
    • ポート番号:接続するシーケンサが使用するポート番号を設定します。(通常は、1025が使われます。)
  • シリアル形式4
    ここでの設定にないパラメータは、、ストップビット: 1、チェックサム: 有効、で固定です。シーケンサ側の設定をこれに合わせてください。
    • ポート:シリアル通信ポートです。例えばラズパイに、USBシリアル通信ドングルが挿入されていると、選択肢の中にそれが現れます。
    • ボーレート:シリアル通信の速度です。シーケンサ側の設定と合わせてください。
    • パリティ:シリアル通信のパリティビット仕様です。シーケンサ側の設定と合わせてください。
  • シリアル通信形式5
    • シリアル通信形式4と同じ設定となります。

アクセス経路

三菱シーケンサは、シーケンサ ネットワーク間を渡ってデータのアクセスが可能です。その倍のアクセス経路を記述します。通常は、Node-REDと同一のネットワークに接続されたシーケンサにアクセスしますので、空欄のままにしておいてください。

[三菱シーケンサ]ノード

以下の説明では、三菱シーケンサ Melsec FX5Uをイーサネットで接続し使用しています。FX5Uには以下のデバイスを、操作するラダープログラムを作成し動作させています。

  • M200 〜 207:ランダムに変化するビット情報8点
  • D102/103: 1秒ごとにカウントアップするカウンタ。60秒でゼロクリア。
  • D104/105: 1秒ごとにカウントアップするカウンタ。600秒でゼロクリア。
  • D106/107: 1秒ごとにカウントアップするカウンタ。1時間でゼロクリア。
  • D108/109: 1秒ごとにカウントアップするカウンタ。24時間でゼロクリア。
  • D200 〜207: 固定の文字列。(8ワードのShiftJIS)

オブジェクト設定

次の「データの設定」タブで設定したデータをia-cloudオブジェクトにまとめて、メッセージ出力する際のプロパティを設定します。

  • 定期収集周期:
    データ項目の設定で設定されたデータ一式を定期的にia-cloudオブジェクトとして送出する周期を、秒単位で設定します。これは[通信ノード]で設定した下位の通信周期とは異なり、ia-cloudオブジェクトを送出する周期です。送出する時点での最新値を出力します。
  • 非同期収集有り:
    収集周期以外に、データに変化があった場合にia-cloudオブジェクトを送出するオプションです。設定されたデータ項目のどれかに変化があった場合、ia-cloudオブジェクト全体を出力します。
  • objectキー:ia-cloudオブジェクトにつけるユニークなキー文字列です。
  • objectの説明:ia-cloudオブジェクトにの任意の説明です。この説明も都度、ia-cloudオブジェクトに内包されて送出されます。

データ設定

ia-cloudオブジェクトとして送出する、データ項目を設定します。データ項目は、取得するデータ形式と、そのデータを保持しているシーケンサのデバイスとそのデバイス番号で設定します。

三菱電機のシーケンサには多くの機種が存在しそれぞれの機種ごとに、利用できるデバイスの種別やデバイス番号の範囲が異なります。以下の設定で、接続中のシーケンサに存在しないデバイス種別やデバイス番号を読み出すと、通信エラーが発生しデータの取得ができません。特にiQ-Rシリーズの拡張デバイス範囲にはアクセスできません。デバイスの範囲には注意ください。

  • データ構造型:任意のデータ型名称を付けられますが、空欄にはできません。通常、デフォルトのままで使用ください。
ビット

シーケンサのビットデバイスを読み、そのON/OFF状態を表すデータを取得します。ビット情報は、1ビットの場合、true/falseの論理値で、複数ビットの場合は、論理値の配列で出力されます。

  • データ名称:
    データに付与する名称。オブジェクト内でユニークであること。
  • デバイス:
    対象のデバイスを表す文字列。(M, X, Y, L, B, SM)
  • デバイス番号:
    読み出すデバイス番号(複数ビットの場合は、先頭のデバイス番号)。シーケンサ のプログラムでは、デバイス種別によって、10進・16進表記がありますが、ここでは全て10進表記で設定ください。(X0A → X10)
  • ビット数:
    読出す連続のビット数
  • 正論理/負論理:
    ビットの論理的評価。正論理:1 → true・0 → false、負論理: 1 → false・0 → true
数値
  • データ名称:
    データに付与する名称。オブジェクト内でユニークであること。
  • デバイス:
    対象のデバイスを表す文字列。(D,W)
  • デバイス番号:
    読み出すデバイス番号(2ワードデータの場合は、先頭のデバイス番号)。
  • ワード長:
    読出すデータのワード長。(1word:1ワードデータ、2wl:2ワードの下位ワード先頭、2wb:2ワードの上位ワード先頭)
  • データ形式:
    読み出すデータの符号形式。(符無:符号なし2進数、符付:符号付き2の補数形式、BCD:BCD形式)
  • ゼロ・倍率:
    取得したデータにつけるオフセットと倍率。(dataValue = 読み値 x 倍率 + ゼロ となります。)
  • 単位:
    データに付与する単位:MKS単位系で記述することが推奨されています。
数値列
  • データ名称:
    データに付与する名称。オブジェクト内でユニークであること。
  • デバイス:
    対象のデバイスを表す文字列。(D,W)
  • デバイス番号:
    読み出す数値列が格納されている先頭のデバイス番号。
  • 数値列の長さ:
    読み出す数値列の数値の数。
  • ワード長:
    読出すデータのワード長。(1word:1ワードデータ、2wl:2ワードの下位ワード先頭、2wb:2ワードの上位ワード先頭)
  • データ形式:
    読み出すデータの符号形式。(符無:符号なし2進数、符付:符号付き2の補数形式、BCD:BCD形式)
文字列
  • データ名称:
    データに付与する名称。オブジェクト内でユニークであること。
  • デバイス:
    読み出す文字列が格納されているデバイスを表す文字列。(D,W)
  • デバイス番号:
    読み出す文字列が格納されている先頭のデバイス番号。
  • ワード数:
    文字列が格納されているデバイスのワード数。(文字数ではなく、エンコードによってワード数は変化するので注意。)
  • エンコード
    読み出す文字列の符号化形式。(シフトJIS(sJIS)、EUC-JP(EUCjp)、UTF-8(UTF8) のいずれか)

[三菱シーケンサ A&E]ノード

以下の説明では、モディコンPLC M221「TM221CE16U」をイーサネットで接続し使用しています。PLCには以下のデバイスを、操作するラダープログラムを作成し動作させています。

  • M308:10分間に1回、50秒間onする、アラームテスト信号
  • M318:1時間に1回、50秒間onする、アラームテスト信号
  • M328:1日に1回、50秒間onする、アラームテスト信号
  • M338:1日に1回、50秒間onする、アラームテスト信号(M328とはタイミングが異なる)
オブジェクト設定

次の「データの設定」タブで設定した警保やイベント情報をia-cloudオブジェクトにまとめて、メッセージ出力する際のプロパティを設定します。

  • 定期収集周期:
    データ項目の設定で設定された警報やイベント情報を定期的にia-cloudオブジェクトとして送出する周期を、秒単位で設定します。これは[通信ノード]で設定した下位の通信周期とは異なり、ia-cloudオブジェクトを送出する周期です。送出する時点での最新値を出力します。
  • 非同期収集有り:
    収集周期以外に、警報やアラーム状態に変化があった場合にia-cloudオブジェクトを送出するオプションです。通常チェックありで使用します。
  • objectキー:ia-cloudオブジェクトにつけるユニークなキー文字列です。
  • objectの説明:ia-cloudオブジェクトにの任意の説明です。この説明も都度、ia-cloudオブジェクトに内包されて送出されます。

データ設定

a-cloudオブジェクトとして送出する、データ項目を設定します。データ項目は、取得するデータ形式と、そのデータを保持しているシーケンサのデバイスとそのデバイス番号で設定します

  • データ構造型:ia-cloud仕様で規定される、Alarm&Eventデータモデル固定です。
アラーム&イベント設定
  • デバイス:
    対象のデバイスを表す文字列。(M, X, Y, L,B, SM,D,W)ワードデバイスの場合、0かそれ以外かで判断します。
  • デバイス番号:
    読み出す警報&アラームが格納されているデバイス番号。
  • 論理:
    ビットの論理的評価。正論理:1 → true・0 → false、負論理: 1 → false・0 → true
  • A&Eコード:
    警報やイベントを表す番号やコード。(一般に警報番号(数字以外もOK)を設定することを想定しています。)
  • A&Eの説明
    警報やイベントの内容を表す文字列。(一般に警報メッセージを設定することを想定しています。)

ia-cloudへの格納

ノードの選択の項で示したフローでは、[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードの出力メッセージをia-cloud接続ノードに接続して、ia-cloudサービスへのデータ格納を実施しています。

ia-cloud接続ノードの設定は、他のデータ収集ノードとの接続と同一です。一度どこかで、ia-cloudサービスの接続URLとID・パスワードを保持する設定ノード[接続先CCS]をお作成した場合は、それを流用して設定が可能です。ia-cloudサービスが、どの[ia-cloud接続]ノードからの接続かを認識できるように「データソースのユニークキー」を設定しておきます。

設定完了後[デプロイ]ボタンを押すと、[ia-cloud接続]ノードはia-cloudサービスへの接続を行い成功すると[ia-cloud接続]ノードのステータスが「接続済み」となります。また、定期収集や非同期収集のタイミングで[三菱シーケンサ ]ノードと[三菱シーケンサ A&E]ノードからデータが[ia-cloud接続]ノードへ送られると、ia-cloudサービスへのデータ格納を行い、[ia-cloud接続]ノードのステータスが「要求完了」となります。また、[debug]ノードを[ia-cloud接続]ノードに接続しておくと、ia-cloudサービスが応答したメッセージを確認することも可能です。

カウンタのグラフ表示

サンプルで示したフローは、シーケンサ データを直接ダッシュボードのグラフ表示をします。この左下の[三菱シーケンサ ]ノードでは

  • D102/103: 1秒ごとにカウントアップするカウンタ。60秒でゼロクリア。
  • D104/105: 1秒ごとにカウントアップするカウンタ。600秒でゼロクリア。

を収集しています。これを[データ抽出]ノードで、データ名称「1分リセット」「10分リセット」のデータを抽出し、標準ダッシュボードの[chart]ノードでグラフ化します。

[chart]ノードの使用法について、「ダッシュボードアプリの作成入門編」を参照ください。とりあえず、赤枠のグラフのタイトル設定と、データ凡例の表示の設定をしておきましょう。以上の設定でデプロイし、ダッシュボードを表示すると、10秒毎に1秒カウントデータがグラフ表されます。データは、1分毎と10分毎にゼロリセットされる為、下図のような鋸波上のグラフが見られます。