0

CoDeSys を使用して 2 つのハードウェア間で値を送信する必要があるプロジェクトに取り組んでいます。使用中の通信システムはCANバイト単位でしか送信できないため、最大値は 255 です。

255 より大きい値を送信する必要があります。これを 1 バイト以上に分割し、受信側のマシンで再構築して元の値を取得することができます。

REAL値を 255 で割り、結果が 1 を超える場合は、値を分解して、残りを保持する 1 バイトと整数の 255 の量を保持する 1 バイトに分割できると考えています。

たとえば、355 は 100 の 1 バイトと 1 の別のバイトになります。

これを説明することはできますが、これを実際にロジックで記述する方法を理解するのに非常に苦労しています。

誰でもここで助けることができますか?

4

1 に答える 1

0

私があなたのことを正しく理解していれば、これはすべて CoDeSys で処理されます。1. CAN - はい、バイト単位ですが、CANopen を使用してはいけません。8 バイト配列の CAN フレームを送信するように要求する低レベル FB を使用していますか?

独自の 2 つのカスタム コントローラー (両方を CoDeSys でプログラミングしている) の場合は、netvariables を使用するだけです。Netvariables を使用すると、任意のタイプの変数を転送でき、あるコントローラーから変数リストを取得して別のコントローラーにインポートすると、すべてのデータが表示されます。フードの下にあるハンドルである変数操作を行う必要はありません。しかし、あなたのシステムの詳細とあなたが何をしようとしているのかはわかりません。

コンストラクト変数をあるサイズから別のサイズに分解しようとしている場合、それは簡単です。そのコードをあなたと共有できます。

于 2015-11-14T00:52:07.427 に答える