問題タブ [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.
modbus - Modbus でメーターに ping を実行する方法
Modbus プロトコルを使用してSocomecメーターに ping を実行しようとしています。調査したところ、C# ライブラリである NModbus が見つかりました。これまでライブラリや C# (通常は Java) を使用したことはありませんが、すぐに使用する必要があります。
Visual Studio Express for C# をセットアップし、.Net をインストールしました。NModbus ファイルの内容をプロジェクト フォルダにコピーし、2 つの主要な DLL への参照を追加しました。.Net 4 では動作しませんでしたが、3.5 に再ターゲットし (そして Microsoft.Csharp 参照を削除しました)、コンパイルされたように見えました。
以下のサンプルを使用して、スレーブ デバイスへの接続を試みています。これを実行し、startAdress 変数を目的の変数 (Socomec のドキュメントに記載) に設定すると、空白のコンソール ウィンドウしか表示されません。
要するに、正しいメソッド/パラメーターを使用していますか?セットアップ/コードが正しくありませんか? このメーターへの接続方法を教えてください。
私のコード:
c# - 5xxxx Modbus アドレスへのアクセス方法
nmodbus を使用して Socomec Diris A40 の 50526 などのアドレスにアクセスしようとしています。私が見た 3 または 4 で始まる他の例とは異なり、これらのアドレスはすべて 5 で始まります。
現時点で私が理解している限りでは、最初の数字は Modbus 機能を表しており、実際には実際のアドレスを参照していません。つまり、30000 アドレスは機能 04 を使用し、40000 アドレスは機能 03 (?) を使用しています。最初の桁が省略され、残りが住所として使用されているのを見たことがあります。50000 個のアドレスでこれを試すと、ある程度成功しますが、すべての値で成功するわけではなく、結果は正しくないようです。MODPOLL は私のコードと同じ結果を返します。
私は本当にいくつかの助けを使うことができました! これらの 5xxxx レジスタにアクセスする方法について誰かが私にアドバイスできる場合は、非常に感謝しています。
メソッドコード:
modbus - Javaライブラリのビルドプロパティを編集する方法
同様の質問がいくつかあるようですが、具体的な質問はありません。これで問題ないことを願っています。
非推奨のjavax.commの代わりにRxTxAPIを使用するように、JamodMODBUSライブラリのビルドプロパティを編集する方法を考えています。ライブラリページには、これがサポートされていると記載されています。
シリアルmodbusアプリケーションを実行できるようにするには、Java Communications API拡張機能(javax.comm)の実装がインストールされている必要があります。ブールビルドプロパティbuild.serial.gnuを介したgnu.ioプレフィックス(RXTX)でのビルドもサポートされていることに注意してください(trueを指定すると、ビルドプロセスで使用されるソースのjavax.commプレフィックスがgnu.ioに置き換えられますビルド用)。
詳細はこちら: http: //jamod.sourceforge.net/development/project_build.html
このファイルにアクセスする方法、またはアクセスするための手法がわかりません。それを作成する必要がありますか、それとも既存のものを編集する必要がありますか?私はプロジェクトでbuild.xmlを探しましたが、運がなく、何度もグーグルで検索しました。どんな助けでも大歓迎です。
modbus - TComPort と Modbus-RTU?
modbus RTU プロトコルの TComPort でデータの読み取りと送信は可能ですか?
modbus のwiki http://en.wikipedia.org/wiki/Modbusを読みましたが、3.5c アイドル状態で開始および終了するという意味は何ですか?
C++Builder2009 を使用しています
embedded - Modbus プロトコル データ モデルのアクセス制限
Modbus プロトコル データ モデルのレジスタ間の正確な違いは何ですか?
プロトコルは、次のデータ モデルを定義します。
誰が正確に読み書きを許可されていますか? マスター(クライアント)またはスレーブ(サーバー)に適用されますか。アクセス制限がマスターに適用される場合、読み取り専用レジスターの「入力」という言葉は私にはあまり意味がありません。逆の場合、スレーブが変更できないレジスタを持っているのはなぜですか?
公式のプロトコル仕様ドキュメントはその問題について明確ではないので、助けてください。
ありがとう
ruby-on-rails - クラウドベースのサーバーから Modbus over TCP/IP を使用してボックスと通信する必要がある
そのため、Modbus の経験はあまりありませんが、私の問題は基本的にタイトルの内容です。ボックスと通信し、メッセージを再フォーマットしてサーバーにプッシュするコントローラーが必要ですか? または、サーバーはボックスと直接通信できますか? ところで、私のクラウド アプリは Rails を使用しています。他にどのような情報が必要なのかわかりませんので、お気軽にお知らせください。
ありがとう。
c# - .NetのNetworkStream.Read/BeginReadを使用したアプリケーションプロトコルフレームの区切り
私の質問はネットワークプログラミングに一般的ですが、Modbus TCPサーバー(スレーブ)を作成しようとしているので、それを使用して質問を説明します。
Modbus TCPフレームでは、フレームの5番目と6番目のバイトがフレームのサイズを示します。
バイト1と2:トランザクションID
バイト3と4:プロトコルID
バイト5と6:フレームに残っている
バイト数バイト7- n:フレームの残りの部分。
NetworkStream.Read()
/を使用する場合BeginRead()
、受信したフレームを区切るにはどうすればよいですか?
最初の6バイトを読み取り、バイト5と6を解析して残りのフレームのサイズを取得し、次に残りのフレームを読み取るオープンソースの実装を見てきました。ただし、フレームに開始区切り文字と終了区切り文字がない場合、フレームの開始位置と終了位置をどのようにして知ることができますか?
たとえば、クライアントがいくつかのガベージ文字を送信してから、適切なフレームを送信した可能性があります。この場合、最初の6バイトを読み取っただけでは、クライアントのリズムと同期していないため、適切なフレームが失われ、将来のフレームが失われる可能性があります。
この質問は実際にはModbusに固有のものではなく、「サイズ」フィールドを使用してフレームのサイズを指定するプロトコルに固有のものです。フレームをどのように区切りますか?
ネットワークプログラミングの基本的なものが欠けているように感じますが、プロトコルが適切に設計されていない可能性があります。
c++ - MODBUSTCP回答はfloatC++に変換します
問題が発生しました。MODBUS TCPの回答があります。これは次のように16進数でコード化されています:0 0 0 0 0 7 1 4 4 41 B8 6664。説明:最初の5つのゼロはModbusの仕様であり、7はバイト数です。その後に続く。1はModbusネットワークのクライアントアドレスであり、関係ありません。最初の4つは、使用される機能コードです。2番目の4は、次のバイト数です。最後の4バイトは16進数でコード化された回答であり、doubleに変換する必要があります。これが格納されている配列は、unsignedchar配列です。ここに私がそれをどのように試したかのいくつかの例があります。ここに最初の例があります:
値は使用されるdouble変数であり、ibufは使用されるchar配列です。ここで2番目のもの:
ここでは固定値を使用しましたが、問題は常に16進数から2進数への変換です。私は私が得ることができるすべての助けについてうれしいです。
android - Android OS の移植に最適な ARM ベースの開発キット
Android OS を移植するための ARM ベースのハードウェア開発キットを探しています。私の目的は、Android OS を ARM ベースのハードウェア プラットフォームに移植し、Modbus ドライバーを作成して、Android ベースの携帯電話にシリアル通信サポートを提供することです。Modbus ドライバーを介してハードウェア ボードと通信する Android モバイル アプリケーションを作成します。
Google 検索を行ったところ、このプロジェクトにはビーグル ボードが最も適していることがわかりました。また、助けが必要な場合に利用できる巨大な開発者コミュニティもあります。
私のプロジェクトに最適な他の ARM ハードウェア プラットフォームはありますか?
java - Jamod (modbus、Java) マスター プログラミング、なぜトランザクションを繰り返すのですか?
私はシリアル接続(したがってJamod)の使用とコーディングを含むプロジェクトに参加しています
[ソース: http://jamod.sourceforge.net/kb/serial_master_howto.html、質問を本当に理解するには、例全体を読む必要があると思います]
私の質問は、なぜトランザクションを繰り返すのですか? 繰り返し変数はメインに配置された引数から取得され、チュートリアルにあるようにオプションである ため、私には意味がありません。要約すると、なぜその繰り返しがあるのですか?
どんな助けでも大歓迎です!