問題タブ [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.

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

android - Modbus アンドロイド アプリケーション Eclipse

私はアンドロイドが初めてです。eclipse で modbusdroid の Java コード プログラムを実行しようとしています。コードは変更せず、最新バージョンの seroUtils.jar をダウンロードしただけで、欠落していたためプロジェクトに追加しました。エラー ログが添付されています。Eclipse ソースで実行するときに助けてください- https://github.com/bigcat/ModbusDroid

0 投票する
1 に答える
3874 参照

java - modbus4jでスレーブIPModbusTCPを設定する方法は?

を使用してJavaアプリケーションをプログラミングしていますmodbus4j

PCのJavaアプリケーションからコントローラー%MWを読み取ります。M258

modbus4jプロジェクトで私はこのサンプルを見つけました:

しかし、IPをスレーブに割り当てる方法がわかりません。

このサンプルでは、slaveID​​(int)のみが表示され、スレーブIPは表示されません。

スレーブIPをどのように書くことができるか知っていますか?

0 投票する
1 に答える
1364 参照

c# - NModbus 書き込みファイル レコード

ひょっとして、nmodbus を使用して Write File Record 関数 (0x15) を実行できるかどうか知っていますか? nmodbus のドキュメントでこれについての言及を見つけることができません。FtdAdapter に書き込み機能があることがわかります。似ていますか?この目的で nmodbus を使用する代わりに何ができますか?

0 投票する
1 に答える
1680 参照

html - Modbus TCP/IPとのHTML5オフラインWebアプリ通信

それが不可能だと思っても、あなたに聞いてみてください:外部サーバーなしでModbus TCP / IPを使用してマシンと通信するためのWebアプリ(オフライン/オンライン)を作成することは可能ですか?

ポイントは次のとおりです。ModbusTCP/IPを使用して情報を送受信するマシンを販売しており、外部サーバーを経由せずに通信できる純粋なHTML5オフラインキャッシュマニフェスト機能を使用してスタンドアロンのWebアプリを作成したいと考えています(構成を受信して​​localStorageに保存するための初回起動)。

私はこれらができるとは思いませんが、私が間違っていれば私はとても幸せです;-)

Node.jsを使用してTooTallNateを発見し、すでにphpmodbusを使用しましたが、これらにはデバイス(スマートフォンまたはデスクトップブラウザー)とマシンの間にサーバーが必要です。

だから私の質問は:それは可能ですか?その場合、存在する場合はどのJavascriptライブラリを使用できますか、または必要な情報はどこにありますか?

よろしくお願いします。よろしくお願いします

0 投票する
1 に答える
2422 参照

java - 0xFF を送信し、符号付きバイトで CRC を計算する - WriteSingleCoil & ModBUS & Java & Android -

編集および解決済み(以下)

Java for Android を使用して、バイト 255 (WriteSingleCoil 関数の 0xFF) を ModBUS サーバー デバイスに送信しようとしています。

デバイスが実行されていません。符号付きバイト -1 を解釈できないためか、CRC の計算が間違っているためかはわかりません。負のバイトの CRC を計算する方法がわかりません。

要約: Java から ModBUS サーバーへのコイルのスイッチをオンにする関数 05 Write Single Coil を 0xFF 値で送信する方法がわかりません。

誰でも私を助けてもらえますか?

解決:

" iIndex = ucCRCLo ^ b: このような操作は、iIndex = (ucCRCLo ^ b)&0xff のように記述する必要があります。これは、& が ucCRCLo、b、および結果を int にキャストするためです。これは 32 ビットですが、short は 16 です。 1に設定された余分なビットの "

この答えは私を助けました。TheDayOfcondorに感謝します

しかし、私の大きな問題は、符号付きバイトに関する Java の通常の問題でもありました。私の CRC 計算関数は、符号なしバイトに対して正しく実行されますが、符号付きバイト内を渡すとエラーが発生します。ModBUS 通信でバイトを使用するための秘訣は、アプリ全体で short をバイトとして使用することです。これは、0 ~ 255 の範囲を持ち、trames と CRC を計算することもできます。そして、最後のステップでのみ、trame を ModBUS サーバーに送信するときに、再度バイトにキャストします。これは実行中です。

それが将来誰かに役立つことを願っています。

問題の説明:

関数 05 で ModBUS にコイルをオンに設定しようとしています。これは関数の説明です。

リクエスト

アドレス1のコイルをオンにしようとしています:

このヘックス: 0A 05 00 01 ff 00 DC 81

このバイト配列: 10 5 0 1 255 0 220 129

10: スレーブ アドレス (10 = 0A hex)

05: 機能コード (Force Single Coil)

0001: コイルのデータ アドレス。(コイル番号 1 = 01 hex)

FF00: 書き込むステータス ( FF00 = ON、0000 = OFF )

DC81: エラー チェック用の CRC (Cyclic Redundancy Check)。

問題は、Java が符号付きバイトを使用しているため、バイト配列に 255 を入れることができないということです。-1 を入力する必要があることは理解していますが、CRC を取得するために事前に計算されたバイト配列がいくつかあるため、CRC を正しく計算できませんが、関数は負のインデックスを送信します。

だから:-1を送信しようとして正しいことをしているかどうか、255を送信するための代替手段があるかどうか、-1のCRCを計算する方法もわかりません。

これは、CRC を計算するための関数です。

0 投票する
1 に答える
720 参照

matlab - 1]スクリプトの実行中に変数値を変更する2]スクリプトをループで実行しているときにワークスペースの変数値が更新されない

私はmodbusRTU(シリアル通信)を使用してMatlabを介してボイラーのパイロットプラントを制御しています。

制御プログラムを(エディターで)ループを介して45分間実行していますが、2つの問題に直面しています:

1]致命的に必要なプログラムを実行している間、変数値を変更できません。

2]スクリプトの実行中に、ワークスペースでリアルタイムデータを表示できません。

実行時間が終了すると、すべての変数が更新されます。私のアプリケーションでは、反復ごとにデータを表示したいと思います。

それらを解決できなかったので、Simulinkに切り替えましたが、それはさらにいらいらしました。

Simulinkでは、ユーザー定義のブロック(埋め込みMatlab関数)を使用して、組み込みのmatlab関数(dec2hexなど)をサポートしないmodbusアドレスPDUを生成しました。

誰かがsimulink、シリアル送信/受信サポートでどのデータ形式を教えてくれますか?(ASCII / HEX / DEC)

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

tcp - MODBUS、デバイスが応答するのにかかる最大時間はありますか?

MODBUSデバイスと通信する場合、タイムアウトと見なされるまでにデバイスが応答するのにかかる時間に上限はありますか?読み取りタイムアウトを何に設定するかを考えています。MODBUSRTUとTCPの両方に対する回答があれば素晴らしいでしょう。

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

serial-port - MODBUS 自動アドレス割付

MODBUSアドレスを自動設定できる仕組みをご存知の方はいらっしゃいますか? 私の状況では、多数のスレーブの電源を入れ、アドレスを自動的に割り当てる方法が必要です。

0 投票する
1 に答える
3222 参照

c# - C# 分割フレームでの SerialPort 通信

RS485 を介して ModBus ネットワークで通信をリッスンするプログラムを作成する必要があります。RS485 <> USB ドングルでネットワークに接続しています。

SerialPort.DataReceived イベントを使用して一部のデータを読み取ることができますが、奇妙な結果が得られます。多くの場合、データは 1 つにまとめられるべきときに分割されます。(Modbus マスターは 100ms ごとに送信します)。

送信開始のサインがありません。フレーム間の遅延は最小です。3.5 文字、文字間の最大遅延は 1.5 文字です。

0 投票する
0 に答える
1125 参照

android - Android アプリケーションの Modbus4j

Android アプリケーションで modbus4j を使用しています。Javaでテストする前に、正常に動作しました。しかし、Android では master.init() に問題があり、機能しません。マニフェストで、インターネットとアクセス ネットワーク状態のアクセス許可を追加します。私は多かれ少なかれ次のようなコードを持っています:

しかし、マスターは決して初期化されません。例外が見られます。「android.os.NetworkOnMainThreadException」

どうすればこの問題を解決できるか知っていますか?