問題タブ [opc]
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.
opc - アクティブな opc サブスクリプション内の特定の opc アイテムを再作成せずにアクティブ化/非アクティブ化します
OPC Net API を使用して opc に基づくクライアント/サーバー アプリケーションを開発しています。私のサーバーは、WCF サービス インフラストラクチャを介してクライアントにプロセス データを提供する OPC クライアントです。クライアントによって接続されているタグに応じて、サーバーで反応し、それらの opc アイテムのみをサブスクライブしたいと考えています。
ここで私の質問: サブスクリプションを常に再作成せずに、アクティブなサブスクリプションで opc アイテムをアクティブ化または非アクティブ化することは可能ですか?
もう 1 つの質問: この API の経験がある人はいますか? また、サブスクリプションに含まれる opc アイテムの数はどれくらいですか?
c# - OPC Da Write Bit in Word
OPC DA Automation Wrapper を使用して AllenBradley PLC に接続しています。
他のビットとは独立して、ワード内にビットを設定する必要があります。
この機能を厳密に達成できる方法はありますか?
私が試した2つのオプションは次のとおりです。
OPC サーバー (Kepware) で単語を個別のビットとしてセットアップします。言い換えれば、16 個のタグがあり、それぞれのタグ名は次のようになります。
ただし、これは、多くの個別の OPCItem オブジェクトを保持する必要があることを意味します
もう 1 つの方法は、ワード全体を読み取り、 を使用してビットに変換しBitConverter
、変更する必要があるビットを変更してから、保留ワードを PLC に書き戻すことです。
ただし、テスト中に、スレッド 1 が単語を読み取ることができることがわかりました。スレッド 2 はワードに書き込み、たとえばビット 2 を変更します。次にスレッド 1 がビット 4 を変更し、ワード全体を書き戻すと、ビット 2 への変更が上書きされます。
単一の OPCItem を使用して特定のビットに書き込む方法を知っている人はいますか?? それとも、特定のビットに関連する OPCItems がたくさんあることに固執していますか??
ありがとう
c# - .net アプリケーションで profibus からデータを読み取るには?
PROFIBUS と通信するために OPC で使用できる適切な .NET API はありますか? または、PROFIBUS から .net アプリケーション データを読み取る他の方法はありますか?
opc - OPC DA クライアントをゼロから実装する
サードパーティを使用せずに、独自の OPC DA クライアント (バージョン 2.02、2.05a、3.00) をゼロから実装したいと考えています。また、OPCEnum.exe サービスを利用して、インストールされている OPC サーバーのリストを取得したいと考えています。OPC クライアントを実装するプロセスを詳細かつ段階的に説明しているドキュメントはありますか?
merge - 反復開発における自動生成コードのマージと拡張
特定の SDK 用のツールを使用するかどうかについての議論が発生する状況に遭遇しました。
目標: サード パーティの開発をより適切にサポートするために、既存の IDL の上に OPCUA プロバイダー (コンプライアンスが必要) を開発する。
オプション:
- SDK で提供されたモデリング ツール (GUI) を使用します (コンプライアンス テスト済みのコードを生成すると言われています)。モデルは非常に迅速に作成されます (ツールはユーザーフレンドリーではありませんが、少なくともいくつかのツールがあります)。ただし、このツールは細心の注意を払って使用しないとエラーが発生しやすいようです。(キャメルケースのエラーなど、コンパイルは不可能ですが、find + replaceで修正できます。説明内でTABSが使用されている場合(ドキュメントからコピーして貼り付けた場合)、奇妙な動作をします。使用されているデータ型が削除されている場合、型定義は空のままになります。すべてを見つけて生成されたコードを修正するのに 1 日か 2 日かかりました。) 出力は 170 個の .C および .H ファイルでした。これを手動で作成してリンクしたくはありません。
問題:モデルが変更されるたびに、コードが完全に再生成されます (もちろん、エラーや上書きの適応と修正を含む)。
- Xtext を使用して独自のモデル記述言語を生成し、それを有効で準拠したコンパイル可能な C コードにコンパイルして、最後の状態がエクスポートされてから実際に変更されたファイルのみを生成するオプションを作成します。
問題:両方のメンテナンス: ジェネレーターと生成された製品は継続的なタスクであり、悪夢とよく言われます。
- 最も基本的なファイルのみを自動的に生成し (A で説明したツールを使用)、残りは手動で行います。100% 必要でない場合は、生成されたファイルに触れないでください。したがって、上書きしても害はありません。
問題: A で言及されていますが、まだ残っていますが、1 桁小さい可能性があります。
内部で何が起こっているのかを知りたいのですが、すべてのコードを自分で書くと、コードを生成するよりもエラーが発生しやすくなります (数 100k LOC)。私が本当に必要だと感じているのは、モデルが変更されるたびにすべてをマージするための何らかの内部バージョン管理システムですが、エラーは発生しません。したがって、regExを使用して特定のパッセージを除外する、非常に強力なマージツールは素晴らしいでしょう...
誰かが同様の問題を経験したことがありますか、どのように解決しましたか? このような状況下で第三者が私のコードを安全に再利用できるようにするにはどうすればよいですか? 他の開発者向けの「ベスト プラクティス」マニュアルを作成するだけでよいでしょうか?
自分の懸念を上司に伝える良い方法はありますか? あきらめることは選択肢ではありません。
plc - PLC データ ログ システム: 基本的な質問
私は現在、PLCで作業しようとしています。Kepware データ ロガーを使用して PLC ログ データを収集しています。出力は次のようになります。
いくつか質問があります:
1) 「Channel」、「Device」、「Group」、「RBT1_Y_WORK_COMP_RST」の意味は何ですか? - PLC クラスのプレゼンテーションから得たのは、RBT1 (ロボットを参照) はマシンであり、「Y_WORK_COMP_RST」は 1 つの信号であり、1/0 は特定のタイムスタンプ (20130407104040.2 など) での信号状態です。しかし、ログ データ ファイルから取得できませんでした。「Channel」、「Device1」、および「Group1」の意味は何ですか?
2) 授業で「PLC はハードリアルタイムシステム」ということを学んだ。ただし、ログ データ ファイルから、サイクル タイムが頻繁に異なることがわかります。つまり、(たとえば)5秒、場合によっては7秒かかります。どうして ?
3) Kepware によって取得されたこのログ データは、実際のマシンの出力ですか? それともPLCプログラムから取った?
注意: 私はこの分野では非常に新しく、ほとんどクラスを受講していません。だから、私の質問はばかげているかもしれません。技術的ではない基本的な答えを教えてください。
c++ - Twincat PLC OPC UA サーバーからユニファイド オートメーション OPC UA C++ クライアント プログラムに文字列を送信する方法
文字列 (温度、圧力、設定値) 値を OPC UA C++ CLIENT プログラムに送信する方法は、クライアントが読み取りまたは書き込み可能なサーバーの値にアクセスできることを意味します
multithreading - Delphi OmniThreadLibrary + OPC クライアント
私は、同じ OPC サーバーに接続された 3 つの異なる Siemens PLC を管理するシングルスレッド OPC クライアント プログラムで作業しています。
シングルスレッド クライアントは次のようになります。
各 processPLC プロシージャは、次のような基礎となる OPC ライブラリを呼び出します。
さて、今度は各 processPLC を別のスレッドで呼び出して、並行して作業したいと思います。
私はいくつかの調査を行い、OmniThreadLibrary を使用していくつかのコードを開始しましたが、OPC コードはマルチスレッドセーフではないと思います。それは...ですか?
task.Invoke などを使用する必要がありますか? PLCタグの値を返すReadOPC関数はどうですか?ここでのベストプラクティスは何ですか?
ありがとうございました!!!
java - ウトガルド - アクセスが拒否されました
問題を解決する解決策が見つからなかったため、新しいトピックを開始しています。
Utgard ( http://openscada.org/projects/utgard ) は、私にとって非常に便利なツールのようです。このフェーズでは、Eclipse を介して Windows 8 OS でローカルに TOP OPC サーバーにアクセスできるようにしたいだけです。ただし、チュートリアルを実行しようとすると、「アクセスが拒否されました」という結果になります。ユーザー名、パスワードなどに間違いはなかったと思います。
Exele OPC DA テスト クライアントはエラーを返しません。値を接続し、取得し、書き換えることができます。
OPC と OpenSCADA に関しては、私は初心者であることに注意してください。どんな助けでも大歓迎です。
}
エラー スタック トレース: