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. 移行できる場合がありますが、ライブラリ、デバイスドライバー、通信ポート、ファイルパス、自動起動設定などの違いを確認する必要があります。
関連ワード
Web・データ記述系技術とは、Web画面を構築したり、機器やシステムの間でデータを受け渡したりするために使用する言語・データ形式の総称です。
HTML、CSS、JavaScriptは主にブラウザへ表示する画面を構成し、PHPやPerlはサーバー側の処理に使用されます。JSONやXMLは、異なる機器やシステム間で情報を交換する際のデータ形式として利用されます。
ハカルプラスでは、Webサーバー上で動作する監視・管理システムのほか、SBCや組込み機器へWebサーバー機能を搭載し、パソコンやタブレットのブラウザから計測値や設備状態を確認できるシステムを開発しています。
各技術の主な役割
| 技術 | 主な役割 |
|---|---|
| HTML | 文章、見出し、表、入力欄など、Web画面の構造を記述する |
| CSS | 文字、配置、余白、画面サイズに応じた表示などを設定する |
| JavaScript | 画面更新、入力チェック、グラフ表示、サーバー通信などを行う |
| JSON | システム間でデータを受け渡すための軽量なデータ形式 |
| XML | 階層構造や属性を持つデータを記述する形式 |
| PHP | Webサーバー側でデータ処理、画面生成、データベース連携を行う |
| Perl | 文字列処理、ファイル変換、既存Webシステムの処理などを行う |
HTML・CSS・JavaScriptの役割
HTML
HTMLは、Webページの構造を記述するマークアップ言語です。見出し、文章、表、画像、リンク、入力フォームなどに意味を持たせ、ブラウザへ表示する情報の構成を定めます。
計測・制御システムでは、計測値一覧、設備状態、警報履歴、設定画面、実績検索画面などの構造を作るために使用します。
CSS
CSSは、HTMLで作成した画面の見た目や配置を設定します。文字サイズ、余白、表の幅、ボタン配置などを調整し、パソコンやタブレットなどの画面サイズに応じた表示にも対応できます。
設備監視画面では、見た目だけでなく、数値の読みやすさ、異常状態の識別、押し間違いの防止などを考慮して設計します。
JavaScript
JavaScriptは、主にブラウザ上で動作するプログラミング言語です。画面全体を再読込みせずに計測値を更新したり、グラフを描画したり、入力内容を確認したりできます。
- 計測値・設備状態の自動更新
- 設定値の範囲チェック
- 警報発生時の表示切替え
- グラフ・トレンド表示
- Web APIとのデータ通信
JavaScriptは画面表示や操作を担当します。設備の安全制御やインターロックは、PLCや安全回路側で成立させます。
JSONとXMLによるデータ連携
JSON
JSONは、項目名と値の組合せで情報を表現するデータ形式です。記述が比較的簡潔で、JavaScript、Python、C#、PHPなど多くの言語から扱えるため、Web APIやクラウド連携で広く使用されます。
例えば、機器番号、計測日時、重量、温度、電力、運転状態、警報コードなどをまとめて送受信できます。
XML
XMLは、タグを用いてデータの項目や階層構造を表現する形式です。JSONより記述量が多くなる傾向がありますが、複雑な階層、属性、文書構造を明確に表現できます。
既存の業務システム、機器設定ファイル、外部システムとのデータ交換などで使用されています。
JSONとXMLのどちらを使用するかは、接続先の仕様、既存資産、データ構造、検証方法などに応じて決定します。
データ仕様で決める項目
JSONやXMLでシステム連携する場合は、形式だけでなく、データの意味と扱いを明確にする必要があります。
- 項目名とデータ型
- 単位と小数点以下の桁数
- 日時形式とタイムゾーン
- 文字コード
- 必須項目と任意項目
- 正常・異常を示す状態コード
- 欠損値や未計測値の表現
- 仕様変更時のバージョン管理
送信側と受信側で単位や日時の解釈が異なると、通信自体は成功していても誤った実績が登録される可能性があります。
PHP・Perlによるサーバー側処理
PHP
PHPは、主にWebサーバー側で動作するプログラミング言語です。ブラウザから受け取った条件を処理し、データベースの検索、登録、更新、HTMLの生成などを行います。
- 計測データや実績の検索・表示
- 利用者認証と権限管理
- 設定値やマスター情報の登録
- データベースとの連携
- Web APIの構築
Perl
Perlは、文字列処理やファイル処理を得意とするプログラミング言語です。初期のWebシステムでは、CGIを利用したサーバー側処理に広く使用されました。
新規システムでは別の言語が選ばれることも多い一方、長期間稼働している設備や業務システムには、Perlで作成された処理が残っている場合があります。
既存システムを更新する場合は、ソースコード、実行環境、外部ライブラリ、文字コード、データベースなどを確認します。
Webシステムの基本構成
一般的なWebシステムは、ブラウザ、Webサーバー、アプリケーション、データベースによって構成されます。
- ブラウザがWebサーバーへ要求を送る
- サーバー側プログラムが要求内容を処理する
- 必要に応じてデータベースや計測機器から情報を取得する
- HTMLやJSONとして結果を返す
- ブラウザが画面を表示・更新する
専用アプリケーションを各パソコンへインストールせず、対応ブラウザから利用できることがWeb方式の利点です。
組込み機器へのWebサーバー搭載
計測機器、IoTゲートウェイ、SBCなどへWebサーバー機能を搭載し、同じネットワーク上のパソコンやタブレットから機器へアクセスする構成もあります。
- 現在値・設備状態の確認
- 通信条件や設定値の変更
- 警報・通信履歴の閲覧
- CSVファイルの取得
- 機器情報やソフトウェア版数の確認
専用ソフトが不要になる一方、組込み機器ではCPU、メモリ、ストレージに制約があります。大量のデータ処理や複雑な画面を機器内だけで行わず、必要に応じて上位サーバーと役割を分担します。
リアルタイム表示の考え方
ブラウザ画面へ計測値を表示する場合、一定周期でサーバーへ問い合わせる方法や、サーバーから更新情報を送る方法があります。
更新周期を短くすると表示の追従性は高まりますが、機器やネットワークの負荷も増加します。監視対象の変化速度や利用者数に応じて更新方法を決定します。
また、通信が途絶えた際に最後の受信値を現在値のように表示し続けないよう、受信時刻や通信異常を明示します。
通信異常とデータ再送
上位システムとの連携では、通信断、サーバー停止、タイムアウトなどを前提として設計します。
- 送信前のデータを一時保存する
- 復旧後に未送信データを再送する
- データ番号で重複登録を防止する
- 受信結果を応答として返す
- 通信履歴やエラー内容を記録する
単に同じデータを再送すると二重登録になる可能性があります。送信元と受信先の双方で、データを一意に判別できる番号を管理します。
セキュリティ上の注意点
Webシステムには、不正アクセス、情報漏えい、設定改ざんなどへの対策が必要です。
- HTTPSによる通信の暗号化
- 利用者認証と権限管理
- 入力値やアップロードファイルの検証
- 不要な機能・通信ポートの停止
- パスワードや認証情報の適切な管理
- 操作履歴・通信履歴の保存
- OSやライブラリの更新管理
- 設備ネットワークと外部ネットワークの分離
組込み機器のWeb画面をインターネットへ直接公開することは避け、VPN、ファイアウォール、接続元制限などを含めて構成します。
既存Webシステムの更新
長期間稼働しているWebシステムでは、古いPHPやPerl、対応が終了したブラウザ、旧式のデータベースが使用されている場合があります。
更新時は、画面だけでなく、データ形式、文字コード、外部システムとの通信、帳票、利用者権限などを確認します。
新しい環境へ単純に移すのではなく、現在利用されている機能と不要になった機能を整理し、保守しやすい構成へ見直します。
ハカルプラスの対応
ハカルプラスでは、Webサーバー、組込み機器、PLC、計測機器、FAパソコン、データベースを組み合わせた監視・管理システムを構築しています。
HTML、CSS、JavaScriptによる画面、JSON・XMLによるデータ連携、PHP・Perlなどによるサーバー側処理、組込み機器へのWebサーバー搭載、既存Webシステムの改修などに対応します。
Web技術だけでなく、計測、機器通信、データ保存、PLC制御、基幹システム連携まで含め、現場から上位システムまでをつなぐ構成を検討します。
よくある質問
Q. ブラウザを閉じても計測データの収集は続きますか?
A. サーバーや組込み機器側でデータを収集する構成であれば、ブラウザを閉じても収集を継続できます。ブラウザだけで処理している場合は継続できないため、役割分担を明確にします。
Q. 通信が切れた場合、画面にはどのように表示されますか?
A. 最終受信時刻、通信異常、データ更新停止などを表示し、古い値を現在値と誤認しないようにします。
Q. JSONの項目を後から追加できますか?
A. 追加できますが、受信側が未知の項目を無視できるか確認が必要です。既存システムへの影響を抑えるため、仕様のバージョン管理を行います。
Q. Web画面から設備を操作できますか?
A. 指令をPLCへ送る構成は可能ですが、安全条件、権限、二重操作防止、通信断時の動作を設計する必要があります。安全制御はPLCや安全回路側で成立させます。
Q. 古いPHPやPerlのシステムを新しい環境へ移行できますか?
A. ソースコード、ライブラリ、データベース、文字コード、外部連携を確認し、改修または再構築を検討します。既存環境と一定期間並行運用する場合もあります。
関連ワード
- API連携
- TCP/IP系アプリケーションプロトコル(HTTP/SMTP/FTP/TFTP/NTP)
- MQTT
- ネットワーク通信基盤技術(TCP/IP/UDP/IP/PPP/Ethernet)
- 多言語対応(海外言語対応)
Visual Basic系プログラミングとは、Microsoftが開発したVisual Basicの文法や開発環境を利用して、Windowsアプリケーションや業務支援ツールを作成することです。
代表的なものには、.NET環境で使用するVisual Basic、Excelなどの自動化に用いるVBA、旧来のWindowsアプリケーション開発で使用されたVisual Basic 6.0以前があります。
ハカルプラスでは、Windowsパソコンを利用した設備監視、計測データ収集、実績管理、帳票出力、Excel集計などのシステム開発にVisual Basic系言語を活用してきました。
Visual Basic系言語の種類
Visual Basic
現在のVisual Basicは、Microsoftの.NET環境で動作するプログラミング言語です。C#などと同じ.NETの実行環境やライブラリを利用できます。
ボタン、入力欄、一覧表、グラフなどを備えたWindowsアプリケーションを開発でき、設備監視、実績検索、設定管理、データベース連携などに利用されます。
VBA
VBAは「Visual Basic for Applications」の略で、Excel、Access、WordなどのMicrosoft Officeアプリケーションに組み込まれたプログラミング言語です。
ハカルプラスでは、主にExcelを利用した集計や帳票作成の自動化に活用しています。
- 計測データや製造実績の集計
- CSVファイルの読込み・変換
- 日報・月報・帳票の作成
- グラフの自動作成
- 複数ファイルの一括処理
- 入力内容のチェック
旧Visual Basic
旧Visual Basicは、Visual Basic 1.0から6.0までのWindowsアプリケーション開発環境です。特にVisual Basic 6.0は、業務システムや設備監視ソフトウェアで広く利用されました。
現在、新規システムで採用する開発環境ではありませんが、長期間稼働している産業設備では、Visual Basic 6.0で開発されたソフトウェアが残っている場合があります。
Visual Basicの主な用途
Visual Basicは、設備を直接高速制御するよりも、PLCや計測機器から取得した情報を表示・保存・管理するパソコン側のソフトウェアに適しています。
- 計測値や設備状態のモニター表示
- 計量設定値・品種情報の管理
- 製造実績・計量実績の保存
- 警報・操作履歴の記録
- 実績検索・グラフ表示
- CSV・帳票の出力
- PLC・計測器との通信
- 生産管理・基幹システムとの連携
設備の運転やインターロックはPLCが担当し、パソコンソフトが監視、設定、保存、帳票作成を担当する構成が一般的です。
画面アプリケーションの開発
Visual Studioの画面設計機能を利用し、設備監視画面、設定画面、実績検索画面、保守画面などを構築できます。
画面を作成する際は、情報を表示できることだけでなく、操作ミスを防ぐことも重要です。
- 運転状態や警報を識別しやすく表示する
- 設定できる値の範囲を制限する
- 重要な操作では確認画面を表示する
- 利用者権限によって操作範囲を分ける
- 通信異常時に古い値であることを表示する
PLC・計測機器との通信
Ethernet、TCP/IP、シリアル通信、メーカー提供ライブラリなどを利用し、PLC、計量コントローラ、計測器、バーコードリーダーなどと通信できます。
実際のシステムでは、正常に通信できる場合だけでなく、相手機器の停止、ケーブル断線、タイムアウト、不正なデータなども考慮します。
- 接続失敗時の再接続
- 応答待ちのタイムアウト
- 受信データの範囲・形式確認
- 通信状態やエラー内容の表示
- 通信履歴の保存
- 復旧後の自動再開
パソコンソフトが停止しても設備を安全に停止できるよう、安全制御やインターロックはPLC側で成立させます。
データベースとの連携
Microsoft SQL Server、Access、Oracleなどと接続し、計測値、製造実績、設定情報、警報履歴などを保存・検索できます。
データベース連携では、登録できなかった場合の再試行、重複登録防止、処理途中での異常終了などを考慮します。
複数のデータを一つの実績として登録する場合は、途中まで登録された状態を残さないよう、トランザクションを利用することがあります。
Visual BasicとVBAの使い分け
| 項目 | Visual Basic | VBA |
|---|---|---|
| 実行環境 | Windows・.NET | ExcelなどのOffice |
| 主な用途 | 独立した監視・業務システム | Office作業の自動化 |
| 画面 | 専用操作画面を構築できる | シートや簡易フォームを使用する |
| 連続運転 | 常駐システムを構築しやすい | 長時間の常時監視には不向きな場合がある |
| 複数人利用 | サーバーやDBと組み合わせやすい | ファイル共有では競合に注意が必要 |
複数設備から継続的にデータを収集する場合はVisual Basic、既存のExcel帳票を利用した一時的な集計や定型作業の自動化にはVBAが適しています。
VBAを使用する際の注意点
VBAは短期間で業務を自動化しやすい一方、処理が複雑になると、担当者以外が修正できない状態になりやすい傾向があります。
また、マクロを含むファイルはセキュリティ上の理由から実行を制限されることがあります。配布元、保存場所、マクロの有効化方法を管理する必要があります。
次のような場合は、独立したアプリケーションやデータベースシステムへの移行を検討します。
- 複数人が同時に利用する
- 24時間連続してデータを収集する
- 処理するデータ量が増えている
- ファイル破損や上書き競合が発生する
- 利用者権限や操作履歴が必要である
旧Visual Basicシステムの更新
Visual Basic 6.0などで開発された既存システムは、パソコンやOS、通信機器、データベースの更新によって動作しなくなる可能性があります。
更新前には、次の項目を確認します。
- ソースコードの有無
- 外部ライブラリ・ActiveX部品
- PLCや計測機器との通信仕様
- データベースと保存データ
- 帳票・プリンターの設定
- 現在使用している機能
- Windowsや周辺機器への依存
Visual Basic 6.0と現在のVisual Basicは、名称や文法に共通点がありますが、実行環境や画面部品の仕組みが異なります。単純変換ではなく、既存機能と現在の運用を確認したうえで再設計する場合があります。
更新時の動作確認
旧システムを更新する際は、画面が起動することだけでなく、設備との通信や実績処理が既設時と同様に動作することを確認します。
- PLC・計測器との接続
- 設定値の送受信
- 実績の保存と検索
- 警報・通信異常時の動作
- 帳票やCSVの出力内容
- 日付変更・月替わり・年替わりの処理
- パソコン再起動後の自動復旧
新旧システムを一定期間並行運転し、保存件数や集計結果を比較する方法もあります。
長期運用に必要な管理
産業用ソフトウェアを長期間使用するためには、ソースコードだけでなく、開発環境や外部ライブラリも管理します。
- ソースコードと変更履歴
- Visual Studioと.NETのバージョン
- 使用する外部ライブラリ
- Windowsとデータベースのバージョン
- 通信設定と接続機器
- 設定ファイルと認証情報
- インストール・バックアップ・復旧手順
パソコン故障時に同じ環境を再構築できるよう、インストーラー、設定情報、データベースのバックアップを準備します。
ハカルプラスのVisual Basic系開発
ハカルプラスでは、Windowsパソコンを使用する計測・制御システムや業務支援システムで、Visual Basic系言語を活用してきました。
設備監視、PLC・計測機器との通信、実績保存、データベース検索、帳票出力、Excel VBAによる集計、旧Visual Basicシステムの更新などに対応しています。
Visual Basicだけに限定せず、既存資産、動作環境、処理性能、保守体制に応じて、C#、C++、Pythonなども組み合わせてシステムを構築します。
よくある質問
Q. Visual Basic 6.0のソースコードがなくても更新できますか?
A. 実行中の画面、設備との通信、データベース、帳票などを調査して再構築できる場合があります。ただし、既存仕様の解析に多くの工数が必要になることがあります。
Q. VBAで作ったExcelを複数人で同時利用できますか?
A. ファイル共有だけでは、上書き競合やデータ破損が起こる可能性があります。複数人利用では、データベースや専用アプリケーションとの組み合わせを検討します。
Q. パソコンを更新しても既存のVisual Basicソフトを使用できますか?
A. Windows、外部ライブラリ、通信ドライバーなどに対応していれば動作する場合があります。実機での確認が必要であり、互換性がない場合は改修や再設計を行います。
Q. Visual Basicで設備を直接制御してもよいですか?
A. 通信による指令は可能ですが、即時性や安全性が必要な制御はPLC側で完結させることが基本です。パソコンソフトは監視、設定、実績管理を担当します。
Q. Visual BasicからC#へ移行できますか?
A. 可能です。同じ.NET環境の機能を利用できますが、単純な文法変換ではなく、画面、通信、データベース、外部部品を含めた移行設計が必要です。
関連ワード
C系プログラミング言語とは、C言語を起点として発展した、またはC言語に近い記法を持つプログラミング言語や開発技術の総称です。
C、C++、C#、Visual C++は、同じ言語の新旧版ではありません。Cはマイコンや組込み機器などハードウェアに近い処理、C++は複雑なネイティブソフトウェア、C#は主に.NET上で動作するWindowsアプリケーションの開発に利用されます。Visual C++はプログラミング言語ではなく、Microsoftが提供するC/C++向けのコンパイラ、ライブラリ、デバッガなどを含む開発ツール群です。
C言語
C言語は、メモリ配置やビット単位の処理、周辺回路のレジスタ操作など、ハードウェアに近い制御を記述しやすいプログラミング言語です。処理時間やメモリ使用量を管理しやすいため、マイコン、計測器、通信機器などの組込みソフトウェアで広く利用されています。
ハカルプラスでは、組込み機器用ソフトウェアの開発言語として主にC言語を使用しています。センサやA/D変換器からの計測値取得、演算処理、接点・アナログ出力、通信制御、操作入力、表示更新、異常監視、データ保存などを実装します。
組込み開発では、単に処理結果が正しいだけでなく、決められた周期内に処理が完了すること、メモリ不足や異常値によって停止しないこと、電源断や通信異常から復帰できることが重要です。
C++
C++は、C言語との互換性を意識しながら、クラス、継承、テンプレートなどの機能を備えたプログラミング言語です。通信、画面、演算、機器制御などを機能単位に分け、共通処理を再利用しやすい構造を構築できます。
一方、機能を抽象化しすぎると、処理時間やメモリ使用量を把握しにくくなる場合があります。組込み用途では、動的メモリの使用、例外処理、ライブラリの規模、起動時間などを確認し、対象機器の性能やリアルタイム性に合わせて使用範囲を決めます。
ハカルプラスでは、組込み開発でC言語を使用するケースが多く、C++の採用は限定的ですが、対象機器、既存資産、使用するソフトウェア基盤などに応じて選定します。
C#
C#は、Microsoftが開発した.NET向けのプログラミング言語です。Windows上で動作する監視画面、設定ツール、実績管理、帳票出力、データベース連携、通信アプリケーションなどの開発に適しています。
画面部品、ファイル操作、データベース接続、ネットワーク通信などの機能を利用しやすく、FAパソコン上で動作する業務・設備支援ソフトウェアを比較的構造化して開発できます。
ハカルプラスでは、パソコンを使用した一部のソフトウェア開発でC#を採用しています。PLCや計量コントローラから取得した実績の保存、設定値の管理、帳票作成、上位システムとのデータ連携などに使用することがあります。
ただし、Windowsや.NETのバージョン、接続ドライバー、外部ライブラリなどに依存するため、FAパソコン更新時には互換性を確認する必要があります。
Visual C++
Visual C++は、Microsoftの統合開発環境であるVisual Studioに含まれる、C/C++向けの開発ツール群です。一般にMicrosoft Visual C++、またはMSVCと呼ばれるコンパイラや標準ライブラリ、デバッガなどを使用してWindows向けソフトウェアを開発します。
高速な演算処理、機器との通信、既存のC/C++ライブラリの利用、Windows APIを使用した処理などに適しています。古い設備システムでは、特定バージョンのVisual C++、MFC、ActiveX、専用通信ライブラリなどに依存している場合があります。
既設ソフトウェアを更新する際は、ソースコードだけでなく、コンパイラのバージョン、ビルド設定、32ビット・64ビット環境、ランタイム、外部ライブラリ、接続機器用ドライバーまで確認します。
計量・制御システムでの使い分け
一つの計量・制御システムでも、装置内のすべてを同じ言語で開発するとは限りません。例えば、組込み機器内部の周期処理をC言語、FAパソコン上の実績管理をC#、既存の通信・演算ソフトウェアをVisual C++、帳票や補助ツールをVisual Basic .NETで構築することがあります。
言語選定では、次の条件を整理します。
- マイコン、CPU、FAパソコンなどの実行環境
- 必要な応答速度と処理周期
- 使用できるメモリやストレージ容量
- PLC、計測器、センサなどとの通信方式
- 画面、帳票、データベースの有無
- 既存ソースコードやライブラリの活用可否
- 将来のOS・端末更新と保守体制
制御周期が短く、ハードウェアを直接扱う部分ではC言語などのネイティブコードが適し、画面やデータベース連携を中心とする部分ではC#などが適する場合があります。言語単体の優劣ではなく、システム内で担う役割によって使い分けます。
制御ソフトウェアで重視する設計
計量・制御システムでは、正常時の処理だけでなく、異常値、通信断、電源断、機器応答の遅延などを想定した設計が必要です。
例えば通信処理では、応答を無期限に待たずタイムアウトを設け、再送回数を超えた場合は異常として扱います。受信データについても、範囲、データ長、チェックコード、機器状態などを確認し、異常な値をそのまま制御へ使用しないようにします。
組込み機器では、一定周期で実行する処理、割込みで行う処理、通信やデータ保存など時間を要する処理を分け、制御周期を乱さない構成にします。パソコン用ソフトウェアでは、画面処理と通信・保存処理を分離し、通信待ちによって操作画面が停止しないように設計します。
既設ソフトウェアを更新する際の注意点
既設ソフトウェアを改修する場合、使用言語が分かるだけでは十分ではありません。同じCやC++でも、開発環境、コンパイラ、ライブラリ、OS、CPUによってビルド方法や動作が異なります。
更新前には、次の情報を確認します。
- ソースコードと実際に稼働しているプログラムの対応
- 開発環境、コンパイラ、ビルド条件
- 外部ライブラリとライセンス
- 通信仕様と接続機器
- 設定ファイル、データベース、帳票の形式
- 32ビット版・64ビット版の違い
- 異常時動作と復旧手順
ソースコードが残っていても、必要なライブラリや開発環境が失われていると、同じプログラムを再構築できない場合があります。そのため、実行ファイルだけでなく、ソースコード、設計資料、ビルド手順、使用部品のバージョンを一体で管理することが重要です。
ハカルプラスの対応範囲
ハカルプラスでは、要求仕様、使用機器、OS、制御対象、既設システムの構成に応じて、プログラミング言語や開発環境を選定します。
ソフトウェア単体ではなく、計測回路、組込み基板、制御盤、PLC、計量コントローラ、タッチパネル、FAパソコン、通信、データベースまで含め、機器間の役割分担や異常時動作を整理します。
既存ソフトウェアの改修では、ソースコード、開発環境、通信仕様、接続機器、データ形式などを調査し、現行環境を維持するか、新しい環境へ移行するかを検討します。
よくある質問
Q. ソースコードがあれば古いソフトウェアを再構築できますか?
A. ソースコードだけでは再構築できない場合があります。使用していたコンパイラ、外部ライブラリ、ビルド設定、機器用ドライバー、ライセンスなども必要です。
Q. 古いVisual C++のソフトウェアを新しいWindowsへ移行できますか?
A. 対象OS、コンパイラ、MFCや外部ライブラリ、32ビット・64ビット環境、接続機器のドライバーなどを確認して判断します。ソース修正やライブラリの置換が必要になる場合があります。
Q. C言語で開発された組込みソフトウェアをC#へ置き換えられますか?
A. 実行環境や役割が異なるため、単純な置き換えはできません。マイコン上の制御はC言語のまま残し、画面やデータ管理部分だけをC#で更新するなど、機能を分けて検討します。
Q. 制御ソフトウェアの応答が遅い場合、言語を変更すれば改善しますか?
A. 必ずしも言語だけが原因とは限りません。通信周期、データベース処理、画面更新、ログ保存、機器の応答時間、プログラム構造などを調査して原因を切り分けます。
Q. 異なる言語で開発された機器やソフトウェアを連携できますか?
A. 通信プロトコル、データ形式、タイミング、異常時処理が合っていれば連携できます。言語の違いよりも、機器間のインターフェース仕様を明確にすることが重要です。