Technology
Python
(Python:パイソン)
Python(パイソン)は、読みやすく簡潔な文法を特長とする汎用プログラミング言語です。
データ処理、Webシステム、AI・機械学習、業務自動化、IoTなど幅広い分野で利用されています。C言語などと比べ、同じ処理を比較的少ない記述量で表現しやすく、試作から実用システムまで柔軟に活用できます。
ハカルプラスでは、IoTゲートウェイ、通信処理、データ変換、データベース連携などにPythonを活用しています。LoRa無線機対応IoTゲートウェイ「HLR-GW」でも、Pythonで開発したソフトウェアが動作しています。
Pythonの主な特長
読みやすく簡潔に記述できる
Pythonは、処理内容を比較的分かりやすく記述できるように設計されています。プログラムの構造を把握しやすく、試作、機能追加、修正、複数人での開発に適しています。
ただし、記述が簡潔であることと、産業用システムの設計が容易であることは同じではありません。通信異常、データ欠損、電源断、セキュリティ、長期保守などは、用途に応じて設計する必要があります。
豊富なライブラリを利用できる
Pythonには、標準機能に加え、通信、データベース、数値計算、画像処理、Web、AIなどの外部ライブラリがあります。
- CSV、JSON、XMLなどのデータ処理
- TCP/IPやシリアル通信
- データベースへの接続
- 集計、統計、グラフ作成
- Webアプリケーション
- 画像処理、AI・機械学習
既存ライブラリを適切に利用することで開発期間を短縮できますが、保守状況、対応OS、ライセンス、脆弱性などを確認して採用します。
WindowsやLinuxで利用できる
Pythonは、WindowsやLinuxなど複数のOSで動作します。パソコンやサーバーだけでなく、SBCやIoTゲートウェイにも搭載できます。
一方、GPIO、シリアルポート、USB機器などのハードウェアを扱う場合は、OS、デバイスドライバー、ライブラリによって設定や動作が異なります。
IoT・データ収集での活用
IoTシステムでは、センサ、計測器、PLCなどから取得したデータを、上位システムで利用できる形式へ変換して保存・送信します。
Pythonは、次のような処理に利用できます。
- 計測器や設備からのデータ取得
- 値の換算、補正、単位変換
- 機器番号や時刻情報の付加
- CSVやデータベースへの保存
- 上位システムやクラウドへの送信
- 通信断時の再接続、再送、一時保存
- 運転ログや警報履歴の記録
接続機器ごとに異なる通信方式やデータ形式を変換し、複数のシステムをつなぐゲートウェイソフトウェアにも適しています。
計測・制御システムにおける役割
Pythonは、データ収集、変換、保存、表示、通知、上位システム連携に適しています。
一方、厳密な周期処理、高速な機械制御、人の安全に直接関係する制御には、PLC、マイコン、リアルタイムOSなどを使用するのが一般的です。
- PLCが自動運転やインターロックを行う
- 計量コントローラが重量演算や計量制御を行う
- マイコンがセンサ入力や機器制御を行う
- Pythonがデータの収集、変換、保存を行う
- FAパソコンやサーバーが表示や帳票を管理する
各技術が得意とする処理を分担することで、制御の安定性を維持しながら、遠隔監視やデータ活用の機能を追加できます。
通信処理の設計
Pythonでは、Ethernet、RS-232C、RS-485などを介して、PLC、計測器、無線機器、上位システムと通信できます。
実用システムでは、正常に受信できる場合だけでなく、応答がない、途中で切断する、不正なデータを受信する、同じデータが再送されるといった状況を想定します。
タイムアウト、再接続、再送回数、チェックサム、データ長の検査、通信状態の記録などを設けます。再送によって同じ実績を二重登録しないよう、データ番号や時刻などを用いて重複を判定することも重要です。
データベースとの連携
Pythonは、Microsoft SQL ServerやOracleなどのデータベースと連携し、計測値、製造実績、設備状態、警報履歴などを登録・検索できます。
データベースへ接続できない場合に備え、データを端末内へ一時保存し、復旧後に再登録する構成もあります。この場合は、保存容量、送信順序、重複防止、時刻情報の扱いを設計します。
複数の登録を一つの処理として扱う場合は、途中で失敗した際に一部のデータだけが残らないよう、トランザクションを利用します。
常駐プログラムとしての運用
IoTゲートウェイなどでは、Pythonプログラムを長時間連続して動作させます。異常終了した場合に自動で再起動できるよう、OSのサービス管理機能や監視プログラムを利用します。
ただし、再起動を繰り返すだけでは原因を把握できません。異常時刻、直前の通信、例外内容、再起動回数などをログへ残し、保守時に確認できるようにします。
ログが増え続けてストレージを圧迫しないよう、保存期間、ファイルサイズ、世代数を決めてローテーションします。
PythonとC系言語の使い分け
PythonとC・C++では、得意とする用途が異なります。
| 項目 | Python | C・C++ |
|---|---|---|
| 主な用途 | 通信、データ処理、Web、IoT、AI | マイコン制御、組込み機器、高速処理 |
| 開発性 | 短い記述で試作しやすい | ハードウェアに近い制御を行いやすい |
| 実行性能 | 処理内容によっては遅くなる | 高速・省メモリに構成しやすい |
| リアルタイム性 | 厳密な周期保証には向かない場合がある | OSや構成によって高い即時性を実現しやすい |
一つのシステムを同じ言語だけで開発する必要はありません。マイコン側をC、ゲートウェイ側をPython、FAパソコン側をC#とするなど、機器と機能に応じて使い分けます。
長期運用で管理する項目
Python本体や外部ライブラリは更新されるため、導入時に動作した環境を将来も再構築できるように管理します。
- Pythonと外部ライブラリのバージョン
- OS、SBC、周辺機器の構成
- ソースコードと設定ファイル
- 通信仕様とデータ形式
- ライブラリのライセンス情報
- インストール、更新、復旧手順
- 変更履歴と動作確認結果
インターネットへ接続できない現場でも再構築できるよう、必要なパッケージやインストール資材を保管する場合もあります。
セキュリティと更新
ネットワーク接続機器では、認証、通信暗号化、アクセス制限、パスワードや秘密鍵の管理、不要なサービスの停止などが必要です。
Pythonや外部ライブラリに脆弱性が見つかった場合は、単純に最新版へ更新するのではなく、OS、接続機器、既存プログラムとの互換性を検証します。更新失敗時に元の環境へ戻せるよう、バックアップと切り戻し手順も準備します。
ハカルプラスのPython開発
ハカルプラスでは、IoTゲートウェイ、計測データ収集、通信データの解析・変換、データベース保存、モニタリング、上位システム連携などにPythonを活用しています。
LoRa無線機対応IoTゲートウェイ「HLR-GW」では、LoRa無線で収集した計測データを処理し、Ethernetを介してパソコンや上位システムで利用できる形へ受け渡します。
Pythonだけでなく、C、C++、C#、Visual Basic系言語などを組み合わせ、マイコン、SBC、PLC、FAパソコン、データベースを含むシステム全体として構成を検討します。
よくある質問
Q. Pythonで作ったプログラムを24時間連続運転できますか?
A. 可能ですが、例外処理、自動再起動、ログ管理、メモリやストレージの監視など、長時間運転を前提とした設計が必要です。
Q. ネットワークが切断された場合、計測データは失われますか?
A. 端末内へ一時保存し、通信復旧後に再送する構成にできます。保存容量、重複登録防止、再送順序などを事前に設計します。
Q. PythonでPLCを直接制御できますか?
A. 通信によってデータや指令を送受信できますが、安全性や即時性が必要な制御はPLC側で完結させるのが基本です。
Q. Pythonやライブラリを更新し続ける必要がありますか?
A. システムの接続環境や脆弱性によって判断します。産業用機器では、安易に更新せず、互換性を検証したうえで計画的に適用します。
Q. 既存のPythonシステムを別のSBCやOSへ移行できますか?
A. 移行できる場合がありますが、ライブラリ、デバイスドライバー、通信ポート、ファイルパス、自動起動設定などの違いを確認する必要があります。