Technology
プリンター制御組み込みソフト設計
(プリンターせいぎょくみこみソフトせっけい)
プリンター制御組み込みソフト設計とは、マイコンを搭載した計測機器、計量機器、操作端末などからプリンターを直接制御し、パソコンを介さずに計測値、計量結果、日時、品種、警報などを印刷するための組み込みソフトウェア設計です。
パソコンでは、一般にOSとプリンタードライバーが印刷データをプリンター固有の形式へ変換します。一方、組み込み機器では、対象プリンターの通信仕様や制御コマンドに合わせて、データ変換、送信処理、印字レイアウト、異常監視、再印刷などを機器側へ実装する必要があります。
プリンター制御組み込みソフトの仕組み
マイコンは、機器内部に保持している計測値、設定値、日時、品種名などを印刷用の文字列へ変換し、プリンターが解釈できる制御コマンドと組み合わせて送信します。プリンターは受信したデータに従い、文字、数値、罫線、バーコードなどを用紙へ印刷します。
例えば、計量完了時に実績重量を印刷する場合、マイコンは重量値が安定したことを確認し、その時点の重量、単位、日時、品種などを確定します。その後、文字サイズ、改行、用紙送り、カットなどのコマンドを付加してプリンターへ送信します。
プリンター側にあらかじめ印字フォーマットを登録し、組み込み機器からフォーマット番号と可変データだけを送る方式もあります。この方式は送信データ量を抑えやすい一方、プリンター側の登録内容と機器側のデータ順序を正しく対応させる必要があります。
パソコンによる印刷との違い
パソコンでは、アプリケーションが作成した帳票をOSやプリンタードライバーが変換するため、利用者がプリンター固有のコマンドを意識せずに印刷できる場合が一般的です。
組み込み機器には、パソコンと同等のOSやプリンタードライバーを搭載できない場合があります。そのため、プリンターの仕様書を確認し、マイコンから直接送信できる通信処理とコマンド生成処理を設計します。
パソコンを介在させない構成は、装置をコンパクトにまとめやすく、電源投入後に短時間で印刷機能を使用しやすいことが特徴です。一方、利用できるプリンターや印刷機能は、組み込みソフトが対応した範囲に限られます。
主な用途
- 計量完了時の重量、日時、品種の印刷
- 電力、流量、温度などの計測結果の出力
- 日報、月報、積算値などの定期印刷
- 警報内容、発生時刻、復旧時刻の印刷
- 製品番号やロット番号を記載したラベル発行
- 点検結果、校正結果、設定値一覧の出力
計量機器では、重量安定後に自動印刷する方式と、作業者が印刷キーを押した場合だけ出力する方式があります。同じ計量結果を重複して印刷しないよう、印刷済み状態や発行番号を機器側で管理することも重要です。
対応する通信方式
シリアル通信
RS-232Cなどのシリアル通信は、組み込み機器と小型プリンターを接続する方式として広く利用されます。通信速度、データ長、パリティ、ストップビット、フロー制御を送信側とプリンター側で一致させます。
構成は比較的簡潔ですが、信号レベル、接続距離、コネクタ形状、送受信線の結線も確認する必要があります。通信条件が一致しない場合、文字化け、データ欠落、無応答などが発生します。
USB通信
USBプリンターを接続する場合、組み込み機器側がUSBホストとして動作し、対象プリンターの通信方式へ対応する必要があります。コネクタがUSBであっても、すべての市販プリンターをそのまま制御できるわけではありません。
USBプリンタークラスに対応しているか、メーカー独自ドライバーが必要かを確認し、マイコンの性能、メモリ容量、USBホスト回路で実装可能かを判断します。
Ethernet通信
Ethernet対応プリンターでは、TCP/IPなどを利用してネットワーク経由で印刷データを送信できます。機器とプリンターを離して設置しやすい一方、IPアドレス、ポート番号、接続状態、タイムアウト、再接続処理の管理が必要です。
ネットワークが一時的に切れた場合、再接続後に同じデータを再送すると二重印刷になる可能性があります。そのため、発行番号や応答結果を用いて再送条件を判断します。
設計上のポイント
プリンター固有の制御コマンド
プリンターによって、文字サイズ、印字位置、用紙送り、カット、バーコード印刷、状態取得などのコマンドが異なります。使用する機種の仕様書を確認し、必要な機能だけを組み込みソフトへ実装します。
将来プリンターを更新する可能性がある場合は、通信処理、印字データ作成、機種固有コマンドを分けて設計します。機種依存部分を整理しておくことで、交換時の変更範囲を限定しやすくなります。
数値から文字列への変換
計量値や計測値は、マイコン内部では整数や浮動小数点数として扱われます。印刷時には、小数点位置、符号、桁数、単位を整えた文字列へ変換します。
例えば、内部値が12345で小数点以下2桁として管理されている場合、印刷時には「123.45 kg」のように変換します。桁あふれ、負値、計測範囲外、センサ異常時の表示方法もあらかじめ定めます。
日本語を印刷する場合は、プリンターが対応する文字コードと内蔵フォントを確認します。対応していない文字を送ると、文字化けや空白になる場合があります。
印刷処理と計測処理を分離する
組み込み機器では、計測、表示、キー入力、通信、印刷などを限られた処理能力で実行します。印刷データの送信待ちによって、本来の計測周期や制御周期が遅れないように設計する必要があります。
印刷処理を割込み処理内で長時間実行せず、送信バッファやタスクを用いて非同期に処理する方法があります。計測値は印刷開始時に確定・保存し、印刷中に変化しないようにします。
メモリ容量を考慮する
組み込み機器では、RAMや不揮発性メモリが限られる場合があります。複雑な帳票、多数の日本語文字、大きな画像を扱うと、必要容量や処理時間が増加します。
固定部分をプリンター側のフォーマットへ登録し、機器側から可変データだけを送る方法や、印字内容を小さな単位に分けて送信する方法を検討します。
印刷タイミングと二重印刷を管理する
計量完了、測定完了、警報発生、定刻、キー操作など、印刷を開始する条件を明確にします。キーの長押しやチャタリング、通信再送、機器再起動によって、同じ記録が複数回印刷されないようにします。
印刷対象ごとに発行番号や印刷済みフラグを持たせ、再印刷は通常印刷と区別します。再発行時には、再発行であることや発行回数を印刷する構成も検討できます。
異常監視と復旧処理
プリンターによっては、用紙切れ、カバー開放、オフライン、印字ヘッド異常、温度異常などの状態を接点信号や通信応答で取得できます。組み込み機器側では、取得した状態を表示画面や警報出力へ反映します。
印刷データを送信できたことと、実際に印刷が完了したことは同じではありません。重要な記録では、受信応答、印刷完了応答、用紙排出信号など、プリンターが提供する確認方法を利用します。
一定時間応答がない場合はタイムアウトとし、通信異常として処理します。直ちに自動再送すると二重印刷になる可能性があるため、プリンター状態と発行番号を確認し、作業者操作による再印刷とする場合もあります。
停電時のデータ保持
印刷途中に組み込み機器やプリンターの電源が切れると、帳票が途中まで出力されたり、印刷済み状態だけが失われたりする可能性があります。重要な印刷対象は、発行番号、印刷データ、発行状態を不揮発性メモリへ保存します。
ただし、不揮発性メモリには書込み回数の上限があるため、計測周期ごとに保存するのではなく、計量完了や印刷状態変更など、必要なタイミングで保存します。
復電時は、未印刷、送信中、完了確認待ち、印刷済みなどの状態を判定し、自動再開するか、作業者の確認を求めるかを決めます。
印字品質と保守性
印字のかすれ、文字欠け、用紙送り不良があると、ソフトウェア上では正常でも記録として利用できません。用紙切れだけでなく、印字ヘッド、カッター、用紙センサなどの保守状態も重要です。
バーコードを印刷する場合は、印字濃度、線幅、余白、用紙材質によって読取性能が変わります。必要に応じて印刷後にバーコードリーダーで読み取り、発行データと一致するか確認します。
プリンター更新時の注意点
プリンターを別機種へ交換する場合、外形やコネクタが同じでも、通信条件、制御コマンド、文字コード、印刷解像度、状態応答が異なることがあります。そのため、組み込みソフトを変更せずに交換できるとは限りません。
長期使用する製品では、採用プリンターの供給期間、後継機、コマンド互換性も確認します。更新時に備えて、通信仕様、コマンド一覧、印字サンプル、ソースコードの版を管理することが重要です。
ハカルプラスの対応
ハカルプラスでは、計測機器、計量機器、専用操作端末などのマイコン搭載製品にプリンターを直接接続し、パソコンを介さずに印刷する組み込みソフトウェアを設計します。
使用するプリンターの通信方式とコマンド仕様を確認し、計測値、計量実績、積算値、日時、品種、警報などを所定のフォーマットで出力する処理を構築します。印刷タイミング、用紙送り、カット、再印刷、通信異常、用紙切れなどの処理も製品用途に合わせて設計します。
マイコン回路、電源回路、シリアル通信、USB、Ethernetなどの通信インターフェース、表示・操作部、データ保存機能を含め、計測から記録出力までを一体的に検討します。
既存製品へプリンター機能を追加する場合は、マイコンの処理能力、RAM・不揮発性メモリ容量、通信端子、電源容量、既存ソフトの処理周期を確認します。プリンター更新時には、新旧機種の通信仕様とコマンドを比較し、必要なソフト変更と動作試験を行います。
よくある質問
Q. 印刷処理を追加すると計測動作が遅くなることはありますか?
A. 印刷通信を待ち処理で実装すると、計測周期や画面更新へ影響する場合があります。送信バッファやタスクを利用し、計測処理と印刷処理を分離します。
Q. 印刷途中で通信が切れた場合は自動再印刷できますか?
A. 可能ですが、途中まで印刷されている場合は二重発行になる可能性があります。発行番号、プリンター応答、印刷状態を確認し、必要に応じて作業者承認後に再印刷します。
Q. 市販のUSBプリンターへ簡単に交換できますか?
A. USBコネクタが同じでも、プリンタークラスやメーカー固有仕様が異なるため、簡単に交換できるとは限りません。USBホスト機能と対応プロトコルを確認します。
Q. 停電後に未印刷データを残せますか?
A. 発行番号、印刷データ、印刷状態を不揮発性メモリへ保存すれば保持できます。メモリの書込み寿命を考慮して保存タイミングを設計します。
Q. 後継プリンターへ変更するときは何を確認しますか?
A. 通信方式、制御コマンド、文字コード、用紙幅、印刷解像度、状態応答、電源仕様を確認します。互換性がない場合は、組み込みソフトと回路の変更が必要です。
関連ワード
同じカテゴリの『ハカル技術辞典』を見る