問題タブ [libnodave]
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.
c++ - S7-1200 との libnodave 通信
数日間、通信ライブラリとして libnodave を使用して、Siemens の S7-1200 PLC (CPU 1214C) と通信しようとしました。libnodave ライブラリには、いくつかの機能が用意されています。Delphi アプリケーションは動作しており、Windows 実行可能ファイルも動作しています。
Vmware で Linux を実行しており、testISO_TCP のプリコンパイル済みバイナリが動作しています。使えそうですよね?
しかし、ソース コードを 1:1 で IDE (Eclipse) にコピーすると、次のエラー メッセージが表示されます。
PLCとの接続でエラーが発生したようです。次の関数は、このエラーを生成します。
DaveConnectPLC(dc)
Linux で実行されたバイナリと比較すると、ラックとスロットは変更されていないことに注意してください。
Eclipse IDEで動作させるのを手伝ってくれる人はいますか? すべての実行可能ファイル/バイナリが機能しているのは非常に奇妙ですが、IDE から直接実行したい場合はそうではありません。
前もって感謝します。
delphi - Delphi と libnodave ライブラリを使用して PLC からデータを読み取る
私は再びここに来て、新しい質問をします。今回はPLCについて。
私は最初に、私は PLC の初心者であり、数か月前まで PLC を見たことがありませんでした。SQL Server データベースにアーカイブするために、PLC Siemens S7-300 からデータを Delphi から読み取るプログラムを作成するように依頼されました。「libnodave」ライブラリを使用しています。
プログラムは非常に単純です。ビットを確認する必要があり、オンになっている場合は、PLC からデータを読み取ってビットをオフにする必要があります。私が言ったライブラリでは、問題なく読み書きできますが、読み取る必要があるデータはバイトのグループ (約 60 バイト) に格納されているため、いくつかのバイトを読み取り、他のバイトをスキップして読み取る必要があります。その他のバイト。さらに、テストする必要があるビットは、このバイト グループの末尾にあります。
そのため、バイトのグループ全体を読み取り、データを変数のグループに入れ、ビットをテストし、オンの場合はデータをデータベースに保存します。読む必要のないバイトをスキップするために、次のようなステートメントを使用します。
私の質問は次のとおりです。
- 読む必要のないデータをスキップしてデータを読むより良い方法はありますか?
- バイトのグループ全体を読み取り、ビットをテストした後に便利ですか、それとも 2 つの読み取りを別々にする方がよいですか?
これは、インターネットで読み取り操作に時間がかかることがわかったため、最小限の読み取り回数を可能にすることをお勧めします。
エロス
plc - Libnodave の値が変更されました
libnodave 0.8.4.4 ライブラリを使用して S7 PLC に接続していますが、PLC DB のビット (DB100.DBX8.0 など) が値を変更したかどうかを検出する方法を知りたいです。私がしたことは、while ループ内でこのビットを読み取ることですが、このビットで値が変更されたときにイベントを作成し、それが発生したときにタスクを起動したいと考えています。