PCベース制御とTwinCATがIndustry4.0やIOTに便利なSolutionを提供しています。今回はTwincATのTF3500 TwinCAT Analyticsの機能を紹介します。TwinCAT AnalyticsはData収集・Logging・Webベースで可視化などの統合的なarchitecture実現します。
いまはまずその中にTF3500がどうやってデータ収集するのか、どんなProtocol使ってるのか、実装するにはどんな設定する必要なのかを説明したいと考えています。
TF3500とは?
TwinCAT Analyticsが装置のProcess IOやアプリケーションデータ(PLCの変数など)をTask Cycleの周期と同期し収集して、つまりリアルタイムに近いパーフォーマンスです。
そのAnalyticsがMQTT ClientでMQTT メッセージをBrokerにPublishすることも可能だし、Local Hard-disk上で保存することも可能です。
MQTT経由なら MQTT-Modeです。
Local保存なら File-modeです。
ちなみに今回はMQTT-Mode使います。
MQTTとは?
MQTTはざっくりいいますと、Broker・Publisher・Subscriberの役があります。
Brokerは”Sever”役です。すべてのデバイスをこのBrokerを経由でDataを送信・リクエストします。
Publisherは送信者です。データをBrokerへ送信するのはPublishといいます。
Subscriberは通信者です。ほしいデータをBrokerにリクエスト送ります。
次は、TopicとMessageという言葉があります。
Topicは各ClientがBrokerへ送りたい”データの名前”になります。
Messageはそのデータの中身になります。
MQTT Clientは同時にPublisher・Subscriberでもあり、例えばStation1から温度データをBrokerへPublishします。
/Station1/Temperature
そしてStation2も自分の温度データPublishし、同時にStation1の温度データももらいたいです。Station2がやることはこのリクエストをBrokerへ送るだけです。
/Station1/Temperature
つまり、各Devicesは自分のデータをどこのDevicesへ送るかも知り必要もない、自分がもらってたデータはどこからきたのも知る必要もありません。Clientが増えるだとしても手間はかかりません。
このMQTTはについて昔にも書いてますので、もしよかったらどうぞ:
こちらはMQTTのドキュメントです:
https://mosquitto.org/documentation/
System要求
Functions
注意するのはMQTT ClientでもFileで保存でもBinaryのみです。
TwinCAT設定
GVLで変数を追加します。
MQTTL経由でBrokerにPublishしたい変数は以下のAttributeを追加します。
{attribute ‘TcAnalytics’}
コンパイルします。
Data Logger設定
次はANALYTICS>Add Data Loggerします。
Data Loggerを開いて、Parameters(Init)のTab開きます。
中でBrokerと接続する大事なパラメータがいくつあります。
- Data Format:MQTT_BINARYするかFILEにするか。今回はMQTT_BINARYします。
- MQTT Host Name:BrokerのIP・Host Nameを設定します。Localサーバー設置しますので127.0.0.1します。
- MQTT Tcp Port:Default 1883します。
- MQTT Main Topic:これは実際SubscriberがこのTopicをみてBrokerへデータをリクエストします。今回もDefaultMainTopicのDefaultします。
TopicはDefaultMainTopic/PlcStream1/Bin/Txになります。
PlcStream設定
追加されるとData Logger 1が作成されます。
PlcStream1を開いて、SelectionのTabでPublishする変数をCheck入れます。
TLSのTabでセキュリティの設定などできます。今回はシンプル行きますのでNo Securityします。
そしてConfigをActiveし、Loginしてください。
Install MQTT Broker In Windows10
下記のLinkから自分のOSに合わせてEXEをダウンロードし、インストールします。
https://mosquitto.org/download/
インストール終わったら次は管理者権限でコマンドラインを起動し、先MQTT ServerをインストールしたDirectoryまでに移動します。
以下のコマンドでBrokerをインストールします。
mosquitto install
すでにインストールされたあらThe specified service already exists.のメッセージが出てきます。
次は以下のコマンドでBrokerを起動します。
net start mosquitto
Port開放
WIN+Rでfirewall.cplを実行します。
ここで見えるのはいつも通りのControl PanelのFirewall 設定画面です。
左のAdvanced settingsをクリックします。
ここで新しいPortを開放の設定などします。
まずInbound Rulesをクリックします。
右のActionsでNew Rule..を選択します。
Rule TypeはPortを選択し、Nextします。
MQTT はTCPベースなので、TCPを選び、Local portsはここでMQTTのDefaultの1883にします。
Allow the connectionを選び、Next。
Rule適用の範囲はAllでOKです。
最後はわかりやすくするようにRuleのNameもつけましょう。
これで新しいRulesが追加されました。
Port確認
Win+Rでコマンドラインを起動します。
以下のコマンドでConnectionがActiveしてるPort一覧できます。
netstat -a
1883が見えるのであればOKです。
もしPortが開放してないとき…
先と同じようにControl Panel > System and Security>Windows Firewallを開きます。
右にあるAllow an app or feature throught windows firewallをクリックします。
先追加されたMQTT Service PortはちゃんとCheck入ってるかどうかを確認しましょう。
再起動もしたほうがよいと思います。
テスト
Brokerをセットアップした状態でData Logger 1を開いて、OnlineのTabでMQTT Connection StatusがConnectedになったらOKです。
インタネットでMQTT Clientのテストソフトもたくさんありますし、自分でPythonやC++で組んでもそこまで難しくないし、直接mosquittoコマンドからでもできます。
Softwareから
まずSoftwareから始まりましょう。
今回は使ったのはこのmqtt-explorerです。
自分のOSに合わせてダウンロードします。
インストール終わったらソフトを起動します。
Brokerに合わせて設定し、Connect。
接続OKになったら画面が自動に変わります。
DafaultMainTopicは私最初にSetupしたTwinCAT Targetです。
使い方難しくないで、クリックしたTopicはSubscribeするのようなイメージです。
DataはRaw Binaryなので自分でEncoderする必要があります。
mosquittoコマンドから
使用するのはmosquitto_subコマンドです。
https://mosquitto.org/man/mosquitto_sub-1.html
管理者権限でコマンドラインを起動し、MQTT ServerをインストールしたDirectoryまでに移動します。
そして以下のコマンド実行したら、Descの内容がJSON Formatもらいます。
mosquitto_sub -h localhost -t DefaultMainTopic/PlcStream1/Bin/Tx/Desc
コマンドのTopic パラメータを変えれば、今度はDataのほうも取れます。
ですが、Raw Binaryデータなので、人間ではよめませんね。
mosquitto_sub -h localhost -t DefaultMainTopic/PlcStream1/Bin/Tx/Data
はーい、お疲れ様です。
こっちらはSample Codeです。
https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT%20Project_TF3500_1.tnzip