デバイスとI / Oマッピングの構成
関連するデバイスエディタで、デバイスツリーに挿入されるデバイスオブジェクトを設定できます。可能性はデバイスの説明によって異なります。 「汎用デバイスエディタ"は、デバイス固有のタブによって必要に応じて補足されるタブを提供します。
要件:デバイスツリーに標準PLCがあり、その下にフィールドバスデバイスオブジェクトが挿入されている標準プロジェクトを開いている必要があります。
プロジェクトのデバイスツリーで、標準PLCのデバイスオブジェクトをダブルクリックします。
The <デバイス名> エディターがメインで開きます CODESYS 窓。 The 通信設定 タブがフォアグラウンドにあります。コントローラの設定を行うには、他のタブに変更してください。汎用デバイスエディタのヘルプページを参照してください。
プロジェクトのデバイスツリーでフィールドバスデバイスオブジェクトをダブルクリックします。
The <フィールドバスデバイス名> エディターがメインで開きます CODESYS 窓。デバイスに応じて、特定のタブを使用できます。構成オプションについては、それぞれのデバイスエディターのヘルプページを参照してください。の場合 一般的なデバイス構成ビューを表示する オプションはで選択されています 、 の中に デバイスエディタ カテゴリについては、汎用デバイスエディタによって提供されるタブも参照してください。
PLCの構成パラメータが、視覚化などを介して別のデバイスによって変更された場合は、構成ファイル IoConfig.par
コントローラ上に作成されます。デバイスによっては、現在のパラメータをそのようなファイルに書き込むためのボタンが、オンラインモードのデバイスエディタのパラメータダイアログにある場合があります。プロジェクト内の変更されたパラメータも更新するために、オンラインモードでパラメータファイルを読み込むことができます。
要件: ハードウェア環境がデバイス ツリー内の PLC およびパラメータ化可能なデバイスにマッピングされている、デバイス ツリーを含む標準プロジェクトがあります。コントローラにはファイルがあります IoConfig.par
で、デバイス パラメータが現在の値で以前に保存されました。
追加します PLCパラメータファイルを設定に読み込む からインターフェイスメニューへのコマンド デバイス のカテゴリ ダイアログ。
デバイスツリーでPLCデバイスオブジェクトを選択し、コンテキストメニューを開きます。
クリック PLCパラメータファイルを設定に読み込む。
CODESYS コントローラへの接続を自動的に確立し、パーファイルからパラメータを読み込みます。これらは、デバイスパラメータを使用してタブで適宜更新されます。
I / Oマッピングをプロジェクト変数、または機能ブロック全体に構成できるかどうかは、デバイスのタイプによって異なります。 I / Oマップの構成とは、デバイスの入力チャネルと出力チャネルをプロジェクトの変数にリンクすることを意味します。 「」という用語も使用しますマッピング" このため。
デバイスの入力と出力の変数へのマッピングについては、一般的に次の点に注意してください。 CODESYS:
入力にマップされている変数への書き込みアクセス権がありません。
既存の変数を1つの入力にのみマップできます。
I / Oマップで新しいグローバル暗黙変数を直接生成し、それらをデバイスチャネルにマップできます。
構造体のメモリレイアウトは、デバイスによって指定されます。
I / Oマップでアドレスを変更したり値を修正したりできます。
のI / Oチャネルに割り当てられている変数ごとに I / Oマッピング ダイアログでは、アプリケーションのコンパイル中に「強制変数」を生成させることができます(以下を参照)。これらの変数を使用すると、たとえばプラントの試運転中に、視覚化/ HMIを介して入力または出力に値を強制することができます。
I / Oマップの変更は、オンライン変更でコントローラーに転送できます。
デバイス入力へのポインタが使用されている場合、そのアクセスは書き込みアクセスと見なされます。たとえば、
pTest := ADR(input);
。コードが生成されると、コンパイラの警告が発生します: "...invalid assignment target
"。この種の構成が必要な場合は、最初に入力値をコピーする必要がありますinput
書き込みアクセス権を持つ変数に。I / Oアドレスは、IECコードの「AT宣言」を介して変数とリンクすることもできます。ただし、デバイス構成は頻繁に変更されるため、デバイスエディターでのみ割り当てを行うことをお勧めします。
AT宣言を使用する場合は、次の点に注意してください。
AT宣言は、ローカル変数またはグローバル変数でのみ許可され、ファンクションブロックの入力変数または出力変数では許可されません。
I / Oの暗黙的な「強制変数」(以下を参照)は、AT宣言では生成できません。
構造体変数または関数ブロック変数でAT宣言を使用する場合、すべてのインスタンスが同じメモリ位置にアクセスします。これは、「C」などの従来のプログラミング言語での「静的変数」の使用に対応します。
重要
デバイス入力へのポインタが使用されている場合、アクセス(たとえば、 pTest := ADR(input);
)書き込みアクセスとして適用されます。コードが生成されると、コンパイラの警告が発生します: "...invalid assignment target
"。
この種の構成が必要な場合は、最初に入力値をコピーする必要があります(input
)書き込みアクセス権を持つ変数に。
ヒント
別の方法として、AT宣言を使用してプログラミングコードのアドレスに変数を割り当てることができます。ただし、デバイス構成の変更の可能性を考慮して、デバイスエディターでのみ割り当てを行うことをお勧めします。
ヒント
デバイスのI / Oマッピング構成をにエクスポートできます。 csv
ファイルするか、そのようなファイルからインポートします。
詳細については、以下を参照してください。 I / O画像をCSVにエクスポート
詳細については、以下を参照してください。 I / Oを強制するための暗黙的な変数の生成
要件:でI / Oマッピング構成をサポートするデバイス CODESYS プロジェクトのデバイスツリーに挿入されます。に I / Oマッピング したがって、デバイスエディタのタブを使用すると、アドレスとデータタイプを指定して、デバイスの入力チャネルと出力チャネルを表形式で表示できます。
「大きすぎる」データ型のマッピング
バイトより大きいデータ型の変数がバイトアドレスにマップされている場合、変数の値はそこでバイトサイズに切り捨てられます。の変数値を監視するため I / Oマッピング ダイアログでは、これは、アドレスの「ルート」要素に、変数が現在プロジェクトに持っている値が表示されることを意味します。バイトの現在の個々のビット値は、その下のビット要素に連続して表示されますが、これは変数値全体に対して十分ではない場合があります。
ヒント
UNIONがマッピングダイアログでI / Oチャネルによって表される場合、「ルート」要素へのマッピングも可能かどうかはデバイスによって異なります。
POUで、たとえば変数を宣言します
xBool4
タイプのBOOL
アプリケーションからターゲットデバイスの入力にアクセスするために使用します。デバイスエディタを開くには、デバイスツリーでデバイスオブジェクトをダブルクリックしてから、 <デバイス名> I / Oマッピング タブ。
観察する 変数 デバイス入力の表示を含む列
チャネルとデバイス出力
チャネル、組織ごとに並べ替えることができます
デバイスに応じて、ノード。タイプのデバイス入力があると仮定します
BYTE
。個々のビットアドレス(ビットチャネル)が下に表示されます。BYTE
ノード。注:構造化変数をマッピングする場合、エディターは両方の構造変数を入力できないようにします(例:
%QB0
)および個々の構造要素(例:%QB0.1
とQB0.2
)。したがって、マッピングテーブルにビットチャネルエントリのサブツリーを持つメインエントリがある場合は、次のようになります。次に、メインエントリの行、またはサブ要素(ビットチャネル)の行に変数を指定できます。 )、ただし両方にはなりません。これで、チャネル全体を適切なタイプの変数で占有するか、その個々のビットチャネルアドレスを適切なタイプの変数で占有することができます。
BOOL
またBIT
。まず、ビット入力チャンネルをダブルクリックします。 変数 桁。入力フィールドが開きます。
チャネルに既存の変数を配置するには、完全なパスを使用して目的のプロジェクト変数を入力する必要があります。押す
入力アシスタントを開きます。たとえば、変数を選択します
Application.PLC_PRG.xBool4
で宣言PLC_PRG
。変数が挿入されます。 The
記号はに表示されます マッピング 桁。これで、アドレスが削除されました。これは、既存の変数の値が別のメモリスペースで管理されているため、アドレスが使用できなくなったことを意味するものではありません。ただし、値を書き込む際のあいまいさを回避するために、それでも、特に出力の場合は、アドレスを別の変数で占有しないようにする必要があります。
注:コンパイラバージョンV3.5 SP11以降では、既存の変数にマッピングするときに、変数の初期化値がデフォルト値として自動的に使用されます。あなたは編集することができます デフォルト値 新しく作成された変数にマップする場合、またはマッピングが指定されていない場合にのみフィールド。古いバージョンでは、ユーザーはデフォルト値と初期化値が同一であることを明示的に指定する必要がありました。
変数の割り当てを再度削除します。チャネルのルートをクリックします。
BYTE
ノード。入力アシスタントを再度使用して、変数を選択しますApplication.PLC_PRG.byte_gotodevice
。変数が挿入され、メインチャネルのすべてのビットアドレスがストライキされます。追加でそれらを占有しないでください。
以下では、デバイス出力をグローバル暗黙変数にマップします。これは、この目的のために最近作成したものです。 I / Oマッピング ダイアログ。
ヒント
The I / Oマッピング したがって、ダイアログはグローバル変数を宣言するためのさらなる場所です。
要件:でI / Oマッピング構成をサポートするデバイス CODESYS プロジェクトのデバイスツリーに挿入されます。に I / Oマッピング したがって、デバイスエディタのタブには、アドレスとデータタイプを指定したデバイスの入力チャネルと出力チャネルの表形式の表示が表示されます。
デバイスエディタを開くには、デバイスツリーでデバイスオブジェクトをダブルクリックしてから、 <デバイス名> I / Oマッピング タブ。
のチャネルエントリのマッピングテーブルをクリックします。 変数 入力フィールドを開くための列。
単純な名前を指定します(「
.
")新しい変数の場合(例:myBool
)。CODESYS プロジェクト内に暗黙のグローバル変数として変数を作成し、それをチャネルアドレスに直接割り当てます。したがって、この場合、既存の変数へのマッピングの場合のように、アドレスが突き刺さったようには見えません。
。
デバイスでサポートされている場合は、機能ブロック全体を入力チャネルまたは出力チャネルにマッピングできます。これにより、たとえば、信号の変化の頻度をカウントしたり、メンテナンスの目的でチャネル値をスケーリングしたりできます。
ここでは、デバイス出力チャネルを機能ブロックにマッピングします。この例では、ブロックはチャネル出力値をスケーリングします。
要件:FBマッピングをサポートするデジタル出力を備えたデバイスがプロジェクトにリンクされています。ファンクションブロックがあります Scale_Output_Int 次の実装で。機能ブロック自体の属性、およびチャネル出力が処理される出力パラメータの前の属性は重要です。
{attribute 'io_function_block'} FUNCTION_BLOCK Scale_Output_Int VAR_INPUT iInput : INT; iNumerator : INT; iDenominator : INT :=1; iOffset : INT := 0; END_VAR VAR_OUTPUT {attribute 'io_function_block_mapping'} iOutput : INT; END_VAR VAR END_VAR IF iDenominator <> 0 THEN iOutput := TO_INT(TO_DINT(iInput) * TO_DINT(iNumerator) / TO_DINT(iDenominator)) + iOffset;
を開きます I / Oマッピング デバイスモジュールのタブ。機能ブロックに接続する必要のある出力をダブルクリックします。クリック
IOチャネルにFBを追加します ボタン。
The 機能ブロックを選択 ダイアログが開きます。左側には、少なくとも機能ブロックが表示されます Scale_Output_int 下 応用 ノード。対応する機能ブロックを含むプロジェクトでリンクされたライブラリも選択のために表示されます。
POUを選択します
myScaleOutputInt
。クリックした後 わかった、機能ブロックパラメータのパス
iOutput
の中に 変数 マッピングダイアログに入力されます。パスは、アプリケーション名、デバイスチャネル名、および選択されたFB出力で構成されます(例:App1.Out_4_Int_myScale_Output_Int_1.iOutput
)。チャネルを選択し、をクリックします
インスタンスに移動 ボタン。
フォーカスがに切り替わります <デバイス名> IECオブジェクト タブと新しいIECオブジェクト用に作成されたエントリ
Out_4_Int_myScale_Output_Int_1
。オンラインモードのこのビューでは、パラメータの現在の値が表示されますiOutput
チャネル用Out_4_Int
FBによってスケーリングされます。他の監視ビューと同様に、値を書き込んで強制することもできます。
詳細については、以下を参照してください。 タブ: '<デバイス名> IECオブジェクト と io_function_block、io_function_block_mapping
のマッピングテーブルで、チャネル全体のアドレス値を変更できます(ただし、チャネルの個々のサブ要素のアドレス値は変更できません)。 <デバイス名> I / Oマッピング タブ。これにより、アドレス指定を指定されたマシン構成に適合させ、モジュールのレイアウトが変更された場合でもアドレス値を保持できます。デフォルトでは、レイアウトを変更すると、アドレス値が自動的に調整されます。
要件:プロジェクトにI / Oマッピングがあります。上記のヘルプページの対応するセクションを参照してください。
デバイスエディタを開くには、デバイスツリーでデバイスオブジェクトをダブルクリックしてから、 <デバイス名> I / Oマッピング タブ。
のチャネルエントリのマッピングテーブルをクリックします。 住所 入力フィールドを開くための列。これは、チャネルの「ルート」アドレスに対してのみ可能であり、そのサブ要素の特定の1つに対しては可能ではありません。
したがって、テーブル内のチャネルの先頭アドレスエントリを次のように変更します。
QB0
にQB1
。入力フィールドを終了します。アドレス値が変更されます。 The
アドレスの前に記号が表示されます。アドレスが固定されていることを示します。チャネルのサブ要素のアドレスもそれに応じて変更されます。ここで、デバイスツリーの入力/出力チャネルを持つ他のデバイスオブジェクト内のデバイスオブジェクトの位置を変更すると、 CODESYS 修正しない場合のように、これらのアドレスを新しい順序に適合させません。
手動変更または修正を元に戻すには、アドレス値の入力フィールドを再度開き、アドレスエントリを削除してEnterキーを押します。
CODESYS アドレスと関連する後続のアドレスを変更前の値にリセットし、
シンボル。
詳細については、以下を参照してください。 住所
プロジェクトで接続するデバイスに応じて、 CODESYS 入力と出力に適用される変数をさまざまな方法で更新します。この設定は、で明示的に変更できます。 I / Oマッピング ダイアログ。
要件:I / Oマップを含むデバイス構成でアプリケーションをエラーなしでコンパイルしました。関連するハードウェアとバスシステムが実行されています。を使用してコントローラーに接続しました
コマンドを実行し、アプリケーションをロードして開始しました。を開きます I / Oマッピング デバイスエディタのPLCのタブ。エディタを開くには、デバイスツリーでデバイスオブジェクトをダブルクリックします。
マッピングテーブルに追加で 現在の価値 と 新しい価値 列。
構造体変数がアドレスの「ルート」要素にマップされている場合1、 CODESYS オンラインモードでは、この行に値は表示されません。たとえば、
DWORD
変数はアドレスにマップされますが、それぞれの値は「ルート」行とその下のインデントされたビットチャネル行の両方で監視されます。原則として、値が複数のサブ要素で構成される場合、「ルート」行のフィールドは常に空のままになります。
1 "root" =マッピングダイアログのこのアドレスの最上位要素
列のエントリに特定の変数値を入力します 新しい価値 を押して F7 強制するか Ctrl+F7 値を書き込みます。
宣言エディタまたはウォッチリストでの監視の場合と同様に、強制変数値が列に表示されます 現在の価値 接頭辞付きの赤いF記号または書き込まれた値。
重要
PLCコードが使用しない入出力は、オンラインモードのPLCで読み取られないため、表示値が正しくない場合があります。 The 現在の価値 関連する変数の一部が灰色の背景で表示されます。

プラントまたは機械の試運転中に、入力と出力に適用される値を「強制」する必要がある場合があります。デバイスがこれをサポートしている場合は、この目的のために特別な「力変数」を生成して、たとえばHMIビジュアライゼーションで使用できます。
要件:デバイスは機能をサポートしています。デバイスにI / Oマップが構成されており、プログラムオブジェクトが含まれているプロジェクトがあります。 PLC_PRG
。
デバイスエディタを開き、 PLC設定 タブをクリックし、デバイスツリーでデバイスオブジェクトをダブルクリックします。
オプションを有効にする IOマッピング用の力変数を生成する。
押す F11 アプリケーションをコンパイルします。
次の構文に従って、I / Oチャネルごとに2つの変数が作成されます。その過程で、チャネル名のスペースがアンダースコアに置き換えられます。
<device name>_<channel name>_<IECaddress>_force
タイプのBOOL
強制のアクティブ化と非アクティブ化<device name>_<channel name>_<IECaddress>_value
チャネルに強制する値を定義するためのチャネルのデータ型のこれらの変数は、カテゴリの入力アシスタントで使用できます 変数 / IoConfig_Globals_Force_Variables。 あなたはそれらを使用することができます CODESYS オブジェクトのプログラミング、視覚化、シンボル構成などで。
機能ブロックを開く PLC_PRG、実装部分にフォーカスを設定し、を押します F2。
入力アシスタントが開きます。変数はカテゴリで利用可能です 変数 / IoConfig_Globals_Force_Variables 上記のように。
「Forcevariable」入力の立ち上がりエッジは、「Valuevariable」で指定された値でそれぞれの入力または出力の強制をアクティブにします。立ち下がりエッジは強制を無効にします。 「Force」変数をにリセットして非アクティブ化
FALSE
新しい値を強制できるようにするための要件です。
次の制限に注意してください。
暗黙の力変数を介した強制は、にマップされているチャネルでのみ可能です。 I / Oマッピング 既存または最近作成された変数へのデバイスの。
暗黙の強制変数を介した強制は、未使用の入力と出力、またはアプリケーションプログラムのAT宣言を介して変数にマップされたものには使用できません。
メカニズムを介して強制するI / Oチャネルは、 CODESYS 少なくとも1つのタスクで。
CODESYS 監視の強制入力を赤い強制記号で識別しますが、強制入力/出力は識別しません。強制値は、デバイスへの書き込みのためにI / Oドライバーによって暗黙的にのみ使用されます。
詳細については、以下を参照してください。 変数の強制と書き込み
デバイスのI / Oマップと、デバイスツリーでその下に挿入されたすべてのサブ要素のI / Oマップを表示するテーブルがあります。そこでは、それぞれのデバイスエディタの個々のマッピングテーブルとまったく同じ方法でI / Oマップを編集できます。
要件:プロジェクトのデバイスツリーには、それぞれがI / Oマッピング構成を有効にする複数のPLCが挿入されています。
デバイスツリーのルートノードを選択し、をクリックします
コンテキストメニューで。The I / Oマッピングの編集 ダイアログが開き、プロジェクトに挿入されたすべてのデバイスのI / Oマッピング構成がテーブルに表示されます。エントリは、と同じ方法で編集できます。 I / Oマッピング 関連するデバイスエディタのダイアログ。
次に、デバイスツリーでコントロールオブジェクトの1つを選択し、
コンテキストメニューでもう一度コマンドを実行します。The I / Oマッピングの編集 ダイアログには、選択したオブジェクト内およびその下にあるI / Oマッピング構成のI / Oテーブルのみが表示されるようになりました。
希望の設定 フィルター テーブルの上のバーに入力するか、変数名を入力します 変数を検索する マッピングでのこの変数の使用を確認するためのフィールド。
このウィンドウでの作業方法は、 <デバイス名> I / Oマッピング タブ。