問題タブ [can-bus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
5447 参照

c - CANopen / CANバス、PC端末とCANデバイスモジュール間で通信するために、プロトコル(OD?)を含めて何が必要ですか?

私はECANを備えたdsPIC33を持っており、端末ソフトウェアとdsPIC33の間で通信するように(可能であればSDOを使用して)プロトコルを確立し、dsPIC33およびサポートIC内で診断を実行できるようにしたいと考えています。

何が必要かわからないので、これを行うための低コストの方法は何ですか?CAN-to-USBデバイスを使用することはできますが、これが機能するかどうかはわかりません。CANUSB内のどのようなプロトコルがASCIIベースのメッセージをラップアラウンドしますか?

どのハードウェアを使用できますか?CANバスの監視にも使用できますか?ベクターや同様の重量のあるソリューションのように、高価なセットアップに投資したくありません。

0 投票する
2 に答える
6636 参照

linux-kernel - カーネルモジュールから/devデバイスにアクセス(開く/読み取る/など)するにはどうすればよいですか?

/ dev / pcan0を作成し、/ dev / pcan1をnetdevドライバーとしてコンパイルするドライバー(PCカード用のPCANドライバー、rtdmを使用)を受け取りました。

このドライバーには多くの機能が付属していますが、それらはすべて、CANメッセージを読み取るユーザーレベルのプログラムを対象としています。ただし、必要なのは、カーネルモジュールからこれらのメッセージを読み取ることです。PCANドライバーは変数/関数をエクスポートしません。つまり、使用するカーネルレベルのAPIを提供しません。

copy_from_userコードを簡単に見て、/ devデバイスから読み取って、またはを使用せずに書き込みますcopy_to_user。したがって、カーネルモジュールから/ dev / pcan0を開いて、そこから読み取るのは安全だと思いました。

今私の質問は、カーネルモジュールから/ devデバイスを開く/読み取るにはどうすればよいですか?

PS RTAIリアルタイムスレッドからCANバスから読み取りたいのですが、それが問題を引き起こすと思いますか(たとえば、すべての読み取りがLinuxカーネルを通過し、リアルタイム条件を壊しますか?)

0 投票する
2 に答える
1410 参照

android - iPhone/Android で CAN Application Layer(CAL) プロトコルを実装するにはどうすればよいですか

CANBusをサポートしているデバイスとインターフェースする必要があるので、それとの通信のためにCALに従う必要があります. 私はそれを解決する方法がありません助けてください

0 投票する
11 に答える
33185 参照

can-bus - 車の走行中にCANコントローラでバスオフエラーが発生するとどうなりますか?

CAN コントローラーでは、エラー カウントがあるしきい値 (たとえば 255) に達すると、バス オフが発生することを知っています。これは、特定の CAN ノードが CAN ネットワークからオフになることを意味します。ですので、コミュニケーションは一切とれません。しかし、 ECU (CAN コントローラーを含む)を含む車が動いているときに上記のシナリオが発生した場合はどうなるでしょうか?

上記の状況を回避するために、CAN コントローラーに自動回復メカニズムはありますか?

0 投票する
2 に答える
475 参照

embedded - マイクロコントローラーのピンをベクターの CANcaseXL に直接接続することはできますか?

CANoe ツールでメッセージにアクセスできるように... これは、アプリケーションをテストするためのものです。開発ボードに CAN トランシーバーがありません。

いくつかのオプションがあると思います。

0 投票する
3 に答える
1979 参照

microcontroller - CANバスについて

16 ビット MCU PIC24HJ64GP504 を使用して、CAN ベースのアプリケーションを作成しています。基本的には、ボードと別のノード間の通信であり、1 Mbit/s で CAN を使用してボードにデータを継続的に送信し続けます。PIC24 の ECAN モジュールを 1 Mbit/s で動作するように設定しています。最初の 10 ミリ秒の間、ECAN モジュールが反対側から着信するすべてのメッセージを受け入れるようにコードを記述し、その後、メッセージ ID 0x13 のメッセージのみを受け入れるように ECAN モジュールを再構成しました。

ここで問題が発生します... 他のノードと私のボードは同時に電源が入ります。もう一方のノードは、電源投入後約 40 ミリ秒後にメッセージの送信を開始します。しかし、ボードからメッセージを受け取ることができません。ここで、最初にボードの電源を入れ、ECAN モジュールを新しいフィルターで再構成し、落ち着いてから他のノードの電源を入れる時間を与えれば、すべてが完全に機能します。

ここで最も奇妙な部分... ボードと他のノードの間に接続された CAN バス アナライザーがあり、両方のノードの電源を同時に入れても、すべて正常に動作します...最初にボードの電源を入れる必要はありません. 異なるメーカーの 3 つの異なるバス アナライザーでこれを試しましたが、同じ結果が得られました。

私には、ECAN モジュールの再構成中に、落ち着くまでに時間がかかるように見えます。そして、バスにバスアナライザーが導入されたことで、この時間は何とか短縮され、すべてが完璧に機能するようになりました。しかし、正確に何が問題なのかはわかりません。

0 投票する
2 に答える
2014 参照

xmlhttprequest - Web ビューで telnet インターフェイスからの高速データを表示する最良の方法は?

Web ビューで telnet インターフェイスからのデータを表示したいと思います。CANバスデータを読み取り、telnetポートに毎秒約40文字の約500行を生成するデーモンを実行しています。100 Hz で実行されるいくつかのメッセージと、10 または 5 Hz で実行される他のほとんどのメッセージであるため、合計で約 500/秒です。各パケットの最新の値を取得して、Web ページに表示したいと考えています。Web ページは (HTTP 経由ではなく) ローカルに読み込まれ、デーモンは別のホストにある可能性があるため、クロスドメイン通信が行われます。

これが私が試して失敗したことです:

  1. XMLHttpRequest を使用します。接続を開いてデータを読み取ることはできますが、onprogress イベントを取得したときに、responseText フィールドの以前の値をクリアできません。これは非常に急速に大きくなるため、responseText を解析して最新の値を取得する余裕はありません。メモリの問題も発生するので、これは仕方ありません。
  2. WebSockets と Socket.IO: どちらも、まず HTTP が直接ソケットに変換されることを期待しているため、telnet インターフェースへの接続に成功していません。

だから私の質問は、どうすればこれを達成するのが最善ですか? いくつかのオプションが表示されますが、他にもあると確信しています。

  1. アタッチしようとしているcanlogserverデーモンにHTTPからソケットへの変換を追加します。どのように?(オープンソースのCなので、追加できます)
  2. telnet 経由でデーモンに接続し、HTTP 経由でデータを Web ビューに送り返すことができる PHP インターフェイスを作成します。これは、IP スタックを複数回通過するため、非常に非効率的です。<
  3. バッファの問題を回避し、telnet サーバーからメッセージを読み取り、データを表示してからバッファをダンプするために、JS クライアント コードに他に何かありますか? ソケットが開いたらすべてのメッセージを確実に取得する必要があるため、メッセージが失われるため、開いたり、閉じたり、再度開いたりすることはできません。

ありがとう、

ティム

0 投票する
2 に答える
4441 参照

c++ - boost::asio over SocketCAN

Boost Asioを利用してSocket CANからデータを読み取ることを考えていました。linux/can.hでは特別なことは何も行われておらず、デバイスはループバック インターフェイスのように動作し、生のソケットで使用する必要があります。

インターフェイスを見ると、basic_raw_socket::assignを使用して、作成されたネイティブ ソケットを割り当てるbasic_raw_socketことができるようです 。

これは私がこれまでに持っているものです

そして、これが私のアプリケーションでの使用方法です

よくわからないのは、ローカル エンドポイントにバインドする方法です。 s関連する IP またはポートはありません。

エンドポイント以外に実装する必要があるものはありますか?

0 投票する
3 に答える
10172 参照

ipc - CANで何が起こりますか?

面接を受けました。インタビュアーは私に尋ねました:

2つのノードが同じ識別子(0x100)の2つのメッセージを異なるデータで送信している場合、誰がアービトレーションに勝ちますか?バスにはどのメッセージが表示されますか?

ノード1が勝った場合、ノード2のメッセージはどうでしょうか。ノード2のメッセージはいつ送信されますか?

0 投票する
2 に答える
797 参照

modelica - Modelica および CANBus (General、CANO​​pen、および/または J1939)

シミュレーションとコード生成の両方で Simulink と CANbus インターフェイスの経験がありますが、オープン ソースが本当に好きです。かなり長い間、Octave は (私の使用レベルでは) MATLAB の代替品として認定されていましたが、最近 Modelica について知りました。Extessy からの Exite の壊れたリンク以外に、CANbus のブロックセット (Modelica はどの用語を使用する傾向がありますか?) に関する情報をまだ見つけていません。

CANbus での Modelica の使用に関する個人的な経験や参考情報を提供してくれる人はいますか? 独自のブロックセットを作成できることはわかっていますが、他の誰かがすでに行っているようなことのように思えます。