問題タブ [plc]

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 投票する
1 に答える
461 参照

python - UDP ソケットがデータを受信できない

問題があります。LAN 上の Omron PLC メモリからデータを読み取る小さな Python スクリプトを作成しました。Delphi プログラムは、Python スクリプトを定期的に (6 秒ごとに) 実行するバッチ ファイルを実行します。

このスクリプトは、2 台の Win 7 PC と 1 台の Win XP PC で実行されます。

私の問題は、Win XP PC と PLC の間でランダムな時間 (約 1 分、場合によってはそれ以上) の間データ転送がないことですが、Win 7 PC では同じ PLC との通信に問題はありません。

UDPプロトコルを使用しています。

LAN は「眠りに落ちる」ようです。これは LOG ファイルです: (08:41:13 -> 08:42:30。予想 08:41:13 -> 08:41:19、08:41:25、08:41:31、...)

何が問題なのですか?

0 投票する
5 に答える
2472 参照

networking - ネットワーク (LAN) 経由で LabView Client VI と WinCC OPC サーバーとの通信中にエラーが発生しました

Siemens PLC を使用して一部のシステムを自動化しようとしています。そのために、制御と監視用の WinCC Flexible RT アプリケーションを開発し、PC ベースの HMI パネルを OPC サーバーとして宣言しました。これは正常に機能しています。

現在、同じ PC で WinCC または Labview のいずれかで OPC クライアント アプリケーションを作成しようとすると、クライアント上のサーバーのすべてのタグにアクセスできます。

ローカル エリア ネットワークを介して接続された他のコンピューターでクライアント アプリケーションを作成しようとすると [完全に問題なく、適切に構成されたネットワークが機能している]、その場合、OPC サーバー/タグにアクセスできません。

この場合、何ができるでしょうか。

0 投票する
5 に答える
23194 参照

floating-point - PLC 構造化テキスト、10 進数を実数 (浮動小数点数) に変換します。期待する値が得られません。(IEEE-754)

Profibus DP を介して PLC と通信しているハードウェアがあり、「44 79 FF FF」である 16 進数で 4 バイトのデータを送信し、PLC プログラムでこの入力データの BYTE 配列を宣言しました。問題はPLCにあり、BYTE配列で受信したデータは「66 121 255 255」であり、これは16進数の10進値ですが、私の目標はその値をREALに変換することであり、そうすると私はそうではありません私が期待した値を取得します。

4bytesDataすべての BYTES を挿入する DWORD( ) を作成しました。したがって、4 バイトをバイトに挿入する前に4bytesData: in1 = 68, in2 = 121, in3 = 255&in4 = 255

in1、in2、in3、in4 はバイト 0 ~ 3 です。

私が得ている値は次のとおりです。4bytesData= 1148846079 & realValue= 1.148846e+009

私が期待している値realValueは = 9.9999993896484375E2 です

この Web サイト ( IEEE754 アナライザー/コンバーター) を使用して 16 進数値 (4479FFFF) を変換すると、必要な値が得られます。10 進数値 (1148846079) を挿入すると、 PLC。

私の問題を理解していただければ幸いです。よろしくお願いします。

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

javascript - 10 進数があり、2 進数に変換する必要があり、その 2 進数のすべてのビットにリンクされたチェックボックスが必要です

これを説明するのは難しいですが、最善を尽くします。

私はウェブサーバーでPLCを使用しており、PLCのレジスタからウェブページに値を書き込むために書いたいくつかのjavascriptコードを使用しています。

PLC が持つ機能の 1 つにタイム スケジュールがあります (たとえば、ライトをオンにする必要がある曜日と時間を選択できます)。スケジュールを設定するために、時間の入力ボックスをいくつか作成し、曜日ごとに 7 つのチェックボックスを作成しました。値を 10 進数でコントローラーに送信する必要がありますが、時間と分については問題ありません。

ただ、平日は2進数で表現しているのですが、コントローラーに10進数で書き込む必要があります。

7 つのチェックボックスがあり、それぞれが 2 進数を表しています (月曜日は 1、火曜日は 2、水曜日は 4、木曜日は 8 など)。どのチェックボックスがチェックされているかをまとめて、完了しました。

しかし、今は逆に必要です。今回は、コントローラーから 10 進数 (設定されている日を表す) を取得し、これをチェックボックスで表す必要があるため、おそらく 10 進数を 2 進数に変換しますが、どうすればリンクできますか?チェックボックスを個々の数字に?

誰かがこれを理解し、私を助けてくれることを願っています。

これらは私のチェックボックスであり、これは私のjavascriptの一部です:

これを逆にするにはどうすればよいですか?私は10進数を取得し、バイナリに変換する必要があり、javascriptを使用して、設定されているビットに応じて正しいチェックボックスをチェックします。

助言がありますか?

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

c++ - std::map はノードをロックして、他のプロセスがそれらを削除できないようにしますか?

ここで重大な問題が発生しました。1 つのシングルトン オブジェクト「VarList」にアクセスする 2 つの異なるタスク (プロセスなど) が PLC X20 フォーム B&R で実行されています。その目的は、ポインターを介したプロセス間通信を可能にすることです。

タスク A は、静的な getInstance() メソッドを使用して std::map を含むオブジェクトを作成しています。そのオブジェクトがグローバル PLC 変数に割り当てられている場合は、すべてのタスクからその特定のオブジェクトへのアクセスを許可するポインタがあります。そのタスクは、そのマップへの変数の挿入について、すべてのタスク サイクルもチェックしています。その場合、テスト目的で、挿入されたノードを再度削除しようとします。

タスク B は、getInstance メソッドを介してオブジェクトのポインターを取得し、bool* をマップに挿入します。

その後、タスク A が再度削除しようとすると、アクセス違反でクラッシュします。ノードとその値にアクセスできます。私はその価値観を変えることができます。しかし、別のタスクで作成されたノードを消去するとクラッシュするので、その理由を知りたいです!

PLC はシングルスレッドであるため、メモリへの同時アクセスはありません。

これはロックの問題ですか?それともこれはロジックの問題ですか?STLの問題?Null ポインタの問題? それとも、plc ベンダーの std ライブラリの特定の実装の問題でしょうか? アクセス違反に関連するヘルプは大歓迎です!

上記のオブジェクトのコード スニペットを次に示します。ヒントを得るために、問題に関係のないものはすべて削除しました。申し訳ありませんが、コンパイルできない可能性が最も高いです:

コンパイラ: gcc 4.1.2

タスク A:

タスク B:

VarListe.hpp

VarListe.cpp

ありがとう!

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

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 がたくさんあることに固執していますか??

ありがとう

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

vpn - ラズベリーパイとハマチとのPLC通信

私がセットアップしようとしているシステムは、イーサネット経由で Raspberry Pi に接続された複数の PLC で構成されています。その後、Pi は Hamachi VPN に接続されます (他の VPN ソリューションに使用する外部 IP がないため、私は hamachi を使用します。別の方法がある場合は、試してみます)。反対側には、Hamachi ネットワークに接続された PC があります。Pi に接続された PLC と通信 (ping して接続) できる必要があります。iptables を使用して、PC を 1 つの PLC と通信させることができましたが、独自の IP ではなく、ソフトウェアを hamachi IP に向けて購入しました。iptablesを使用してPLCからPCにpingを実行するところまで到達できますが、その逆はできません。私の最終的な目標は、PC から PLC の IP を使用して、hamachi VPN 経由で PLC にアクセスできるようにすることです。アイデアや方向性はありますか?

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

excel - 複数の Siemens PLC から Excel にデータを取得するにはどうすればよいですか?

私は Siemens WinCC SCADA システムを使用しており、レポート目的で Siemens PLC の特定のアドレスから Excel にデータを転送する必要があります。

WinCC scada でプログラミングして試してみる価値はありますか、それとも他のレポート ツールはありますか? 私の主な要件は次のとおりです。

  • 読み取るPLCアドレスとデータアドレスを簡単に定義
  • Excel でのレポート ビューのカスタマイズ (ロゴの追加、フォーマットの調整など)
  • 表形式と Excel チャートでデータを取得する
  • 価格はそれほど高くないはずです

ちなみに、現場には小型パネルPCがあります。この PC には 1 GB の RAM と Intel Celeron CPU が搭載されています。レポート アプリケーションは、このような小さな PC で実行する必要があります。