kuriha27
2016年7月22日 11時14分
栗原と申します。
いつもお世話になっております。
Armadillo-IoT-G2において、起動後にアドオンモジュールの
状態(正常動作・異常動作など)を取得する方法をご教授願え
ませんでしょうか。
アドオンモジュールが正常に動作しているかいないかを検出
する監視プログラムを、C言語で作成したいと考えております。
以上、よろしくお願い致します。
コメント
kuriha27
at_koseki
古関です。
何をもってして、"正常動作・異常動作" とするかによりますね。
まず、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が目的であれば、
アドオンモジュールに接続する対向機側にも診断用の機構を設ける必要があり、
どこまで試験するのか、どこまで費用をかけるのかのトレードオフにもなるかと思います。
よろしくお願いします。
kuriha27
古関 様
いつもお世話になっております。
栗原です。
説明不足、申し訳ございません。
【通信が正常に行われているかどうか】よりは、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
> ---------------------------------------------------------
以上、よろしくお願い致します。
at_koseki
古関です。
> >-------------------------------------------------------------------------------------
> >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 |
at_koseki
2016年7月22日 11時19分
古関です。
どのアドオンモジュールをご利用でしょうか?