MQTTとは、センサ、設備、IoTゲートウェイ、クラウドなどの間で、少量のデータを効率よく送受信するための通信プロトコルです。設備側がデータを送信し、必要なシステムがそのデータを受信するPublish/Subscribe方式を採用しています。
通信量を抑えやすく、回線が不安定な環境や多数端末の接続に適しているため、温度、重量、電力、設備状態、異常通知などのIoTデータ連携に利用されます。
ハカルプラスでは、送信データ、周期、通信回線、クラウド仕様を確認し、トピック設計、QoS、認証、通信断時の保存・再送を含むMQTT連携を検討します。
MQTTの主な用途
- 設備計測値のクラウド送信
- 異常・警報の即時通知
- 複数拠点の設備状態収集
- 電池駆動センサの少量データ通信
- IoTゲートウェイと上位システムの連携
- 設備設定・指令の配信
Publish/Subscribe方式
データを送信することをPublish、受信するために登録することをSubscribeと呼びます。
送信側は特定の受信先を直接指定せず、トピックへデータを送ります。受信側は必要なトピックを購読します。
ブローカー
送信されたデータを受け取り、購読者へ配信する中継サーバーをMQTTブローカーと呼びます。
設備やセンサはブローカーへ接続し、直接互いに通信しません。ブローカーが停止するとデータ配信へ影響するため、可用性と監視を検討します。
クライアント
MQTTブローカーへ接続する設備、ゲートウェイ、サーバー、アプリケーションをクライアントと呼びます。
一つのクライアントがPublishとSubscribeの両方を行うこともできます。
トピック
トピックは、送信データを分類するための名称です。階層をスラッシュで区切って表現します。
例えば、工場、ライン、設備、データ種別の順に階層化すると、必要な範囲だけを購読しやすくなります。
トピック設計
設備ごとに異なる命名をすると、上位システムの処理が複雑になります。
工場コード、設備番号、信号種別などの命名規則を統一します。後から設備を追加しても拡張しやすい構造とします。
ワイルドカード
複数のトピックをまとめて購読するため、ワイルドカードを使用できます。
同じライン内の全設備や、全拠点の異常トピックなどを一括購読できます。広すぎる指定は不要な通信量を増やすため注意します。
ペイロード
トピックへ送信する実際のデータをペイロードと呼びます。
JSON、文字列、バイナリなどを利用できます。日時、値、単位、品質、通し番号を含めると、受信側で扱いやすくなります。
JSON形式
JSONは項目名と値を組み合わせて表現でき、計測値、状態、時刻などを一つのデータへまとめやすい形式です。
人が内容を確認しやすい一方、バイナリ形式よりデータ量が増える傾向があります。通信量と可読性のバランスを取ります。
QoS 0
QoS 0は、メッセージを一度送信し、到達確認を行わない方式です。
通信負荷が小さく、最新値を頻繁に送る用途に適します。途中で失われても次回値で更新できる温度や状態監視などに利用されます。
QoS 1
QoS 1は、少なくとも一回は相手へ届くよう、受信確認が得られるまで再送する方式です。
同じメッセージが複数回届く可能性があります。実績や警報では、メッセージIDや通し番号で重複処理を防ぎます。
QoS 2
QoS 2は、メッセージが一回だけ処理されるように複数段階の確認を行う方式です。
信頼性は高まりますが、通信量と処理負荷が増えます。すべてのデータへ使用せず、用途に応じて選定します。
Retained Message
ブローカーがトピックの最新メッセージを保持し、新しく購読したクライアントへ直ちに配信する機能です。
設備の現在状態や設定値に有効ですが、古い値が最新として見える可能性があります。時刻と通信状態を合わせて確認します。
Last Will
クライアントが正常な切断処理を行わず通信を失った場合に、ブローカーが事前設定したメッセージを配信する機能です。
設備やゲートウェイの通信断通知に利用できます。ただし、回線断と機器故障を区別できない場合があります。
Keep Alive
一定時間データ送信がなくても接続が生きていることを確認するため、Keep Aliveを設定します。
時間が短すぎると通信量が増え、長すぎると通信断の検出が遅れます。回線品質と監視要件から設定します。
Persistent Session
クライアントの接続が一時的に切れても、購読情報や未配信メッセージを保持する構成があります。
移動通信や不安定な回線で有効ですが、長期間接続しない端末の情報がブローカーへ残り続けないよう管理します。
通信断時の一時保存
ブローカーへ接続できない場合は、IoTゲートウェイや設備側へ送信データを保存します。
復旧後に古い順から再送します。保存容量を超えた場合の動作、データ優先順位、欠測表示を決めます。
重複データの処理
QoS 1や再接続後の再送によって、同じデータが複数回届く場合があります。
設備ID、時刻、通し番号を組み合わせ、受信側で重複を判定します。生産数量や積算値を単純加算しないようにします。
送信周期
温度や電力量は数分ごと、モーター状態は数秒ごと、異常は発生時すぐなど、データごとに送信条件を分けます。
すべてのデータを短周期で送ると、通信量とクラウド保存量が増えます。変化時送信と定期送信を組み合わせます。
時刻情報
受信時刻だけでなく、設備がデータを取得した時刻をペイロードへ含めます。
通信断後にまとめて再送した場合でも、本来の発生時刻を判別できます。設備とゲートウェイの時計を同期します。
認証
ブローカーへの接続時に、ユーザー名・パスワード、証明書、トークンなどを使用します。
設備ごとに認証情報を分けると、特定機器だけを停止・更新できます。共通パスワードの広範囲利用は避けます。
TLS暗号化
インターネットや移動通信網を利用する場合は、TLSによって通信を暗号化します。
証明書の有効期限、時刻、暗号方式を確認します。証明書更新時に遠隔設備が接続できなくならない運用が必要です。
アクセス制御
クライアントごとに、Publish・Subscribeできるトピックを制限します。
計測装置が他設備の指令トピックへ書き込めないようにし、必要最小限の権限を設定します。
設備への指令配信
上位システムから設備へ、設定値や動作要求をMQTTで送ることもできます。
通信が届いただけで即時動作させず、設備側で権限、値範囲、運転状態、安全条件を確認します。指令受付と実行結果を別メッセージで返します。
ブローカーの冗長化
多数設備が一台のブローカーへ依存すると、故障時の影響が大きくなります。
クラスタ構成、待機系、クラウドサービスなどを利用し、必要な可用性を確保します。切替時の再接続と重複配信を確認します。
監視とログ
接続クライアント数、送受信件数、未配信数、認証失敗を監視します。
設備側では、最終送信時刻、未送信件数、再接続回数を表示・保存します。
異常時の確認
接続できない場合は、ブローカーアドレス、ポート、認証、証明書、時刻を確認します。
データが届かない場合は、トピック名、購読条件、QoS、アクセス権限を点検します。重複する場合は、通し番号と再送処理を確認します。
ハカルプラスの対応
ハカルプラスでは、設備データ、異常、計量実績などの送信項目と周期を整理し、MQTTのトピック構成を検討します。
IoTゲートウェイ、LTE・5G、TLS、証明書、一時保存、再送を組み合わせ、クラウドや監視サーバーへ安定してデータを送る構成に対応できる場合があります。
よくある質問
Q. MQTTは設備同士が直接通信する方式ですか?
A. 一般にはブローカーを介し、送信側と受信側がトピックを通じてデータを交換します。
Q. 通信が切れた場合にデータを再送できますか?
A. 設備側へ一時保存し、接続復旧後に時刻や通し番号を付けて再送できます。
Q. QoSは高いほどよいですか?
A. 信頼性は高まりますが通信負荷も増えるため、最新値、警報、実績など用途別に選定します。
Q. MQTTで設備へ運転指令を送れますか?
A. 送信できますが、設備側で権限、状態、安全条件を確認してから実行する必要があります。
Q. MQTT通信を暗号化できますか?
A. TLSと証明書を使用して暗号化・認証できます。
関連ワード
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. 移行できる場合がありますが、ライブラリ、デバイスドライバー、通信ポート、ファイルパス、自動起動設定などの違いを確認する必要があります。
関連ワード
TCP/IP系アプリケーションプロトコルとは、IPネットワーク上でWeb表示、メール送信、ファイル転送、時刻同期など、特定の用途を実現するための通信規約です。
同じEthernet回線を使用していても、Web画面にはHTTP、メール通知にはSMTP、ファイル転送にはFTP、時刻同期にはNTPというように、目的に応じて使用するプロトコルが異なります。
ハカルプラスでは、HTTP、SMTP、FTP、TFTP、NTPなどを利用し、計測機器、IoTゲートウェイ、PLC、SBC、FAパソコン、サーバー、上位システムを連携する製品・システムを開発しています。
アプリケーションプロトコルの役割
TCP/IPは、異なる機器同士がネットワークを通じてデータを届けるための基本的な仕組みです。その上で、データの意味、形式、要求と応答の手順などを定めるのがアプリケーションプロトコルです。
| プロトコル | 主な用途 | 主に使用する通信 |
|---|---|---|
| HTTP・HTTPS | Web画面・API連携 | TCPまたはQUIC |
| SMTP | 電子メールの送信 | TCP |
| FTP・FTPS | ファイル転送 | TCP |
| TFTP | 簡易的なファイル転送 | UDP |
| NTP | 時刻同期 | UDP |
HTTP・HTTPS
HTTPは、WebブラウザとWebサーバーの間で、HTML、画像、JSONなどをやり取りするためのプロトコルです。
産業用システムでは、計測値や設備状態の表示、設定値の変更、履歴検索、Web APIによる上位システム連携などに使用されます。
HTTP通信は基本的に暗号化されません。認証情報、設定値、計測データなどを安全に扱う場合は、TLSで通信を暗号化するHTTPSを使用します。
組込み機器では処理能力や対応ライブラリの制約があるため、新しい通信方式へ対応できるかだけでなく、証明書の保存・更新方法も確認します。
SMTP
SMTPは、電子メールを送信・中継するためのプロトコルです。設備異常、上限値超過、停電、通信異常などを担当者へ通知する用途に利用されます。
現在のメールサーバーでは、SMTP認証とTLS暗号化を求められることが一般的です。古い計測機器が新しい認証方式や暗号化方式へ対応できない場合は、社内メールリレーやゲートウェイを介して送信します。
通信復旧後に同じ警報メールを繰り返し送らないよう、送信済み状態や再送回数を管理することも重要です。
FTP・FTPS・SFTP
FTPは、ファイルのアップロード、ダウンロード、一覧取得、名称変更などを行うプロトコルです。
- 計測値や製造実績のCSVファイル転送
- 設定ファイルの配布
- ログや保守データの回収
- 上位システムへの定期実績送信
FTPは、制御用接続とデータ転送用接続を分けて使用します。ファイアウォールやルーターを介する場合は、アクティブモードとパッシブモードの違いを考慮します。
通常のFTPでは利用者名、パスワード、転送データが暗号化されません。暗号化が必要な場合は、TLSを利用するFTPSや、SSH上で動作するSFTPを検討します。SFTPは名称が似ていますが、FTPとは別のプロトコルです。
TFTP
TFTPは、指定したファイルを簡単な手順で送受信するためのプロトコルです。利用者認証、フォルダー一覧、名称変更などの機能を基本的に持たず、読込みと書込みに機能を絞っています。
処理能力やメモリが限られた組込み機器へのファームウェア転送、設定ファイルの配布、起動用ファイルの取得などに利用されます。
TFTPには標準的な認証や暗号化がないため、外部ネットワークへ公開せず、設備内や保守専用の閉じたネットワークで使用します。不要な場合はサーバー機能を停止します。
NTPによる時刻同期
NTPは、パソコン、サーバー、計測機器などの内部時計を、ネットワーク上の基準時刻へ同期させるプロトコルです。
複数機器の時刻がずれていると、警報の発生順序を正しく判断できない、PLCとサーバーの履歴を照合できない、日報の集計範囲がずれるといった問題が起こります。
工場内では、各機器が外部の時刻サーバーへ直接接続するのではなく、社内NTPサーバーへ同期させる構成があります。
時刻が急激に変更されると、実績の重複や順序逆転が起こる場合があります。システムによっては、時刻差を徐々に補正する方法や、大きな差を警報として扱う方法を採用します。
通信異常時の設計
ネットワーク通信は、ケーブル断線、相手機器の停止、アドレス重複、通信混雑、サーバー保守などによって途切れる可能性があります。
- 接続・応答のタイムアウト
- 通信失敗時の再接続・再送
- 未送信データの一時保存
- 重複送信・重複登録の防止
- 古い受信データの無効化
- 通信履歴・エラーログの保存
- 復旧後の自動再開
計測実績や製造実績では、送信元でデータ番号を付与し、受信側からの応答を確認して送信済みにするなど、欠損と二重登録を防ぐ仕組みを設けます。
セキュリティ上の注意点
HTTP、FTP、TFTPなどには、標準状態では認証や暗号化が十分でないものがあります。
- HTTPS、FTPS、SFTPなどを使用する
- 設備ネットワークと社内ネットワークを分離する
- 接続元・接続先のIPアドレスを制限する
- 不要なポートやサービスを停止する
- 初期パスワードを変更する
- 証明書や認証情報を適切に管理する
- 通信ログと操作履歴を保存する
旧型機器が暗号化通信に対応していない場合は、外部ネットワークへ直接接続せず、ゲートウェイや中継サーバーを介して保護します。
ハカルプラスの対応
ハカルプラスでは、Web監視画面、Web API、警報メール、CSV・ログファイル転送、組込み機器へのファイル配布、機器間の時刻同期などに対応しています。
プロトコル単体の実装だけでなく、PLC、計測機器、SBC、FAパソコン、データベース、基幹システムを含め、通信異常時の動作やセキュリティまで考慮したシステムとして設計します。
よくある質問
Q. HTTPとHTTPSはどのように使い分けますか?
A. 閉じたネットワークで認証情報を扱わない場合はHTTPを使用することもありますが、ログイン、設定変更、外部接続を伴う場合はHTTPSを基本として検討します。
Q. 古い機器から現在のメールサービスへ警報メールを送れますか?
A. 機器が必要な認証やTLSへ対応していない場合、直接送信できないことがあります。社内メールリレーやゲートウェイを介する方法を検討します。
Q. FTPで送信中に通信が切れた場合はどうなりますか?
A. 不完全なファイルが残る可能性があります。一時ファイル名で転送し、完了後に正式名称へ変更する方法や、ファイルサイズ・チェック値を確認する方法があります。
Q. NTP同期によって装置の時刻が急に変わることはありますか?
A. 設定や時刻差によっては変わる可能性があります。実績管理への影響を避けるため、大きな時刻差を警報にする、徐々に補正するなどの方法を検討します。
Q. 暗号化に対応していない既設機器を上位システムへ接続できますか?
A. 設備内の閉じたネットワークで通信し、ゲートウェイ側で暗号化や認証を行う構成を検討できます。既設機器を外部へ直接公開しないことが重要です。
関連ワード
ネットワーク通信基盤技術とは、パソコン、PLC、タッチパネル、産業用端末、組み込み機器、サーバーなどを接続し、データを送受信するための基礎技術です。TCP、UDP、IP、PPP、Ethernetは、それぞれ異なる役割を持つ通信プロトコルまたは通信規格であり、複数を組み合わせることでネットワーク通信を実現します。
例えば、有線LANではEthernetを使って機器を物理的に接続し、IPアドレスによって通信相手を識別します。その上で、欠落させたくないデータにはTCP、短い周期で繰り返し送るデータにはUDPを使用するなど、用途に応じて通信方式を選びます。安定したシステムを構築するには、各技術の役割だけでなく、通信断や電源断が発生した際の処理まで設計することが重要です。
ネットワーク通信を構成する階層
ネットワーク通信は、1つの規格だけで完結するものではありません。ケーブルや電気信号を扱う部分、同一ネットワーク内でデータを運ぶ部分、ネットワークを越えて宛先へ届ける部分、アプリケーション間でデータを受け渡す部分など、役割を分けて構成されます。
Ethernetは主に有線LANの配線、信号、フレーム転送を担い、IPは通信相手の宛先を管理します。TCPとUDPはIPの上でアプリケーション間のデータ転送を行います。さらに、その上位ではHTTP、FTP、Modbus TCPなどのアプリケーションプロトコルが使用されます。
このように、同じEthernetケーブルで接続していても、IPアドレス、TCPまたはUDP、ポート番号、データ形式が一致していなければ通信できません。
IPの役割
IPは「Internet Protocol」の略で、ネットワーク上の機器へデータを届けるための宛先管理を行います。各機器にはIPアドレスを設定し、送信元と送信先を識別します。
IPアドレスだけで通信できる範囲は、サブネットマスクによって決まります。異なるネットワークへ通信する場合は、ルーターやデフォルトゲートウェイを経由します。設備内で使用する場合でも、社内LANや上位システムへ接続する際には、ネットワーク管理部門とアドレス体系を調整する必要があります。
IP自体には、データが確実に届いたことを保証する機能はありません。到達確認や再送が必要な場合はTCPを使用し、簡潔な送信を優先する場合はUDPを使用します。
TCP/IPとは
TCP/IPは、インターネットや社内LAN、工場内ネットワークで広く使用される通信技術の総称です。IPがデータを宛先へ運び、TCPがデータの到達確認、再送、順序管理を行います。
TCPでは、通信開始前に送信側と受信側で接続を確立します。送信したデータが欠落した場合は再送し、到着順序が入れ替わった場合は正しい順番へ並べ直します。そのため、計量実績、製造指示、設定値、ファイルなど、欠落や順序違いを避けたいデータに適しています。
ただし、TCPを使用すれば必ず通信できるわけではありません。相手機器の停止、ケーブル断、スイッチングハブの故障などが発生すると接続できないため、ソフトウェア側で接続タイムアウト、再接続、未送信データの保持などを設けます。
UDP/IPとは
UDP/IPは、IPを利用してデータを送信しますが、通信前の接続確立、到達確認、再送、順序制御をUDP自体では行いません。送信側はデータを送り出しますが、受信側へ届いたかは確認しません。
処理が比較的簡潔で、確認応答を待たずに送信できるため、短い周期で繰り返す状態通知、同じ情報を複数機器へ送る配信、多少の欠落より遅延の少なさを優先する用途などに使用されます。
欠落が問題になる場合は、アプリケーション側で通番、応答確認、タイムアウト、再送処理を追加します。UDPを使用すれば常に高速になるわけではなく、ネットワーク負荷、受信側の処理能力、データ量などによって応答性は変わります。
PPPとは
PPPは「Point-to-Point Protocol」の略で、2つの通信機器を1対1で接続するためのプロトコルです。通信条件の調整、認証、IPアドレスに関する設定などの機能を持ちます。
以前はモデムを用いた電話回線のダイヤルアップ接続で広く使用されました。現在でも、Ethernet上でPPPを利用するPPPoE、一部の通信モジュール、モバイル回線対応の組み込み機器などで関連技術が用いられます。
PPPは多数の機器を接続するLAN規格ではなく、基本的には2点間の通信路を確立するための技術です。設備へ採用する場合は、接続、認証、切断、回線断後の再接続方法まで検討します。
Ethernetとは
Ethernetは、パソコン、PLC、タッチパネル、産業用機器などを有線LANへ接続するための通信規格です。ケーブル、コネクタ、電気信号、通信速度、フレームと呼ばれるデータ単位などを定めています。
一般にはLANケーブルとスイッチングハブを使用し、複数の機器を接続します。通信速度には100Mbps、1Gbpsなどがあり、機器、ケーブル、スイッチングハブが同じ規格へ対応している必要があります。
産業設備では、制御盤内のノイズ、ケーブル長、配線経路、コネクタの固定、周囲温度なども通信品質に影響します。動力線と通信線を近接させる場合は、配線分離やシールド、接地方法を検討します。
通信量と応答時間の考え方
データ量をD、通信速度をRとすると、データを伝送するための理論時間tは次の式で概算できます。
t=D÷R
例えば、1MBのデータを100Mbpsで送る場合、1MBを約8Mbitとすると、理論上の伝送時間は約0.08秒です。
ただし、実際にはTCPやEthernetの制御情報、再送、ネットワーク機器の処理、受信側ソフトウェアの待ち時間が加わります。設備制御では理論速度だけでなく、通信周期、応答時間のばらつき、同時通信台数を確認します。
主な用途
- PLCとタッチパネル、パソコン、計量機器の接続
- 計量値、運転状態、警報、製造実績の収集
- 生産管理システムや基幹システムとの連携
- 組み込み機器とサーバー間の通信
- 設備の遠隔監視や保守支援
- ネットワークカメラやセンサデータの送信
計量・配合設備では、上位システムから品種、配合、目標重量を受信し、製造完了後に実績を返す構成があります。制御に必要なデータと、履歴保存用のデータでは重要度や周期が異なるため、用途に応じて通信経路や方式を分けることがあります。
設計・制御上のポイント
IPアドレスとポート番号の管理
同じネットワーク内でIPアドレスが重複すると、通信先が不安定になったり、別の機器へ接続したりする可能性があります。IPアドレス、サブネットマスク、ゲートウェイ、ポート番号を一覧化し、設備増設や機器交換時にも管理します。
通信異常時の安全側動作
通信が途絶えた場合に、前回受信した値を使い続けると危険なことがあります。運転許可、目標重量、搬送先など、設備動作に関係する情報が更新されない場合は、一定時間後に無効として扱い、安全側へ停止させます。
通信復旧後も、無条件に自動運転へ戻さず、データの整合性や設備状態を確認してから復帰させる構成を検討します。
通信周期とネットワーク負荷
短い周期で大量のデータを送ると、PLC、タッチパネル、スイッチングハブなどの負荷が増えます。高速更新が必要な制御データと、数秒または数分ごとでよい実績データを分け、適切な周期を設定します。
画像や大容量ファイルと設備制御通信を同じネットワークへ集中させると、応答時間が変動する場合があります。必要に応じてVLANや物理的なネットワーク分離を検討します。
データ欠落と再送
上位システムやサーバーが停止している間も製造を継続する場合は、PLC、タッチパネル、組み込み機器などへ未送信データを一時保存します。通信復旧後に再送し、製造番号や連番によって二重登録を防止します。
セキュリティ対策
工場内ネットワークを社内LANやインターネットへ接続する場合は、ネットワーク分離、ファイアウォール、接続先制限、利用者認証、アクセス履歴、ソフトウェア更新などを検討します。
遠隔保守では、常時無制限に設備へ接続できる構成を避け、必要な時間だけ接続を許可する方法や、操作権限を分ける方法があります。
異常監視・復旧・保守
主な異常には、通信タイムアウト、接続切断、IPアドレス重複、通信データ異常、スイッチングハブ故障、ケーブル断などがあります。タッチパネルには、通信相手、異常発生時刻、最終受信時刻などを表示すると、原因を特定しやすくなります。
通信異常の調査では、電源、リンクランプ、ケーブル、IP設定、ポート番号、ファイアウォール、アプリケーションの順に確認します。機器交換時には、IPアドレスだけでなく、通信方式、データ形式、バイト順、文字コードなどの互換性も確認します。
定期的にネットワーク構成図、アドレス一覧、通信仕様書、機器設定のバックアップを更新しておくと、故障時や設備更新時の復旧を行いやすくなります。
ハカルプラスの対応
ハカルプラスでは、TCP/IP、UDP/IP、PPP、Ethernetを利用する製品やシステムについて、接続対象、通信データ、更新周期、異常時動作を確認し、ネットワーク構成を検討します。
制御盤内のスイッチングハブや通信機器の選定、IPアドレス設計、PLC通信プログラム、タッチパネル画面、組み込みソフト、通信異常時のインターロックまで、設備全体に合わせて構成します。
計量値、製造指示、警報、運転状態、実績データなどをパソコンやサーバーへ保存し、生産管理システムや基幹システムへ連携する構成も検討します。通信断時の一時保存、再送、重複防止、電源断後の復旧処理まで含めて設計します。
既設設備のネットワーク化では、現在のシリアル通信、PLC、配線、データ形式、セキュリティ条件を確認し、通信変換器の利用や段階的な更新を検討します。
よくある質問
Q. TCP通信が切断された後は自動で再接続できますか?
A. ソフトウェアに再接続処理を設ければ可能です。ただし、短時間に再接続を繰り返さないよう待ち時間を設定し、復旧後にデータの整合性を確認する必要があります。
Q. UDPでデータが欠落したことを検出できますか?
A. UDP自体には欠落検出機能がありませんが、データへ連番を付けることで抜けを検出できます。必要に応じてアプリケーション側で応答確認や再送を行います。
Q. LANケーブルを交換しても通信しない場合は何を確認しますか?
A. 機器の電源、リンク状態、IPアドレス、サブネットマスク、ポート番号、通信プロトコル、ファイアウォール設定などを確認します。ケーブル以外の設定不良が原因の場合もあります。
Q. 既設のRS-232CやRS-485機器をEthernetへ接続できますか?
A. 通信変換器を使用できる場合があります。ただし、電気信号を変換するだけでなく、通信速度、データ形式、プロトコル、応答時間が既設機器と合うかを確認します。
Q. PLCや通信機器を更新しても既存システムと接続できますか?
A. 新旧機器で通信プロトコル、アドレス、データ長、バイト順、文字コードなどが一致すれば接続できる場合があります。更新前に通信仕様と既存プログラムを確認し、必要に応じて変換処理を追加します。
関連ワード
- TCP/IP系アプリケーションプロトコル(HTTP/SMTP/FTP/TFTP/NTP)
- シリアル通信・Modbus通信(RS-232C/RS-422/RS-485/Modbus)
- 産業用ネットワーク通信(CC-Link/CC-Link IE/Ethernet/DeviceNet/MelsecNet/FL-net/CU-NET/CompoNet)
- 基幹システム連携
- PLCソフト設計
- マイコン制御
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. ソースコード、ライブラリ、データベース、文字コード、外部連携を確認し、改修または再構築を検討します。既存環境と一定期間並行運用する場合もあります。
関連ワード
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. 通信プロトコル、データ形式、タイミング、異常時処理が合っていれば連携できます。言語の違いよりも、機器間のインターフェース仕様を明確にすることが重要です。
関連ワード
Accessは、Microsoft社が提供するリレーショナルデータベース管理ソフトウェアです。テーブル、クエリ、フォーム、レポートなどを組み合わせ、データの保存・検索・集計・入力画面・帳票出力を一つの環境で構築できます。
データベースとは、計量値や製造実績などのデータを一定の形式で整理して蓄積し、必要な情報を後から検索・抽出・集計できるようにする仕組みです。Accessでは、データを表形式で保存する「テーブル」、条件に合うデータを検索・集計する「クエリ」、入力・表示画面を構築する「フォーム」、帳票を作成する「レポート」などを使用します。
計量・制御システムにおけるAccessの役割
製造設備や計量システムでは、利用者がAccessを直接操作するのではなく、設備を制御する専用ソフトウェアと連携し、計量や製造の進行に合わせて発生するデータを自動保存する用途で利用できます。
ハカルプラスでは、計量制御盤にFAパソコンを組み合わせたシステムにおいて、計量実績などのデータ管理にAccessを使用することがあります。保存対象には、計量日時、品種・原料名、設定重量、実計量値、ロット番号、作業者情報、運転結果、警報履歴などがあります。
これらの情報を計量動作と連動して記録することで、「いつ、何を、どれだけ計量したのか」を後から確認できます。保存したデータは、製造実績の検索、日報・月報の作成、設定値と実績値の比較、異常発生時の原因調査、品質管理、トレーサビリティなどに活用できます。
実績データを保存するタイミング
設備データは、値を取得した時点ですぐに実績として確定できるとは限りません。計量途中の値や排出前の値を保存すると、正常に完了した実績と、途中で中止されたデータを区別できなくなるためです。
そのため、計量完了、排出完了、バッチ完了など、設備の運転フローに合わせて実績を確定するタイミングを設計します。正常完了だけでなく、過計量、計量未完了、手動中止、異常停止などについても、運転結果や状態を区別して保存することで、後から経緯を確認しやすくなります。
SQLによるデータベース操作
ハカルプラスのシステムでは、当社製ソフトウェアからSQL文を発行し、Access形式のデータベースに対してデータの登録、検索、更新などを行います。
SQLとは、データベースを操作するための言語です。計量完了時に実績を登録する、指定期間や品種のデータを検索する、帳票作成に必要な情報を集計するといった処理に使用します。
通常の運用では、作業者がAccessを起動してテーブルやクエリを直接操作する必要はありません。利用者はハカルプラスが構築した専用画面を使用し、データベース処理はソフトウェア内部で実行されます。
設備との連携で考慮すること
PLCや計量コントローラから実績データを受け取る構成では、正常時の保存処理だけでなく、通信断、パソコン停止、保存失敗、重複登録などを考慮する必要があります。
例えば、データベースへ保存できなかった場合に設備運転を停止するのか、設備側またはソフトウェア側へ一時保持して後から再登録するのかは、設備の用途や記録の重要度によって異なります。再送を行う場合は、同じ実績が重複して登録されないよう、製造番号や計量番号などを用いた登録済み判定も検討します。
また、PLC、計量コントローラ、FAパソコンで時刻がずれていると、実績の並びや警報履歴との照合が難しくなります。どの機器の時刻を基準とするか、時計合わせをどのように行うかも、システム全体で決めておく必要があります。
Accessを採用する際の判断
Accessを採用するかどうかは、保存するデータ量だけでなく、利用端末数、同時更新の頻度、必要な処理速度、検索や帳票の負荷、保存期間、バックアップ時間、他システムとの連携、将来の拡張性などを踏まえて判断します。
特定のFAパソコン内で計量実績を管理するような比較的小規模な構成では、Accessが適する場合があります。画面、帳票、データベースを一体的に構築しやすく、既存のAccess資産を活用できることも利点です。
一方、大量のデータを長期間蓄積する場合、多数の端末から同時に更新する場合、複数設備や複数拠点を一元管理する場合、厳密な権限管理や高い可用性が必要な場合には、Microsoft SQL ServerやOracleなどのサーバー型データベースを検討します。
既存画面や帳票をAccessに残し、データの保存先だけをサーバー型データベースへ移すなど、段階的に構成を変更する方法もあります。
運用・保守上の注意点
Accessを使用したシステムでは、データの増加に伴う処理速度の低下、FAパソコンやストレージの故障、データベースファイルの破損、バックアップ不足などに注意が必要です。
保存期間、バックアップの取得周期、保存先、世代数、不要データの整理方法、障害発生時の復旧手順まで含めて運用を設計します。バックアップは取得するだけでなく、復元後にソフトウェアが正常に起動し、帳票や外部接続を含めて使用できることを確認する必要があります。
FAパソコンを更新する場合には、WindowsやAccessのバージョン、32ビット版・64ビット版の違い、接続ドライバー、VBAや外部ライブラリ、当社製ソフトウェアとの互換性、既存帳票やプリンタ設定の動作などを確認します。
既存システムの仕様書が残っていない場合は、画面だけで判断せず、テーブル、クエリ、帳票、外部接続、データ登録のタイミングなどを調査したうえで、更新範囲や移行方法を決めます。
ハカルプラスの対応範囲
ハカルプラスでは、Accessのデータベース部分だけでなく、計量制御盤、FAパソコン、PLC、計量コントローラ、操作画面、実績保存、帳票出力、上位システムとの連携まで含めてシステムを構築します。
設備側で実績を確定する条件、保存項目、検索方法、帳票の内容、異常時の処理などを整理し、計量動作とデータ管理が正しく連動するように設計します。
既設Accessデータベースを活用した設備更新、過去データの移行、保存項目や帳票の見直し、FAパソコンの更新、Microsoft SQL Serverなどへの移行についても、既存設備の構成や運用方法、停止可能時間を確認したうえで検討します。
よくある質問
Q. 古いAccessシステムでも改修できますか?
A. Accessのバージョン、VBA、外部ライブラリ、接続先機器、帳票、データ構造などを確認したうえで、改修可能な範囲を検討します。仕様書が残っていない場合は、既存ファイルや実際の動作を調査して処理内容を整理します。
Q. Accessを残したままFAパソコンだけ更新できますか?
A. WindowsやAccessのバージョン、32ビット版・64ビット版の違い、接続ドライバー、外部機器との通信、プリンタ設定などに問題がなければ可能な場合があります。更新前に互換性確認と動作試験が必要です。
Q. 計量途中でパソコンが停止した場合、実績データはどうなりますか?
A. データをどの機器で保持し、どの時点で実績として確定するかによって異なります。設備側や通信ソフト側に一時保持機能を設け、復旧後に再登録する構成や、未保存を警報として通知する構成などを検討します。
Q. AccessからMicrosoft SQL Serverへ全面移行する必要がありますか?
A. 必ずしも全面移行が必要とは限りません。既存の画面や帳票をAccessに残し、データの保存先だけをMicrosoft SQL Serverへ移す構成もあります。現在の課題、将来のデータ量、同時利用者数、保守体制をもとに判断します。
Q. 設備を長時間停止せずにデータベースを更新できますか?
A. 既存データの移行方法、切替手順、並行試験、旧環境へ戻す手順を事前に決めることで、停止時間を抑えられる場合があります。実際の停止可能時間や設備構成を確認したうえで更新計画を立てます。
関連ワード
Oracleは、米国のOracle社が提供するデータベース製品やクラウドサービスなどの総称です。計量・製造システムで「Oracle」と呼ぶ場合は、一般にリレーショナルデータベース管理システムであるOracle Databaseを指します。
Oracle Databaseは、計量実績、製造実績、配合情報、品質情報、在庫情報、警報履歴などを整理して保存し、必要な条件で検索・集計するために使用されます。大量のデータを長期間管理し、複数の利用者やシステムから同時に利用する構成に適しています。
ハカルプラスでは、計量制御システムや関連システムにおいて、Oracle Databaseを利用したデータ保存・管理システムを構築した実績があります。
計量・製造システムにおけるOracleの役割
計量・製造設備では、運転に伴って次のようなデータが発生します。
- 計量日時、工場・設備番号
- 製品名、品種名、原料名
- 配合番号、製造指示番号
- 設定重量、実計量値、許容誤差
- ロット番号、作業者情報
- 設備の運転状態、警報・異常履歴
これらをOracleへ保存することで、「いつ、どの設備で、何を、どれだけ計量・製造したのか」を後から確認できます。保存したデータは、実績検索、日報・月報、品質管理、原料使用量の集計、異常原因の調査、トレーサビリティ、基幹システム連携などに活用します。
リレーショナルデータベースの仕組み
Oracle Databaseでは、情報を「テーブル」と呼ばれる表形式で保存します。製品、原料、配合、製造指示、計量実績、作業者、警報履歴などを別々のテーブルとして管理し、番号やコードによって関連付けます。
適切にテーブルを分けることで、同じ情報を繰り返し保存することを減らし、データの重複や不整合を防ぎやすくなります。
一方、製造後に品種名や配合マスターが変更される場合は、製造時点の名称や設定値を実績側にも保存するなど、後から当時の状態を再現できる設計が必要です。
SQLとPL/SQL
Oracleに保存されたデータは、SQLを使用して登録、検索、更新、削除、集計します。通常、設備の利用者がSQLを直接入力することはなく、ハカルプラスが開発した専用ソフトウェアから処理を実行します。
Oracleでは、SQLに条件分岐、繰り返し、例外処理などを加えたPL/SQLも利用できます。複数の登録処理をまとめる、登録内容を検査する、共通処理をデータベース側で実行するといった用途に使用できます。
ただし、処理をデータベース側へ集中させすぎると、設備側ソフトウェアとの役割分担が分かりにくくなります。どの処理をFAパソコン側で行い、どの処理をOracle側で行うかを明確にします。
トランザクションとデータの整合性
トランザクションとは、関連する複数の処理を一つのまとまりとして扱う仕組みです。
例えば、計量実績の登録、原料使用量の更新、製造指示の完了処理を一連の処理として実行し、途中で異常が発生した場合は、処理前の状態へ戻すことができます。
一部のテーブルだけが更新された状態を残さないため、どの処理までを一つのトランザクションとするかを設計します。ただし、長時間トランザクションを保持すると他の端末の処理を待たせることがあるため、設備動作そのものをデータベース処理の完了待ちにしすぎないことも重要です。
複数設備・複数端末での利用
Oracleは、複数の計量制御盤、FAパソコン、事務所端末、上位システムから同じデータベースを利用する構成に適しています。
複数の端末から同じデータを更新する場合は、後から実行された処理によって先の更新内容が意図せず上書きされないよう、更新日時、状態、処理番号などを利用して競合を検出します。
また、設備や通信ソフトウェアから同じ実績が再送される可能性を考慮し、製造指示番号、バッチ番号、計量番号などを使用して重複登録を防ぎます。
基幹システム・生産管理システムとの連携
Oracleは、企業の基幹システム、生産管理システム、在庫管理システムなどで利用されることがあります。
計量制御システムでは、上位システムから製造指示や配合情報を受信し、計量・製造完了後に実績値や使用原料量を返送する構成を構築できます。
主な連携方法には、次のものがあります。
- テーブルやビューを介したデータベース連携
- ストアドプロシージャによる連携
- CSVなどのファイル連携
- APIによる連携
- 専用通信ソフトウェアによる連携
データベースへ直接接続する場合は、参照・更新できる範囲、データを確定するタイミング、処理の実行権限、通信障害時の再送方法を明確にします。設備側と上位側の双方が同じテーブルを自由に更新する構成は避け、連携専用の領域や処理を用意する方法を検討します。
Oracleを採用する際の判断
Oracleは、大量データ、多数の同時利用者、複数設備・複数拠点、高い可用性やセキュリティが求められるシステムに適しています。
一方、1台のFAパソコンで小規模な実績管理を行う場合は、Microsoft SQL ServerやAccessなどが適することもあります。
選定時はデータ量だけでなく、既設の基幹システム、利用端末数、同時更新数、停止時の影響、運用期間、管理者の有無、バックアップ、ライセンス、将来の拡張性を含めて判断します。
Oracleに接続できない場合の設計
サーバー停止やネットワーク障害によってOracleへ接続できない場合に、計量設備を停止するのか、PLCやFAパソコンで運転を継続するのかを決めておく必要があります。
運転を継続する場合は、実績を設備側へ一時保存し、接続復旧後にOracleへ登録する構成を検討します。この場合、保存容量、再送順序、重複登録の防止、実績時刻の保持が必要です。
安全に関わる設備制御をOracleへの接続だけに依存させず、PLCや計量コントローラ側で必要な安全動作を完結させることが基本です。
バックアップと復旧
計量実績や製造実績は、品質管理やトレーサビリティに必要な重要データです。バックアップの頻度、保存先、世代数、別サーバーや外部媒体への複製、復旧に必要な時間をあらかじめ設計します。
バックアップファイルが存在するだけでは、設備の運用を再開できるとは限りません。定期的に復元試験を行い、データベース、専用ソフトウェア、帳票、接続設定、上位システム連携まで正常に復旧できることを確認します。
セキュリティと権限管理
Oracleでは、利用者やアプリケーションごとに、参照、登録、更新、削除などの権限を設定できます。
設備用ソフトウェアから接続する場合も、管理者権限をそのまま使用せず、必要なテーブルや処理だけを利用できる専用アカウントを使用します。
通信の暗号化、パスワード管理、アクセス履歴、不要な接続の制限、設備ネットワークと社内ネットワークの分離、セキュリティ更新の方法なども検討します。
バージョン更新・他環境への移行
Oracleを更新する場合は、データベースだけでなく、サーバーOS、クライアントソフトウェア、接続ドライバー、既存SQL・PL/SQL、文字コード、データ型、帳票、基幹システムとの互換性を確認します。
OracleからMicrosoft SQL Serverなどへ移行する場合も、データをコピーするだけでは完了しません。データ型、SQL、PL/SQL、ストアドプロシージャ、接続方式、帳票などの変更が必要になる場合があります。
本番環境を更新する前に、検証環境で登録、検索、帳票、外部連携、バックアップ・復元を確認し、問題発生時に旧環境へ戻す手順も準備します。
ハカルプラスのOracle対応
ハカルプラスでは、Oracle Databaseを利用した計量制御システムや関連システムを構築した実績があります。
データベース部分だけでなく、PLC、計量コントローラ、FAパソコン、操作画面、実績保存、帳票、基幹システム連携まで含めて、設備全体の情報の流れを設計します。
既設Oracleへの接続、バージョン更新に伴うソフトウェア改修、他のデータベースとの移行についても、既存の構成、運用方法、ライセンス、設備停止可能時間を確認したうえで検討します。
よくある質問
Q. Oracleが停止した場合でも計量設備を動かせますか?
A. システム構成によっては、PLCや計量コントローラで設備制御を継続し、実績をFAパソコンへ一時保存できます。接続復旧後の再登録方法を含めて事前に設計する必要があります。
Q. 基幹システムからOracleの計量実績テーブルを直接更新できますか?
A. 直接更新すると設備側処理と競合する可能性があります。連携専用テーブル、ビュー、ストアドプロシージャ、APIなどを用意し、更新範囲と処理タイミングを制限する方法を検討します。
Q. OracleからSQL Serverへ移行すると既存画面はそのまま使えますか?
A. 画面を残せる場合もありますが、接続ドライバー、SQL、PL/SQL、データ型、帳票などの改修が必要になることがあります。既存ソフトウェアの調査が必要です。
Q. 同じ製造実績が二重登録されることはありませんか?
A. 通信再送やソフトウェア再起動によって、同じ実績が再送される可能性があります。製造指示番号や計量番号などの一意な情報を使用して登録済みかを判定します。
Q. 仕様書がない古いOracleシステムも更新できますか?
A. テーブル、SQL・PL/SQL、接続ソフトウェア、帳票、外部連携、バックアップ方法などを調査し、現行動作を整理したうえで更新方法を検討します。
関連ワード
Microsoft SQLは、Microsoft社が開発・提供するリレーショナルデータベース管理システムです。正式な製品名は「Microsoft SQL Server」で、一般には「SQL Server」や「MS SQL」とも呼ばれます。
計量値、製造実績、配合情報、警報履歴、作業者情報などを整理して保存し、必要な条件で検索・集計するために使用します。複数の設備や端末から同じデータを利用しやすく、計量制御システム、生産管理システム、基幹システムとの連携にも適しています。
ハカルプラスでは、主にWindows系OSを搭載したFAパソコンやサーバーと組み合わせ、計量制御盤や関連システムの実績保存・データ管理にSQL Serverを利用しています。
計量・製造システムにおける役割
計量・製造設備では、運転に伴って次のようなデータが発生します。
- 計量日時
- 原料名・品種名
- 設定重量・実計量値
- 配合番号・製造指示番号
- ロット番号
- 作業者情報
- 運転結果・警報履歴
これらをSQL Serverへ保存することで、「いつ、どの設備で、何を、どれだけ計量・製造したのか」を後から確認できます。保存したデータは、実績検索、日報・月報、品質管理、設定値と実績値の比較、異常原因の調査、トレーサビリティ、在庫管理、基幹システム連携などに活用します。
リレーショナルデータベースの仕組み
SQL Serverでは、データを「テーブル」と呼ばれる表形式で保存します。例えば、原料、品種、配合、製造指示、計量実績、作業者、警報履歴をそれぞれ別のテーブルとして管理し、番号やコードによって関連付けます。
適切にテーブルを分けることで、同じ情報を繰り返し保存することを減らし、名称変更や設定変更による不整合を防ぎやすくなります。
ただし、製造後にマスターデータが変更される可能性がある場合は、製造時点の品種名や設定値を実績側にも保存するなど、後から当時の状態を再現できる設計が必要です。
SQLによるデータ操作
SQLは「Structured Query Language」の略で、データベースに対して登録、検索、更新、削除、集計などを指示するための言語です。
計量・製造システムでは、計量完了時の実績登録、指定期間の実績検索、品種別・原料別の使用量集計、ロット番号からの履歴検索、帳票用データの抽出などに使用します。
通常、設備の利用者がSQL文を直接入力することはありません。ハカルプラスが開発した専用ソフトウェアからSQL Serverへ処理を要求し、結果を操作画面、グラフ、帳票などへ表示します。
Accessとの違い
Accessは、データベース、入力画面、検索機能、帳票などを一体的に構築しやすく、1台または少数のパソコンで利用する比較的小規模なシステムに適しています。
SQL Serverは、データベースを管理するサーバーとして動作し、複数のFAパソコン、制御盤、事務所端末、業務システムから同時に利用する構成に適しています。
次のような場合には、SQL Serverを検討します。
- 複数の設備や端末から同時に利用する
- 複数設備の実績を一元管理する
- 大量のデータを長期間保存する
- 利用者ごとに権限を設定する
- 基幹・生産管理システムと連携する
- 将来的な設備や拠点の追加を予定している
選定時はデータ容量だけでなく、同時更新数、検索・集計の負荷、停止時の影響、バックアップ、保守体制、将来の拡張性を含めて判断します。
データを確定・保存するタイミング
設備から取得した値を、どの時点で正式な実績として保存するかは重要な設計項目です。計量完了時、排出完了時、バッチ完了時など、設備の運転フローに合わせて確定条件を定めます。
正常完了だけでなく、過計量、手動中止、異常停止、再計量なども区別して保存することで、後から運転経緯を確認できます。
登録処理が途中で失敗した場合に、一部のテーブルだけが更新されないよう、関連する複数の更新を一つの処理単位として扱うことも重要です。
複数設備・複数端末での利用
SQL Serverは、複数の計量制御盤から実績を集約し、製造現場と事務所で同じ情報を参照する構成に適しています。
ただし、複数端末から同じデータを更新する場合は、同時更新による競合を考慮します。先に更新した内容を後から別の端末が上書きしないよう、更新日時、状態、処理番号などを利用して競合を検出します。
また、SQL Serverやネットワークが停止した場合に、設備を継続運転するのか、PLCやFAパソコンへ一時的にデータを保持するのか、復旧後にどのように再登録するのかを決めておく必要があります。
基幹システム・生産管理システムとの連携
SQL Serverに保存されたデータは、生産管理、在庫管理、販売管理、品質管理などの上位システムと連携できます。
例えば、上位システムから製造指示や配合情報を受信し、製造完了後に実績値や使用原料量を返送する構成があります。
連携には、テーブルやビューへの接続、CSVファイル、API、専用通信ソフトウェアなどを使用します。データベースへ直接接続する場合は、参照・更新できる範囲、データ確定のタイミング、重複登録の防止、通信障害時の再処理方法を明確にします。
エディションの選定
SQL Serverには、システム規模や必要機能に応じた複数のエディションがあります。小規模システムでは無償のExpressが候補となり、複数設備の一元管理、定期処理、高い処理性能や可用性が必要な場合はStandard以上を検討します。
Expressは無償で利用できますが、CPU、メモリ、データベース容量、定期実行、高可用性などに制限があります。容量が上限内であっても、検索や帳票の負荷、バックアップ時間、同時利用数によっては上位エディションが適する場合があります。
エディションごとの機能、上限、ライセンス条件はバージョンによって異なるため、導入時点の公式仕様を確認します。
バックアップと復旧
計量実績や製造実績は、品質管理や顧客対応、トレーサビリティに関わる重要なデータです。バックアップの頻度、保存先、保存世代数、外部媒体や別サーバーへの複製、復旧に必要な時間をあらかじめ設計します。
バックアップファイルが存在するだけでは、復旧できるとは限りません。定期的に復元試験を行い、データベースだけでなく、専用ソフトウェア、帳票、接続設定を含めて運用を再開できることを確認します。
セキュリティとアクセス権限
SQL Serverでは、利用者やアプリケーションごとにアクセス権限を設定できます。実績を参照する利用者には読取権限のみを付与し、品種や配合などのマスターを変更できる利用者を限定する運用が可能です。
設備用ソフトウェアから接続する場合も、管理者権限を使用するのではなく、必要なテーブルや処理だけを利用できる専用アカウントを設定します。
このほか、通信経路の暗号化、不要な接続の制限、更新プログラムの適用、ログの確認、設備ネットワークと社内ネットワークの分離などを検討します。
バージョン更新時の注意点
SQL Serverを更新する際は、対象OS、FAパソコン、専用ソフトウェア、接続ドライバー、SQL文、ストアドプロシージャ、帳票、基幹システムとの互換性を確認します。
本番環境を直接更新するのではなく、検証環境でデータ移行、実績登録、検索、帳票、外部連携、バックアップ・復元を確認し、問題が発生した場合の切り戻し手順も準備します。
ハカルプラスのMicrosoft SQL対応
ハカルプラスでは、計量制御盤や関連システムにおいて、Microsoft SQL Serverを利用したデータ管理システムを構築しています。
データベースだけでなく、PLC、計量コントローラ、FAパソコン、操作画面、実績保存、帳票、基幹システム連携まで含め、設備全体の情報の流れを設計します。
AccessからSQL Serverへの移行、複数設備の実績集約、既設データの移行、FAパソコンやサーバー更新に伴うシステム更新についても、現在のデータ構造、保存量、帳票、外部接続、設備停止可能時間を確認したうえで検討します。
よくある質問
Q. SQL Serverが停止した場合、計量設備も停止しますか?
A. システム構成によって異なります。PLCや計量コントローラで設備制御を継続し、実績をFAパソコンなどへ一時保持する構成もあります。停止時に許容できる運転範囲と、復旧後の再登録方法を事前に決めます。
Q. 複数設備から同じ実績が二重登録されることはありませんか?
A. 通信再送やソフトウェア再起動によって、同じデータが再度送られる可能性があります。製造指示番号、バッチ番号、計量番号などの一意な識別情報を使用し、登録済みかを判定します。
Q. Accessの画面や帳票を残したままSQL Serverへ移行できますか?
A. 既存の画面や帳票をAccessに残し、データ保存先のみをSQL Serverへ変更できる場合があります。使用しているクエリ、VBA、接続方式、データ型などの確認が必要です。
Q. 上位システムからデータベースを直接更新しても問題ありませんか?
A. 更新対象やタイミングを明確にせず直接更新すると、設備側の処理と競合する可能性があります。連携専用のテーブル、ビュー、ストアドプロシージャ、APIなどを用意し、更新範囲を制限する方法を検討します。
Q. 仕様書がない古いSQL Serverシステムも更新できますか?
A. データベース構造、接続ソフトウェア、SQL処理、帳票、外部システム、バックアップ方法などを調査し、現行動作を整理したうえで更新方法を検討します。