「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。
私は、組込みソフトウェア開発とパソコンソフトウェア開発を担当している入社19年目の社員です。
以前、CAN通信でマイコン基板間の通信をするシステムを担当しました。
その際、マイコン基板の代わりに使えるCAN通信シミュレータをPEAK-System社の「PCAN-Basic」を使って開発しました。
今回は、PCAN-Basicを使ったCAN通信シミュレーション方法とCAN通信シミュレータを活用した開発事例について、紹介します。
CAN通信は、「Controller Area Network」の略で、1980年代にドイツのBosch社によって開発された通信プロトコルです。
もとは自動車の中でエンジンやブレーキ等の機器同士が情報をやり取りするために使われていましたが、今では様々な分野で使われています。
CAN通信では、複数の機器が同じ通信線(バス)を使ってやり取りをします。
接続する機器に主導権を持つ機器がなく、対等な立場で通信します。
通信を行う際にバスの空き状況を確認して、バスが空いている場合に送信が可能となります。
複数の機器が同時にメッセージを送信しようとした場合は、メッセージに含まれるIDの優先度を使って、優先度の高い方が先に送信されます。
送信されたメッセージは、バスにつながっているすべての機器で受信できるという特徴があります。
また、CAN通信は最大1Mbpsの速度で通信でき、ノイズに強い差動伝送方式を使っているため、安定した通信が可能です。
PCAN-Basicは、CAN(Controller Area Network)通信またはCAN FD(Flexible Data Rate)通信を行うためのソフトウェア開発用APIです。
このAPIを利用することで、PEAK-System社が販売しているCANアダプタを使って、ソフトウェアがCAN通信を行うことができます。
対応しているプログラム言語は、C++、C#、C++/CLR、Delphi、VB、Java、Pythonです。
PCAN-Basicの機能は、「接続(Connection)」、「設定(Configuration)」、「情報取得(Information)」、「CAN通信(Communication)」の4つに分類されます。
それぞれの機能は、以下の通りです。
マイコン基板とWindowsパソコンの間でCAN通信を行うシミュレータをC++で開発した事例を紹介します。
このシミュレータを使うことでシミュレータを組み合わせた柔軟な環境を構築することができ、開発の効率や品質が向上しました。
以下に、開発事例のシステム構成図を示します。
図1では、複数のサブ基板が、同じCANバス上に接続されて、それぞれが個別に動作して、CAN通信を行います。
図2では、複数のサブ基板を1つのCANシミュレータに置き換えました。
このCANシミュレータは、CAN/ USB変換(PCAN-USB Pro FD)を1台接続して、複数のサブ基板の代わりにCAN通信を行います。

図1. システム構成図(実機構成)

図2. システム構成図(シミュレータ構成)
シミュレータの機能を以下に記載します。
画面イメージは、下図のとおりです。

図3. シミュレータ画面イメージ

システム開発時は、シミュレータを組み合わせた環境とマイコン基板のみの環境を状況に応じて使い分けながら、開発を進めました。
ここでは、シミュレータを活用した環境のメリットとデメリットについて、紹介します。
通常、マイコン基板で異常ケースを確認する場合には、マイコン基板のソフトウェアを変更する必要があります。
開発したシミュレータには、通信の無応答設定やマイコン基板に通知する情報の設定を具備しました。
そのため、このシミュレータを使うことでソフトウェアの変更をせずに異常ケースの確認をパソコン上の簡単な操作ででき、テストの効率が向上しました。
例えば、特定のマイコン基板のみ無応答にする異常ケースでは、ソフト変更やマイコン基板の接続順の見直しが必要です。
しかし、シミュレータを使う場合、無応答設定を切り替えるだけで異常ケースの簡単に確認ができます。
注意点としては、シミュレータは、あくまでも開発用のツールですので、最終的には実際の環境で確認する必要があります。
マイコン基板のみの環境で動作確認をする場合、治具などの機材を準備し、人が手動で操作する必要があります。
このような作業を数十分も繰り返すと、操作ミスが起こる可能性が高くなります。
シミュレータはパソコン上で動作するため、マクロツールを使えば、無人で同じ操作を繰り返すことができます。
例えば、シミュレータの入力状態のON/OFFを切り替えるという操作を自動化できます。
これにより、長時間のテストでも安定して確認ができ、作業効率も大幅に向上します。
シミュレータ構成は、実機構成に近い動きを再現できますが、必ずしも同じ動きになるとは限りません。
例えば、複数の入力に応じて動作する場合、入力のタイミングや順番の違いにより、違う動作結果となることがあります。
機能の複雑さに応じて、関連する信号が増えることにより、再現させることが非常に難しくなります。
そのため、シミュレータ構成と実機構成の入力が一致しているかどうか、細かく確認する必要があります。
CAN通信シミュレータ開発で使用したPCAN-Basicとそのシミュレータを活用した開発事例について、紹介しました。
TCP/IP通信シミュレータやシリアル通信シミュレータを開発した経験があれば、PCAN-Basicを使うことで簡単にCAN通信シミュレータ開発ができると思います。
CAN通信をするパソコンソフトウェアを開発する際に参考にしていただければ幸いです。
(T.M.)
関連ページへのリンク
関連するソフテックだより
「ソフテックだより」では、みなさまのご意見・ご感想を募集しています。ぜひみなさまの声をお聞かせください。