Armadilloフォーラム

アドオンモジュールの状態監視

kuriha27

2016年7月22日 11時14分

栗原と申します。
いつもお世話になっております。

Armadillo-IoT-G2において、起動後にアドオンモジュールの
状態(正常動作・異常動作など)を取得する方法をご教授願え
ませんでしょうか。

アドオンモジュールが正常に動作しているかいないかを検出
する監視プログラムを、C言語で作成したいと考えております。

以上、よろしくお願い致します。

コメント

古関さま

いつもお世話になっております。
栗原です。

以下のアドオンモジュールになります。
・絶縁RS232C/422/485 アドオンモジュールRS01 OP-AGA-RS01-00
・絶縁デジタル入出力/アナログ入力アドオンモジュール DA00 OP-AGA-DA00-00

以上、よろしくお願い致します。

古関です。

何をもってして、"正常動作・異常動作" とするかによりますね。

まず、kernelがアドオンモジュールを認識できた場合、
以下のログが出力されるので、それを確認するという手があります。
-------------------------------------------------------------------------------------
Atmark Techno RS485/RS422/RS232C board detected at CON2(Rev 2, SerialNumber=xxxx).
Atmark Techno DI/DO/AD board detected at CON2(Rev 1, SerialNumber=xxxx).
-------------------------------------------------------------------------------------

ただし、これはアドオンモジュールに搭載されている
EEPROMと通信さえ出来れば出力されてしまうため、
アドオンモジュールのハードウェアを全てチェックできた事にはなりません。

■ ・絶縁RS232C/422/485 アドオンモジュールRS01 OP-AGA-RS01-00
実際に通信・機能確認してみないことには、チェックは難しいです。

ベターな方法としてはループバック試験になります。

入力信号と出力信号を接続し、出力信号をhigh/lowして、入力側で値が同じになることを確認する方法です。
例えば、RS232Cであれば、TXとRXを接続し、出力したデータが自身に返ってくればOKとします。

■ ・絶縁デジタル入出力/アナログ入力アドオンモジュール DA00 OP-AGA-DA00-00
デジタル入出力であれば基本的にGPIOとしてループバック試験が可能です。

アナログ入力(AD)であれば、
下記のコマンドで"mcp3202"が見えればADコンバーターが認識できているので
OKとする手がありますが、これも同様に、電圧取得ができるかの確認にはなりません。
---------------------------------------------------------
[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/name
mcp3202
---------------------------------------------------------

ADコンバーターの動作を確認するのであれば、
リファレンス電圧となる信号に接続し(リレーなどで切り替えられるようにして)
実際に測定してみる必要があるかと思います。

出荷前や納品時の検査が目的であれば、ループバック試験やリファレンス電圧測定は容易だと思いますが、
運用時の自己Diagnosisが目的であれば、
アドオンモジュールに接続する対向機側にも診断用の機構を設ける必要があり、
どこまで試験するのか、どこまで費用をかけるのかのトレードオフにもなるかと思います。

よろしくお願いします。

古関 様

いつもお世話になっております。
栗原です。

説明不足、申し訳ございません。

【通信が正常に行われているかどうか】よりは、Armadillo-IoT-G2が
【アドオンモジュールを認識しているかどうか】を検出したいと考えて
おります。

>-------------------------------------------------------------------------------------
>Atmark Techno RS485/RS422/RS232C board detected at CON2(Rev 2, SerialNumber=xxxx).
>Atmark Techno DI/DO/AD board detected at CON2(Rev 1, SerialNumber=xxxx).
>-------------------------------------------------------------------------------------

上記のログの場合、起動時はアドオンモジュールを認識したが、一定
時間経過後もアドオンモジュールを認識しているかが分からないと考えて
おります(合っていますでしょうか?)。

現在、以下の二通りのパターンを考えており、一定時間経過後も
Armadillo-IoT-G2がアドオンモジュールを認識している事を確認する
方法をご教授願えませんでしょうか。

パターン1 COM1:絶縁RS232C/422/485  COM2:絶縁RS232C/422/485
パターン2 COM1:絶縁RS232C/422/485  COM2:絶縁デジタル入出力/アナログ入力

以下の方法の様に、ファイルを参照すると単純にアドオンモジュールを
認識しているかどうか確認できると助かります。

>アナログ入力(AD)であれば、
> 下記のコマンドで"mcp3202"が見えればADコンバーターが認識できているので
>OKとする手がありますが、これも同様に、電圧取得ができるかの確認にはなりません。
>---------------------------------------------------------
>[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/name
> mcp3202
> ---------------------------------------------------------

以上、よろしくお願い致します。

古関です。

> >-------------------------------------------------------------------------------------
> >Atmark Techno RS485/RS422/RS232C board detected at CON2(Rev 2, SerialNumber=xxxx).
> >Atmark Techno DI/DO/AD board detected at CON2(Rev 1, SerialNumber=xxxx).
> >-------------------------------------------------------------------------------------
>
> 上記のログの場合、起動時はアドオンモジュールを認識したが、一定
> 時間経過後もアドオンモジュールを認識しているかが分からないと考えて
> おります(合っていますでしょうか?)。
はい。合っています。
起動するときに一度しか表示されませんので。

> 【アドオンモジュールを認識しているかどうか】を検出したいと考えております。
なるほど。
であれば、アドオンモジュールに実装されている
EEPROMが見えれば接続されている、とするのが良いと思います。

c言語でアドオンモジュールのEEPROMにアクセスするコードを添付します。

CON1にアドオンモジュールが接続されていないとエラーになります。

CON2で動かすにはソースコードの

int addr = 0x50;

int addr = 0x51;

にしてください。

ファイル ファイルの説明
addon-eeprom.c