問題タブ [modbus]
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.
visual-studio-2010 - MFC の libmodbus
libmodbus によって提供される modbus ライブラリを Visual Studio 2010 のカスタム MFC プロジェクトに統合しようとしています。
私がこれまでに行った手順は次のとおりです。
1) 以下のスナップショットに示すように、Visual Studio 2010 でプロジェクトを作成しました。
2) コードを編集して、コンパイルできるかどうかを確認するためだけに、小さな hello world コードを含めました。
3) 以下に示すように、libmodbus-3.0.3 の src フォルダーから Visual Studio プロジェクト フォルダーに .c および .h ファイルをコピーし、それらをプロジェクトに含めました。
4) コンパイルしようとすると、次のエラーが表示されます。
私の疑問は次のとおりです。
1) プロジェクトに libmodbus を正しく含めましたか? または、同じことを行うためのより良い方法または正しい方法はありますか?
2) 発生するエラーを解消する方法: インクルード ファイル 'config.h' を開けません。そのようなファイル、又はディレクトリはありません。http://libmodbus.org/download/
からダウンロードした libmodbus-3.0.3 に config.h ファイルがないことがわかりました
。
ありがとうございました。
function - Seneca Z-3AO は機能 5 コード (Modbus RTU) を認識しますか?
ユーザーマニュアルでは、機能コード 3、6、および 16 を実装できる「アナログ出力保持レジスタ」のアドレスのみを指定しています。
PS。Eprflag レジスタ (ビット 12) の 1 つのコイル (ビット) を変更したいのですが、ユーザー マニュアルにはそのコイルのデータ アドレスが指定されていません。例: ビット 12 にはコイル番号 00002 があり、データ アドレスとして 2-1=1 が得られます。
arduino - Arduino ModBus通信
私はArduinosのマスター/スレーブコードを持っています。それらをArduinoボードのピンに接続するにはどうすればよいですか? SimpleModbusライブラリを使用していますが、接続に関する情報がありません。
ライブラリは
vala - 配列を参照渡しするために Vapi 定義で使用するパラメーター
libmodbus を使用して、ModbusTCP を使用して単一のデバイス レジスタを読み取る次の C コードがあります。
私が生成したVapiを使用してこれをValaに切り替えようとしています.newとreadの内容は次のとおりです。
翻訳されたValaプログラムは次のとおりです。
偶然にも、これを C コードにコンパイルしてから gcc を使用してバイナリにコンパイルすると、次のエラーが発生します。
これは驚くべきことではありません。しかし、Vapi の内容を libmodbus ヘッダーのプロトタイプに近づけるためにどのように変更すればよいかわかりません。
配列オプションを組み合わせて「out」を使用してみましたが、一度に複数の 2 バイト レジスタを取得できませんでした。
提案をありがとう。
python-3.x - Pythonでbytearrayのバイトを再配置するにはどうすればよいですか?
私はPythonを初めて使用し、組み込み関連の作業を行っています(私のプログラミング経験のほとんどはCを使用しています).
シリアル ポートから 4 バイトの float を bytearray に読み込んでいますが、通常のリトル エンディアン順の DCBA ではなく、CDAB としてエンコードされています。または、BADC としてエンコードされている可能性があります。(ここで、A は最上位バイトで、D は LSB です)。bytearray でバイトをスワップする正しい方法は何ですか?
たとえば、私は
バイトを tmp に任意に配置し、unpack() して float に戻せるようにしたいと考えています。
このようなことは、組み込みシステムに関連することを行うときに不可欠なように思えますが、グーグルで間違っているか、明確な答えがありません (まだ!)。
編集:確かに、私はこれを行うことができます:
しかし、もっと良い方法があるはずです...
理想的には、好きなようにスライスして再連結したり、可能であればスライスを一度に置き換えたりしたいと考えています。
python - Python modbus ライブラリ
シリアル インターフェイスで modbus デバイスを制御する必要があります。Modbusの経験がありません。しかし、私の簡単な調査では、いくつかの modbus ライブラリが明らかになりました
長所/短所は何ですか、さらに良い代替手段はありますか?
modbus - Modbus/TCP データの合計の長さはどのようにしてわかりますか?
Modbus/TCP パケットには、Modbus/TCP データの合計の長さから 6 バイトを引いた長さセクションが含まれます。Modbus/TCP データの合計の長さはどのように計算しますか?
java - バイト配列の CRC チェックサムを取得し、そのバイト配列に追加する
私はこのバイト配列を持っています:
これで、このバイト配列の CRC チェックサムは 0x60、0x0A になるはずです。Java コードでこのチェックサムを再作成したいのですが、再作成できないようです。私はcrc16を試しました:
Integer.toHexString() を使用してそれらを変換しますが、正しい CRC と一致する結果はありません。誰かがCRC式に関して正しい方向に向けてくれませんか。
c# - 時限イベントから機能に戻る方法
さて、私はあなたが推測したreadSensorと呼ばれる関数を持っています..センサーを読み取ります。
しかし、センサーは通常、応答するのに約 100 ミリ秒かかります。したがって、 readSensor 関数では、基本的にタイマーを開始しています。
時限イベントで、シリアルポートを読み取り、応答を取得します。
ただし、これは、readSensor 関数に入れたいときに、応答が onTimedEvent にあることを意味します。
基本的にメインフォームからこれができるようにしたいです。
値 = readSensor()
現時点で私ができることは readSensor() だけであり、timedEvent が発生すると、応答がメッセージボックスに表示されることで返されていることがわかります。
これが私のコードです。(シリアルポートのセットアップなどをたくさん見逃してしまいましたが、私が抱えている問題を見ていただけると幸いです)
タイマーをポーリングしても、プログラムが遅くなるため、関数で100msだけ待機したくありません..
どうにかして応答を readSensor 関数に戻し、フォームに戻したいと考えています。
メインフォームでは、基本的に言っているだけです
ボタンクリックで。