【SiOt/python】SiOt(簡易PLC)をPCとpythonのソケット通信を使って制御する方法【モジュール化編】

まず、SiOとは

誰でも簡単にPLC=制御装置を作ることができるものです。

非常に安価であり、簡単な改善であれば高級なPLCを使わずに安く装置を導入することが可能です。

その中のシリーズでSiOtはイーサネット通信が可能なタイプなのでPCとの相性が非常に良いです。

SiOt(簡易PLC)をpythonで制御することでPCが苦手なセンサー、モーター制はSiOtがやり、PC側は得意な画像処理や信号処理をすることができます。

本記事はwindows PCを使い、python言語でSiOtを制御する方法を紹介するものです。

前回は準備、通信確認を行いました。

準備・通信確認編

今回はクラス化し実用可能なものを作成したので使い方を紹介します。

githubに公開しましたので使ってみてください。

GitHub - rabbitcaptain/SiOt_socket: SiOtをpythonからソケット通信でコマンドを送り操作するモジュール
SiOtをpythonからソケット通信でコマンドを送り操作するモジュール. Contribute to rabbitcaptain/SiOt_socket development by creating an account on GitHub.

importと使い方

SiOt_connection_tool.py

というのが今回作ったコードなります。

各々のpythonコードと同じ階層においていただき、以下のコードでimportとインスタンス化を行います。

インスタンス化する際には

SiOt_TCP(SiOtのIP, SiOtのポート)

という設定の仕方となります。

今回のケース

IP:100.100.1.100

ポート:40001

import SiOt_connection_tool

ST = SiOt_connection_tool.SiOt_TCP("100.100.1.100", 40001)

インスタンス化した後はそれぞれの関数を呼び出して、SiOtの状態を把握したり、変更したりします。

例えば、I/O 状態確認する際には以下のコードになります。

response = ST.IO_state_check()

次からは1つ1つのコマンドの使い方と出力結果の見方を紹介します。

SiOtのコマンド一覧

SiOtに用意されているコマンドは以下の通りです。

  1. I/O 状態確認
  2. FLAG 状態確認
  3. Ether フラグ確認
  4. 稼動時間確認
  5. OUT カウンタ値確認
  6. FLAG カウンタ値確認
  7. RUN 状態確認
  8. Ether フラグ変更

以上となっています。

では、1つずつ解説していきます。

I/O 状態確認

コードの書き方

response = ST.IO_state_check()

出力

'00000000000000000000000000000000'

以下のように0=OFF、1=ONが状態を表しており、

左から16文字→INPUTの状態

後ろ16文字→OUTPUTの状態

を表しています。

FLAG 状態確認

コードの書き方

response = ST.FLAG_state_check()

出力

'000000000000000000000000000000000000000000000000'

0=OFF、1=ONが状態を表しており、

左からFLAG1~FLAG48のON/OFF状態を表しています。

Ether フラグ確認

コードの書き方

response = ST.Ether_flag_check()

出力

'00000000'

0=OFF、1=ONが状態を表しており、

左からEtherFLAG1~FLAG8のON/OFF状態を表しています。

稼動時間確認

コードの書き方

response = ST.Ether_flag_check()
DAY = int(response[0:4], 16)
Hour = int(response[4:6], 16)
Min = int(response[6:8], 16)
Sec = int(response[8:10], 16)
DAY, Hour, Min, Sec

出力

(0, 0, 49, 26)

それぞれが16進数の数字となっており、以下のように起動してから時間が左から

日、時、分、秒

の順で並んでいます。

今回の実装の例はそれぞれを別々で取り出して10進数の数字に直しています。

OUT カウンタ値確認

コードの書き方

response = ST.OutCounter_check()

出力

'0000000000000000000000000000000000000000000000000000000000000000'

OUT1~OUT16まで4文字ずつでカウント数が表現されています。

カウントは16進数で0000~FFFFまでカウントされます。

FLAG カウンタ値確認

コードの書き方

フラグは1~48までありますが、出力が16個分しかないので、

送るnの数値によって、出力を切り替えるようになっています。

response = ST.FlagCounter_check(0)

出力

'0000000000000000000000000000000000000000000000000000000000000000'

出力はOUT1~OUT16まで4文字ずつでカウント数が表現されています。

カウントは16進数で0000~FFFFまでカウントされます。

RUN 状態確認

コードの書き方

response = ST.Run_check()

出力

'10'

最初の1文字の数値で以下のようにSiOtの稼働状態を知ることができます。

Ether フラグ変更

コードの書き方

ON/OFFしたいEtherフラグの数値をON=1, OFF=0で定義した文字列を引数に設定します。

以下の例では4つ目のEtherフラグをONにするというしじになります。

response = ST.EtherFlag_change("00010000")

出力

出力はありません。

終わりに

SiOは非常にコスパの良い制御装置で特にSiOtはラズパイ等の安価なPCとも相性が良いのですが、いかんせん情報が少ないと感じましたので記事させていただきました。

ぜひ使ってみてください。

コメント

  1. […] […]

タイトルとURLをコピーしました