
強引に3連休取って帰省中。
2連休すらレアな私には十分な「長期休暇」(
昨年の盆休みは2連休だったが、サイコーに思い出に残る2連休だった)。
ブログエントリ: 「
【PP1】【ECU】RS232C-TTL変換ケーブルをECUに取付 」
ブログエントリ: 「
【PP1】【ECU】ビート純正ECUとの通信プログラムの開発・チェック(失敗) 」
ブログエントリ: 「
【PP1】【ECU】ビート純正ECUとの通信プログラムのチェックPart2(失敗) 」
ブログエントリ: 「
【PP1】【ECU】ビート純正ECUとの通信プログラム更新→チェックPart3(失敗)」
の続き。
【1】visaconf.ini
NIのKnowledgeBaseの「
Can I Do 9-bit Serial Communication Instead of 7 or 8 bits?」のページに
------
One issue with this is that in LabVIEW 7.0 and later, when NI-VISA receives a data byte with incorrect parity, it completely replaces the serial data with the error character, which by default is '0'. LabVIEW 6.1 and earlier does not replace a data byte with a parity error replacement byte. You can change this behavior by modifying the visaconf.ini file.
Note that if your instrument only needs to receive the 9th data bit for addressing purposes, but never sends data on the 9th bit, you should only need to set the parity once to what your instrument is expecting.
Modify the visaconf.ini file to disable the error replacement bit:
For users of windows XP, the visaconf.ini file is located in the \All Users\Application Data\National Instruments\NIvisa folder.
For users of windows Vista or later, the visaconf.ini file is located in the C:\ProgramData\National Instruments\NIvisa folder.
Add the following lines to the file and save:
[ASRL-RSRC-ALIAS]
DisableErrorReplacement=1
------
と書いてあったので、該当のvisaconf.iniを探したが、今使ってるLV2009では「NIvisa folder」自体が見つからなかった。
そもそも、Databit=9やDatabit=10で、ポートポープンしようとするとエラーになっていたので、
「VISA Configure Serial Port (Instr).vi」
のエラー処理部を改造して、エラーを無視してポートオープンできるように改造しているのだが、これがiniファイルの書き換えに相当するんだろうか?
・・・まあ、もうどうでもイイや(笑)
【2】
ビートECU解析・通信の先駆者の方から
「アーベルのUSBシリアル変換アダプタをお使いのようですがたしかFTDIのチップでしたよね。コレって、9ビットデータを出せましたっけ?
欲しいのはデータ9ビット+パリティビットだったと思うのですが、何かでFTDIのチップでハマったような記憶も・・・」
というアドバイスを頂いた(ありがとうございますm(u_u)m)。
なるほど、プログラムとか、Windowsがどうとかだけでなく、USB-RS232Cインターフェースケーブルの問題の可能性もあるワケか・・・。5Vが正しく出力されているか・・・は気になってたが、そのあたりは全然着目していなかった。
(それまで「FTDI」という名称すら知らなかった私)
USB-RS232Cインターフェースケーブルは、Arvel SRC06-USBというモデルを使っている。
以前はいろんなメーカのもの(IO DATAとか)を使っていたのだが、手持ちのインターフェースケーブルがWin7 64bitのドライバがないものばかりだったので、昨秋、SRC06-USBに買い直した。
ググってみたら、確かにArvelはFTDIのチップのようだ。
このあたりは非常に弱いのだが、FTDIはどうも9bitに対応している(実際には8bit with parity?)・・・という情報もあれば、対応していない・・・という情報もあったり。
http://www.lvr.com/forum/index.php?topic=16.0
http://www.microchip.com/forums/m585274-print.aspx
http://www.ccsinfo.com/forum/viewtopic.php?t=38320
FTDIの本家サイトにはData Sheetsがたくさんあるが、たくさん種類があり過ぎて、どれがArvelに使われているものかがわからない(笑)
いくつかPDFをダウンロードしてみたところ、
UART interface support for 7 or 8 data bits, 1 or 2 stop bits and odd / even / mark / space / no parity
という表記がある。
この一文を、
「パリティ切替のプログラムでカバーできるよ!」
と解釈すべきか、
「DataBitは7か8しか無理やし」
と解釈すべきかワカラナイ(笑)
ダメ元でArvelに
「
SRC06-USBでは、9bitデータは送れますか?
正確には9bitデータ+パリティビットです。
9bitデータのコマンド送受信が必要な相手機器との通信プログラムを開発中なのです。
Databit=8としておいて、ParityをMarkなどにしてのプログラミングなどいろいろ検証しておりますが、うまくいっていないので、プログラムの問題なのか、SRC06-USBの問題なのかがわからない状況です。
ループバックテストでは、Databit=9でも送受信できているのですが、どうもDatabit=8としてバイトコードの送受信がされてしまっているように見えます。」
と問い合わせしてみた。
こういう問い合わせに対して、基本的にメーカの回答は期待できない・・・と思っていたが、次の日に回答がArvelではなくバッファローから届いた。
「本製品は、9bitデータを送信できる仕様となります。」
という一行回答(笑)
果たして??
【3】
ビートECU解析・通信の先駆者の方から
送受信の設定を8bitデータでパリティをマークにして、ストップビットを2ビットにしたら確立は50%(ECU側はストップビットをパリティだと理解するので、パリティエラーが半分出ますね)ですが、ECUから何か返事が来そうな気がします。送信のパリティをマークかスペースかで、強引に9Bit目のデータを作って、というのは無謀すぎますかね。」
というアドバイスを頂いた(ありがとうございますm(u_u)m)ので試してみたが、残念ながらECUからは返事がなかった。
(※プログラムの受信処理側は何の工夫もしていないので、ECUからの返信を処理できていないだけの可能性もあるが、何らか返信されていたら、ゴミでも何でもキャッチはできるハズ・・・)
【4】
・・・ということで、ジタバタしたが、
「ツール工房」の「RS232C-TTLレベル変換ケーブル」だけを使用して、9Databit+Parityを、プログラムだけでなんとかしようとするのは諦めた。
まだまだ勉強不足で、手もある気がするが。
NIのKnowledgeBaseの「
Can I Do 9-bit Serial Communication Instead of 7 or 8 bits?」のページにも
-----
2. Use a separate microcontroller that handles 9 bit frames:
Another option is to use a separate microcontroller with a UART that is made to handle 9 data bit frames and place it as an intermediary between the instrument and the computer. The computer would send two 8 bit data frames for each 9 bit frame, one with the first 8 bits, the second with the 9th bit, and have the UART reassemble this into one 9 bit frame to send to the instrument. Similarly the UART would receive a 9 bit frame from the instrument and return two 8 bit frames to the computer.
-----
って書いてるし(笑)
CZ500Cさん作のAVRを介して通信する方向で、Windows用のソフトウェアに専念しようかと。
ビート(PP1) ECU関連目次はこちら
ビート(PP1)関連目次はこちら
ブログ一覧 |
ビート ECU | クルマ
Posted at
2012/08/12 08:59:27