問題タブ [rs485]
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.
serial-port - Windows XP Embedded - RS485 の問題
XP が組み込まれたシステムがあり、COM2 はハードウェア RS485 ポートです。
私のコードでは、RTS_CONTROL_TOGGLEを使用して DCB を設定しています。私はそれが言うことをするだろうと思います...書き込み空の割り込みが発生したら、カーネルモードでRTSをオフにします。それは事実上瞬時に行われるはずです。
代わりに、PC がメッセージの終了よりも 1 ~ 8 ミリ秒長くバスを駆動していることをスコープで確認します。話しているデバイスは、約 1 ~ 5 ミリ秒で応答しています。だから...通信の破損が多発しています。いいえ、ターゲットの応答時間を変更する方法はありません。
RS232 ポートに接続し、スコープを TX および RTS ラインに接続したところ、同じ結果が得られました。RTS ラインは、メッセージが送信されてから 1 ~ 8 ミリ秒高いままです。
また、FIFO をオフにするか、FIFO の深さを 1 に設定しようとしましたが、効果はありませんでした。
何か案は?「SendFile、clear RTS」サイクル中に、REALTIME優先度でユーザーモードからRTSラインを手動で制御しようとしています。これがうまくいくという希望もあまりありません。これは、ユーザー モードでは実行しないでください。
embedded - 受信したメッセージについて上位層に通知するための推奨される方法
組み込み C プロジェクト用の RS485 ドライバーを作成しています。
ドライバーは着信メッセージをリッスンしており、完全なメッセージを受信して読み取る準備ができたら、上位層のアプリケーションに通知する必要があります。
これを行うための好ましい方法は何ですか?
割り込みを使用して?SW 割り込みをトリガーし、ISR 内からメッセージを読み取りますか?
アプリケーションがドライバーを定期的にポーリングするようにしますか?
linux - アトミック書き込みを検証する方法は?
私は (S[O|F|U] ネットワーク内と他の場所の両方で) 熱心に検索しましたが、これは珍しい質問だと思います。Debian Linux 2.6.28-4 を実行する Atmel AT91SAM9263-EK 開発ボード (ARM926EJ-S コア、ARMv5 命令セット) を使用しています。RS-485シリアルコントローラーと通信するためにttyドライバーを使用して(私は信じています)書いています。書き込みと読み取りがアトミックであることを確認する必要があります。ソース コードの数行 (カーネル ソースのインストール ディレクトリを基準として、この投稿の最後にリストされています) は、これを暗示しているか、暗黙のうちに述べています。
このデバイスへの書き込み/読み取りが実際にアトミック操作であることを確認する方法はありますか? または、/dev/ttyXX デバイスは FIFO と見なされ、引数はそこで終了しますか? コードがこの主張を強制していると単純に信じるだけでは十分ではないようです - 今年の 2 月のように、freebsd は小さな行のアトミックな書き込みを欠いていることが実証されました。. はい、freebsd が Linux とまったく同じではないことは承知していますが、私の言いたいことは、慎重に確認しても問題ないということです。私が考えることができるのは、データを送信し続けて順列を探すことだけです.もう少し科学的で、理想的には決定論的なものを望んでいました. 残念ながら、私は大学時代の並行プログラミングの授業について正確には何も覚えていません。平手打ちや正しい方向への突き出しに心から感謝します。返信を選択した場合は、事前に感謝します。
敬具、
ジェイス
ドライバー/char/tty_io.c:1087
アーチ/アーム/インクルード/asm/bitops.h:37
ドライバー/シリアル/serial_core.c:2376
また、man write(3) ドキュメントから:
パイプまたは FIFO への書き込みの試みには、いくつかの主要な特徴があります。
- アトミック/非アトミック: 1 回の操作で書き込まれた量全体が他のプロセスからのデータとインターリーブされていない場合、書き込みはアトミックです。これは、単一のリーダーにデータを送信するライターが複数ある場合に便利です。アプリケーションは、書き込み要求がアトミックに実行されると予想される大きさを知る必要があります。この最大値は {PIPE_BUF} と呼ばれます。IEEE Std 1003.1-2001 のこのボリュームでは、{PIPE_BUF} バイトを超える書き込み要求がアトミックであるかどうかは述べていませんが、{PIPE_BUF} バイト以下の書き込みがアトミックである必要があります。
embedded - MicrochipPIC用のModbusスタック
誰かがMicrochipPIC18プロセッサ用のModbusRTUスレーブのオープンソース実装を提案できますか?RS-232 /RS-485用のModbusRTUの実装を探していますが、Modbus TCP/IPの実装も歓迎します。
embedded - UART速度が間違っている可能性があります
私の脳は揚げられているので、これをコミュニティに渡すと思いました。
組み込みシステムに1文字を送信すると、常に2文字を受信したと見なされます。最初に受信した文字は(何らかの方法で)送信された文字にマップされているようで、2番目に受信した文字は常に0xffです。
これが私が観察したものです:
時計をチェックしましたが、大丈夫そうです。この動作しないバージョンと以前のバージョンの唯一の違いは、現在RS485チップを使用していることです。
信号をMCUまでトレースしましたが、正常に見えます(RXピンのビット値を確認しました)
error-handling - シリアル (RS485) を介した ascii の送信のためのシンプルで堅牢なエラー修正
シリアル (RS485) 経由で非常に低速のデータ接続を使用しています。9600 ボーの実際のデータ転送速度は、その約 25% です。
シリアル回線は、非常に高い EMR の領域を通過しています。ピーク変動は 3000 KV に達することがあります。
私は (まだ) 物理媒体の変更を強制する立場にはありませんが、単純で堅牢な前方誤り訂正スキームを導入することは容易に提案できます。この方式は、PIC18 シリーズ マイクロに簡単に実装できる必要があります。
アイデア?
c - カスタム RS485 プロトコル
分散システム内のシリアル通信用の単純なマルチドロップ RS485 プロトコルを作成しています。スレーブ デバイスが応答するために 20 ミリ秒のウィンドウが与えられるアドレス可能なモデルを使用しています。マスター uC は、接続されたデバイスを更新のためにポーリングし、それに応じて応答します。チェックサムを採用し、必要なオーバーラン予防策を講じて、接続されたデバイスが不正な形式のメッセージに応答しないようにします。この方法は、約 99% の状況で有効であることが証明されていますが、通信セッション中に新しいデバイスが導入されると、パケットが失われます。新しいデバイスを「ホット」に差し込むと、非常に短時間だけでも、スレーブ デバイスによって監視されている信号に悪影響が及びます。私はエンジニアリングのソフトウェア側にいます。しかし、TCP を再作成しようとせずにこの状況を緩和するにはどうすればよいでしょうか? ポーリング モデルを使用するのは、RTOS 機能を必要とせず、高速であり、アプリケーションで適切に機能するためです。基本的に考えて、各CPUに豊富なサイクルがあります。
atmel - 100 ピン uc3a1512 を RS-485 経由でデバイスに接続するのに役立つサンプル コードや提案はありますか?
RS-485 入力のみを受け入れるデバイスを接続して制御しようとしています。既存のUC3A1512経由でこのデバイスと通信したいと考えています。このインターフェイスを作成するのに役立つ既存のソース コードまたはサンプルを誰かが持っていますか?
RS-485 形式でデータを出力する方法が必要です。
往復通信を確立する必要はありません。デバイスにコマンドを送信する機能が必要なだけです。
私はAtmelの Web サイトとAVRFreaksを見てきましたが、私のプロジェクトにとって価値のあるものは何もありません。
Lin Engineeringが作成したこのAdobe PDFの 10 ページを参照して、通信する必要があるデバイスについて詳しく理解してください。
linux - pxa255 での RS485 サポート
カードに配置された rs485 を使用したい。私はarm-linuxに取り組んでおり、pxa255プロセッサを使用しています。arm-linux ツール チェーンにある "serial.h" は既に確認しましたが、cris などの他の環境ではサポートされていますが、残念ながら適切な rs485 設定構造体を見つけることができませんでした。では、rs485 を有効にするために低レベルのドライバーを作成する必要がありますか、それともこれを行うための他の簡単な方法はありますか?
rs485 - RS485を介した車載器通信
オンボードユニット(OBU)はRS485を介して通信できると聞いたことがあります。私の質問は、どうやって?
たとえば、OBUからのいくつかのランタイム変数の状態(どのドアが開いているかなど)を尋ねたいと思います。または別の例として、いくつかのデータをOBU(外気温)に送信したいと思います。
これらを行うには、どのプロトコルを実装する必要がありますか?どこかで利用可能なサンプル実装はありますか?
ありがとう、クリシー