オブジェクト: シンボル構成
シンボル設定を使用して、プロジェクト変数のシンボル説明を作成できます。
シンボル設定オブジェクトをデバイスツリーに追加し、特定のデフォルト設定を定義します。ヒント
OPC UA サーバーにシンボルを提供するには、新しい構成エディターを使用することをお勧めします IECシンボルセット構成 にとって CODESYS 3.5 SP18 以上。
ダブルクリックして、 シンボルの構成 オブジェクトを選択して、シンボル構成エディターを開きます。
ダイアログ: シンボル構成の追加
関数: このダイアログは、 シンボルの構成 物体。
電話: メニュー;アプリケーションオブジェクトのコンテキストメニュー
XMLにコメントを含める | 変数にコメントが割り当てられたシンボル ファイルをエクスポートします。 |
OPCUA機能をサポートする | 注: このオプションの可用性と編集可能性はデバイスによって異なります。
|
レイアウト オプションの詳細と例については、次のセクション「シンボル構成エディター」を参照してください。 | |
互換性のあるレイアウト | この設定は、古いプロジェクトの互換性を保つために使用されます。クライアント用に作成されたデータ レイアウトは、コンパイラーによって内部的に作成されたレイアウトと可能な限り一致します。 |
最適化されたレイアウト | 新しいプロジェクトに推奨 内部コンパイラのレイアウトから切り離されて、最適化された形式で出力レイアウトを計算します。 未公開要素のギャップは生成されず、データ型のメモリ アラインメントの要件を厳密に満たします。コンパイラ バージョン 3.5.7.0 以降が必要です。 |
シンボル構成エディター
エディターには、選択した変数を含むテーブルと編集用のメニュー バーが含まれています。
ビュー | このボタンを使用して、構成エディターで使用される次のカテゴリの変数をアクティブ化または非アクティブ化できます。
このフィルタには、シンボル ファイル内でエクスポート用にすでにマークされている変数もリストされます。 の 属性 列は、プラグマによって設定されるアクセス権を示します。 |
建てる | プロジェクトをコンパイルします 構成エディターで変数を現在準備するための要件 非境界整列メモリアクセスによる非境界整列データのみシンボル構成に、位置合わせされていないデバイスの値またはシンボルが含まれている場合、 ではない 必要な (アライメントされていない) メモリ アクセスをサポートしている場合、エラーが設定されます。 次のメッセージが表示されます。 コンポーネント <名前> シンボルタイプの <シンボルタイプ名> メモリアライメントなしでは公開できません。 これにより、コントローラーの予期せぬクラッシュにつながる可能性のある、潜在的に欠陥のあるコードがコントローラーにダウンロードされるのを防ぎます。 |
ダウンロード | シンボル設定用の独自のアプリケーション ファイルをサポートするデバイスを使用している場合、このボタンはツールバーでも使用できます。 オンライン モードでシンボル構成を変更すると、新しいシンボル構成をダウンロードできます。 |
設定 |
|
ツール | XSD スキーム ファイルの保存: このコマンドは、ファイル システムにファイルを保存するための標準ダイアログを開きます。このコマンドを使用すると、外部プログラムで使用する場合などに、シンボル ファイルの XSD 形式を準備できます。 |
アクセス権 | シンボルのアクセス権を変更するには、 アクセス権 カラム。 . アクセス権のアイコン(昇順)
注: コントローラにユーザー管理がある場合は、シンボル セットを使用して、同じシンボルに対するクライアント固有のアクセス権を定義できます。 |
最大値 | このシンボルの最大アクセス権 |
属性 | アクセス権が属性によって割り当てられている場合は、対応するアイコンがここに表示されます。 |
タイプ | エイリアスのデータ型も表示されます。 CODESYS V3.5 SP6 以降。 例: |
メンバー | 構造化データ型の変数を追加するには、 記号 カラム。これは〜をひき起こす CODESYS すべての「メンバー」変数シンボルをエクスポートします。ただし、 メンバー 列をクリックすると、 注: この選択は、シンボルがエクスポートされるこのデータ型のすべてのインスタンスに適用されます。 構造化型のメンバーを選択できない場合は、アスタリスク ( |
リストボックス | すでに定義されているシンボルセット |
| を開きます 新しいシンボルセットを追加 このセットの名前を指定するダイアログ |
| を開きます 選択したシンボルセットから重複を追加 ダイアログ リスト ボックスで選択したセットのコピーが作成されます。デフォルトの名前を変更できます ( |
| を開きます 選択したシンボルセットの名前を変更 リスト ボックスで選択したセットの別の名前を指定するダイアログ |
| リストボックスで選択したシンボルセットを削除するかどうかを尋ねるダイアログを開きます。 |
シンボル権限の構成 | を開きます シンボルの権利 デバイス エディタのタブにログインすると、リスト ボックスで選択したシンボル セットにユーザー グループ (クライアント) ごとに異なるアクセス権を割り当てることができます。 |
詳細については、以下を参照してください。 タブ:シンボル権
ダイアログ: コメントと属性
拡張 OPC UA 情報を有効にする | 注: このオプションの可用性と編集可能性はデバイスによって異なります。
OPC UA 設定が有効な場合は、コメントや属性などの追加情報も含めることができます。 . OPC UA 設定が有効な場合、属性は次のルールに従ってシンボル テーブルに含まれます。
|
コメントを含める | 要件: 拡張 OPC UA 情報を有効にする がアクティブ化されます。
|
属性を含める | |
タイプノードのコメントと属性も含めます | 要件: コメントを含める がアクティブ化されます。
|
名前空間ノードフラグを含める |
|
コメントを含める |
コンパイラ バージョン V3.5.5.x から V3.5.8.0 では、これには次の設定が含まれます ドキュメントコメントを優先する。 |
属性を含める |
|
タイプノードのコメントと属性も含めます |
|
要件: コメントを含める がアクティブ化されます。 | |
文書コメントを含める 通常のコメントを含める 両方のタイプのコメントを必ず含めてください 文書コメントを優先し、通常のコメントにフォールバックします 通常のコメントを優先し、ドキュメント コメントにフォールバックします | オプションにより、シンボル設定に保存されるコメントが決まります。 |
要件: 属性を含める がアクティブ化されます。 | |
すべての属性を含める で始まる属性を含める 正規表現を使用して属性をフィルタリングする | シンボル設定に保存される属性を定義します |
単純な識別子と一致する | 主に、古い動作をエミュレートするための古いバージョンとの下位互換性のために存在します。 |
設定: IEC タスクとの同期を構成します
同期的に一貫したアクセスを実現するために、シンボリック クライアントは、IEC タスクが実行されない時間が見つかるまで、読み取りまたは書き込みリクエストを処理するときにランタイム内で待機します。このギャップが検出されると、変数リストのすべての値がコピーされるまで、IEC タスクの再起動が妨げられます。その後、IEC タスクが通常どおりに再び計画されます。同期アクセスにより IEC タスクの開始が遅れる可能性があり、これはジッターの増加として示されます。ランタイム内のすべてのアプリケーションは共通のスケジューラによって管理されるため、このリアルタイム動作の潜在的な障害はデバイス上のすべてのアプリケーションに影響します。シンボル構成が含まれているかどうか、または 1 つ以上のアプリケーションからコントローラーにダウンロードされているかどうかに関係なく、デバイスのすべてのアプリケーションが影響を受けます。 CODESYS プロジェクト。したがって、ランタイムは、アクセス時にコントローラーにダウンロードされるすべてのアプリケーションを許可する場合にのみ、同期された構成アクセスを許可します。
ヒント
設定は、シンボル構成のエディターにあります。 設定 メニュー。さらに、この設定は、コントローラーのコンテキスト メニューにも表示されます。 プロパティ コマンドを選択し、 オプション 開いたダイアログのタブ。
シンボル構成のないアプリケーションの場合、設定はプロパティ ダイアログでのみ見つかります。
重要
設定を変更した後、ダウンロードまたはオンライン変更によってデバイスにダウンロードされたすべてのアプリケーションを再ロードし、すべての起動アプリケーションを更新する必要があります。
同期された一貫したアクセスが必要なのはどのような場合ですか?
原則として、変更された値がどの IEC タスク サイクルから発生したかはほとんど無関係であるため、表示される値に一貫した値を設定する必要はありません。めったに変更されない値にはまったく関係ありません。書き込み中であっても、ハード整合性の要求はほとんどありません。これは、通常、マシンは、レシピとして書き込まれた値に直接アクセスできない一種のスタンバイ モード (レシピの書き込み時など) でなければならないためです。
対照的に、本番データを保存するデータベース リンクには、一貫した値が特に必要です。ただし、クロック付きマシンの場合、これらの値は生産タイミングと同期している必要があり (生産された製品ごとに 1 つの値セット)、1 つ以上の IEC タスクへの参照と一致していません。マシン クロックに関しては、IEC アプリケーションによって一貫性がすでに保証されている必要があります。この目的のために、通常、生産サイクル中に発生する値はグローバル変数リストに収集されます。サイクルの終わりに、追加の変数 (BOOL
またはカウンタ)、マシンサイクルが終了し、値が有効であることを示します。これで、クライアントは実稼働サイクルからの値をアーカイブできるようになりました。必要に応じて、リリースされた変数を使用して読み取り成功を逆方向に表示することもできるため、生産データをアーカイブできない場合には生産を停止することもできます。同期はアプリケーション レベルで実行されるため、このユースケースでは同期された一貫したアクセスは必要なく、役立ちます。
対照的に、シンボリック クライアントによる同期された一貫したアクセスは、たとえば、プロセス値が 60 秒の固定時間枠で一貫して周期的に書き込まれる場合など、プロダクション クロッキングなしでシステムが継続的に実行されるプロセス産業で通常適用されます。これは、クロックされたマシン (上記を参照) と同様のアプリケーション レベルでの同期によって、または同期された一貫したシンボリック アクセスの同期によって行うことができます。後者の利点は、IEC プログラムにロジックを実装する必要がなく、アクセスが完全にクライアントによって制御されることです。
注意
ジッターが増加するため、同期された一貫したモニタリングはモーションやリアルタイムの重要なアプリケーションには適していません。これらの理由から、同期された一貫したアクセスは、絶対に必要な場合にのみ解放して使用する必要があります。
クライアントがこの設定によって解放された同期一貫性アクセスを使用する場合、その設定はクライアントに影響を与えます。ランタイムのスケジューラによっては、システムが IEC タスクの実行ギャップを待機する必要がある可能性があるため、読み取り/書き込みアクセスの場合、応答時間がさらに遅くなる可能性があります。 IEC タスクが長時間 (数 100 ミリ秒の範囲) 実行される場合、または 1 つ以上の IEC タスク (数100ミリ秒の範囲)。したがって、値を利用できるかどうかは、IEC アプリケーションによるコントローラーの負荷にも依存します。
さらに、クライアントは、読み書きされる変数リストの定義で次の点を観察する場合、クライアント自身とランタイムへの影響を最小限に抑えることができます。
絶対的かつ一貫して必要な変数のみへの同期された一貫したアクセス
一貫性が必要な変数と一貫性がなくなる可能性のある変数の変数リストを分ける
いくつかの一貫した変数を含む変数リストをいくつかの小さなリストに分割します。
可能な限り大きな値を周期的に読み取るための読み取り間隔を選択します。
現在の構成と考えられる修正アクションのサポート
シンボル テーブル内で赤色でマークされたエントリは、シンボル ファイルにエクスポートするように構成されているが、現在アプリケーションでは無効である変数を示します。この原因としては、宣言がブロックから削除されたことが考えられます。
バージョン 3.5.8.0 以降では、シンボルが設定された変数が IEC コードで使用されていないか、I/O 変数の場合にマップされていない場合、エディターに警告が表示されます。さらに、コンパイラは、シンボル構成内の古いライブラリ バージョンから参照されている変数を示します。
重要
プログラム コードで使用されないオブジェクト変数は、デフォルトではコンパイルされないままになるため、シンボル設定では使用できません。
の 常にリンクする POU プロパティが選択されています。
の
{attribute 'linkalways'}
プラグマが使用されます。
詳細については、以下を参照してください。 ダイアログ:プロパティ:ビルド と ダイアログ:プロパティ:オプション:コントローラ
データレイアウトタイプの例
すべてのメンバーが公開されているわけではない、大規模な構造の例:
STRUCT {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='none'} InternalData : ARRAY[0..100] OF BYTE; {attribute 'symbol':='readwrite'} SecondNumber : INT; {attribute 'symbol':='none'} MoreData : ARRAY[0..100] OF BYTE; END_STRUCT END_TYPE
シンボル ファイル内の結果のエントリ (「」に注意してください)size
" そして "byteoffset
"):
<TypeUserDef name="T_GrosseStruktur" size="208" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="104" vartype="VAR" /> </TypeUserDef>>
<TypeUserDef name="T_GrosseStruktur" size="4" nativesize="208" typeclass="Userdef" pouclass="STRUCTURE" iecname="GrosseStruktur"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /<UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="SecondNumber" type="T_INT" byteoffset="2" vartype="VAR" /> </TypeUserDef>
次のメカニズムにより、メンバーにメモリの不整合が発生する可能性があります。
{attribute 'relative_offset':='…'}
メンバーで
{attribute 'pack_mode':='…'}
文字列宣言内で
Target setting 'memory-layout\pack-mode'
デバイスの説明にある
{attribute 'pack_mode':='1'} TYPE UngeradeAdressen : STRUCT {attribute 'relative_offset':='3'} {attribute 'symbol':='readwrite'} PublicNumber : INT; {attribute 'symbol':='readwrite'} PublicValue : LREAL; END_STRUCT EMDTYPE
シンボル ファイル内の結果のエントリ。 (注意を払う "size
" そして "byteoffset
"):
<TypeUserDef name="T_UngeradeAdressen" size="13" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="3" vartype="VAR"> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="5" vartype="VAR" /> </TypeUserDef>
<TypeUserDef name="T_UngeradeAdressen" size="16" nativesize="13" typeclass="Userdef" pouclass="STRUCTURE" iecname="UngeradeAdressen"> <UserDefElement iecname="PublicNumber" type="T_INT" byteoffset="0" vartype="VAR" /> <UserDefElement iecname="PublicValue" type="T_LREAL" byteoffset="8" vartype="VAR" /> </TypeUserDef>
// Each POU contains some implicit variables, which do not get published. Depending on the data type these might cause memory gaps of different sizes. FUNCTION_BLOCK POUx IMPLEMENTS SomeInterface VAR_INPUT in : INT; END_VAR VAR_OUTPUT out : INT; END_VAR VAR END_VAR
各 POU には、公開されない暗黙的な変数がいくつか含まれています。次のようなデータ型の場合 __XWORD
の場合、システムが 64 ビットか 32 ビットかに応じて、メモリ ギャップのサイズが異なるため、クライアント側のデータ レイアウトが決まります。
64 ビットおよび 32 ビットのシンボル ファイル内の結果のエントリ。 (注意を払う "size
" そして "byteoffset
"):
シンボルファイル、ファンクションブロック、互換性レイアウトオプション、64ビット
<TypeUserDef name="T_Baustein" size="24" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="16" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="18" vartype="VAR_OUTPUT" /> </TypeUserDef>
シンボルファイル、ファンクションブロック、最適化レイアウトオプション、64ビット
<TypeUserDef name="T_Baustein" size="4" nativesize="24" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein">> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
シンボルファイル、ファンクションブロック、互換性レイアウトオプション、32ビット
<TypeUserDef name="T_Baustein" size="12" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="8" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="10" vartype="VAR_OUTPUT" /> </TypeUserDef>
シンボルファイル、ファンクションブロック、最適化レイアウトオプション、32ビット
<TypeUserDef name="T_Baustein" size="4" nativesize="12" typeclass="Userdef" pouclass="FUNCTION_BLOCK" iecname="Baustein"> <UserDefElement iecname="in" type="T_INT" byteoffset="0" vartype="VAR_INPUT" /> <UserDefElement iecname="out" type="T_INT" byteoffset="2" vartype="VAR_OUTPUT" /> </TypeUserDef>
詳細については、以下を参照してください。 シンボル構成。