問題タブ [iec61131-3]

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 に答える
473 参照

plc - IEC61131-3 直接表現変数: データ幅とデータ型

IEC61131-3 言語の直接表現変数 (DRV) には、「アドレス」にデータ幅指定子 ( X1 ビット、Bバイト、Wワード、Ddword など) が含まれます。

さらに、DRV が宣言されると、任意の変数 (BYTE、WORD、INT、REAL...) として IEC データ型が指定されます。

これらがどのように関連しているかはわかりません。それらは直交していますか?W(バイト) アドレスで REAL 変数を定義できますか? 期待される結果は何ですか?

ある本は次のように述べています。

データ型をフラグまたは I/O アドレスに割り当てると、プログラミング システムは、変数が正しくアクセスされているかどうかをチェックできます。たとえば、によって宣言された変数は、またはAT %QD3 : DINT;で誤ってアクセスすることはできません。UINTREAL

それは私にとって物事をより明確にしません。たとえば、このフラグメントを取り上げます ( WWord、つまり 16 ビットを意味することを思い出してください。両方とも32 ビットDINTに対応します)。REAL

最初の行は、32 ビットの IEC var を 16 ビットの場所にマップします。これは合法ですか?書き込み/読み取りは「キャスト」または何と同等ですか?

他の行では、同じアドレスを指す異なる型の 2 つの 32 ビット IEC 変数を宣言しています (これは正しいと思います)。読み取りまたは書き込み時に期待される結果は何ですか?

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

mongodb - 構造化テキスト (IEC 61131-3) の MQTT/HTTP クライアント機能ブロックはどのように作成できますか?

PLC からデータを収集する構造化テキスト プログラミングを使用して、MongoDB (サーバーが存在する場所) にドキュメントを挿入したいと考えています。利用可能なドライバーがないため、HTTP クライアント機能ブロックを作成してデータベースに接続するにはどうすればよいですか?

また、利用可能な REST API があるため、ST を使用して MongoDB に接続できますか?

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

c# - Antlr4 CodeGenerator 言語

C# を使用して行われている IEC-61131 から C++ へのコンバーターを作成しています。IEC-61131 用の優れた Antlr4 文法ファイルがあり、カスタム リスナーを使用して出力 C++ コードを生成しています。StringTemplate C# を使用して、カスタム リスナーを置き換えることができることはわかっています。しかし、StringTemplate CodeGenerator を使用して CPP ターゲット言語を選択する方法の良い例を見つけることができません。誰でもここで方向性を提供できますか? または例を挙げますか?ここに私がこれまでに持っているコードがあります。

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

antlr - Antlr「CASE」エラーパス

私はantlr 2.7.6を使用しています。plc 61131-3 ST 言語のパーサーをプログラミングしていますが、文法の問題を解決できません。

文法は次のとおりです。

この問題は、「enum_Value」が「case_Selection」の場合に発生し、パーサーはそれを新しい「Case_Selection」ではなく、新しい「stmt」として解釈します。例:

上記の例では、「enum.liteal2」を新しい「case_Selection」として使用する代わりに、「assign_Stmt」と解釈し、「:=」が見つからないためエラーを返します。本当に新しい「stmt」があるかどうかを理解するために、「:」または「:=」が見つかるまで最大文字数を読み取ろうとする方法はありますか?

ありがとうございました!Edit1: より良い構文;