アマゾン ウェブサービス(AWSクラウド) のIot CoreにPLCをMQTT接続してメッセージの交換をしてみます
IoT Coreへデータを送ることが出来ればAWSの各サービス(Lambda、DynamoDBなど)でデータを扱えるようになります
一例としてPLCからDynamoDBへデータをInsertする方法を別ページに書いています
AWSのアカウント作成してIoT Coreでクライアント証明書と秘密鍵をダウンロードします
手順は使い方ナビのAWS IoT CoreにMQTT接続するための準備を参考にしてください
ダウンロードはこちらから
OMRON公式 MQTT通信ライブラリ ダウンロードページ
SysmacStudioでPLCのネットワークの設定を次のように設定ます
簡単な流れは
NOTE
コマンドプロンプトで手打ちがめんどくさい場合はファイル名を入力するところでエクスプローラからファイルを摘まんでコマンドプロンプトへドラッグするとファイル名が入力されます
詳しい手順はMQTTライブラリのマニュアルの「A-3-6 CPUユニットのセキュアソケット設定」を参照して下さい
ライブラリのマニュアルはセットアップ後にC:\OMRON\Data\Lib\MQTT_Commフォルダの下に作成されています
SysmacStudioのメニューから[プロジェクト]-[ライブラリ]-[ライブラリ参照]を選んでライブラリ参照ダイアログでダウンロードしたMQTTライブラリを追加します
MQTTクライアント(MQTTClient)でAWSと接続を確立します
trigger1をONにしてConnectedがONになれば接続中となります
接続中の状態でメッセージの交信が可能となります
ConnectionSettings.IpAdrはAWS IoT Core IoTの設定画面のエンドポイントを記入します

| 入力変数 | 説明 |
|---|---|
| ClientID | 任意の文字列 |
| ConnectionSettings.IpAdr | AWS IoT Core のエンドポイントを記述 |
| ConnectionSettings.PortNo | TLSUse=trueのとき8883 TLSUse=falseのとき1883 |
| ConnectionSettings.TLSUse | セキュアソケット通信を使用する |
| ConnectionSettings.TLSSessionName | TLSSession0~59 コマンドプロンプトで「tlsconfig setSessionInfo /id 0 ....」と設定したidの番号をTLSSessionの後ろに付けます |
| ConnectionSettings.UserName | 証明書を使うときは不要 |
| ConnectionSettings.Password | 証明書を使うときは不要 |
| ConnectionSettings.illCfg.WillFlag | Will機能を使用する |
| ConnectionSettings.CleanSession | 接続切断後に再接続時にクリアして接続 |
| KeepAlive | キープアライブタイマ |
| Timeout | タイムアウト(s) |
| DiscardMsgTime | メッセージ破棄時間(ms) |
パブリッシュ命令(MQTTPubString)でメッセージを送信します
トピックをサブスクライブする」タブのトピックフィルターに"test/#"を入力して[サブスクライブ]をクリックすると下のサブスクリプションに"test/#"が追加されます
これで受信待ち状態になっています
NOTE
#はワイルドカードです
受信するトピックの名前が"test/"で始まるトピックを受信したときにメッセージが表示されます
| 入力変数 | 入力変数 |
|---|---|
| ClientReference | MQTTClientのClientReferenceと共通の変数 |
| PacketID | パケットID |
| MsgType | 0=PUBLISH 1=PUBREL |
| PubMsg | 送信メッセージ |
| PubSettings.PubQoS | QoSレベル |
| Topic | トピック名 |
| Timeout | タイムアウト |
サブスクライブ命令(MQTTSubString)でメッセージを受信します
MQTTSubString命令はEnable入力なのでtrigger3がONしている状態で受信待ち状態になります
| 入力変数 | 入力変数 |
|---|---|
| ClientReference | MQTTClientのClientReferenceと共通の変数 |
| SubQoS | 0=PUBLISH 1=PUBREL |
| Topic | トピックを指定 |
| Timeout | タイムアウト |
「トピックに公開する」タブのトピック名に"test/message1"と入力して、メッセージペイロードに送信メッセージを記入して[発行]をクリックします
サブスクリプションに送信したメッセージが表示されます
| 出力変数 | 値 | 説明 |
|---|---|---|
| Subscribed | TRUE | サブスクライブ中 |
| RcvMsg | {$L $"message$": $"AWS IoT Core コンソールからの挨拶$"$L} | 受信メッセージ |
| Status | 0 | 実行状態 |
| Received | 受信時TRUE | メッセージ受信 |
| RcvTopic | test/message1 | トピック名 |