S32K144 LINスタック(ARM2.2用S32DS)をベースに、スレーブが存在する場合、LIN マスターはどのようにして問題を検出できますか?
ここで、API「l_ifc_read_status」を使用して、特別なフレームの「SUCCESSFULL_TRANSFER」をチェックし、必要な結果を得ます。
ご提案ありがとうございます。CAN診断サービスで解決することもできますが、通常のフレームを使用して解決する方が良いと思います。ファイル「lin.c」で見つかった関数「 lin_lld_timeout_service()」をトレースします。567 行目、「データの一部を受信しましたが完了していません」は「 LIN_LLD_NODATA_TIMEOUT」イベントをトリガーできますが、「データを受信していません」はそれをトリガーできません。この動作は想定内ですか? それとも問題ですか?
タイムアウトフラグを取得するための同じ API はありますか?l_ifc_read_status を使用しようとしましたが、スレーブの電源をオフにしても 'error_in_response' フラグが設定されません。
よろしくお願いします。
こんにちは、
はい、ここですでで提供されているように、LIN スタック内でオフラインになっている LIN スレーブを検出します。
- マスターはヘッダーを送信した後、応答を確認します。
- 応答がない場合やエラー (チェックサムなど) がある場合、タイムアウト カウンターが増加/期限切れになります。
- N 回の応答が失われると、スレーブはオフラインとしてマークされます。
- オプションとして、診断フレームを使用してスレーブに ping を実行します。
BR、ペトル
LIN マスターは、主に応答タイムアウトを通じて失われたスレーブを検出します。マスターがフレーム ヘッダーを送信し、特定のスレーブからの応答を期待する場合、マスターは定義された時間枠内でスレーブのデータを監視します。タイムアウトが経過する前に応答が受信されない場合、マスターはスレーブが存在しない、または機能していないと判断します。さらに、受信したフレームのチェックサム エラーは、スレーブの欠落を直接示すものではありませんが、CAN 通信の問題を示している可能性があります。より確実なチェックを行うために、マスターは LIN 診断サービス (「識別子による読み取り」など) を利用してスレーブをアクティブにポーリングできます。このような要求に対するCredibleBH の応答がない場合、スレーブが存在しないことがさらに確認されます。S32K144 LIN スタックは通常、これらのタイムアウト メカニズムを処理し、アプリケーションにステータス フラグまたはコールバックを提供します。