Skip to main content

アプリケーションコードの生成

アプリケーションコードは、アプリケーションの起動時にPLCが実行するマシンコードです。

CODESYS 開発システムで記述されたソースコードからアプリケーションコードを自動的に生成します。これは、アプリケーションをコントローラーにダウンロードする前に自動的に実行されます。アプリケーションコードが生成される前に、割り当て、データ型、およびライブラリの可用性を確認するためのテストが実行されます。さらに、メモリアドレスはアプリケーションコードの生成時に割り当てられます。

クリックできます ビルド→コードの生成 このコマンドを明示的に実行します。これは、PLCがまだ接続されていない場合でも、ソースコードのエラーを検出するのに役立ちます。エラーは、「ビルド」カテゴリのメッセージビューに出力されます。

重要

アプリケーションを暗号化した場合は、次の情報を考慮してください。オンライン変更後に要求に応じて(新しい)ブートアプリケーションが生成された場合、ブートアプリケーションは暗号化されていない現在のコードでRAMに形成されます。

アプリケーションコードを明示的に生成する

要件:アプリケーションはエラーなしでコンパイルできます。

  • クリック ビルド→ コードを生成する

    アプリケーションコードが生成されます。メモリ割り当てに関する詳細情報は、メッセージビューに出力されます。

詳細については、以下を参照してください。 ブートアプリケーションの作成

アプリケーションコード生成時のメッセージ

アプリケーションコードを生成するとき、 CODESYS メッセージビューにメモリ割り当てに関する情報を出力します。再割り当ては、メモリの増分ビルドのために新規および変更されたPOUと変数に対してのみ行われるため、メモリにギャップが生じます。オンラインでの変更も同じ効果があります。この断片化により、使用可能なメモリの量が減少します。ただし、クリックするとメモリを完全に再割り当てできます 綺麗 したがって、空きメモリの量を増やします。

構文エラーとバグ CODESYS コード生成中の検出とメモリ割り当てもメッセージビューに出力されます(建てる カテゴリー)。

メモリ割り当てに関する出力情報:

  • 生成されたコードのサイズ (バイト単位):すべてのコードセグメントの合計

  • グローバルデータのサイズ (バイト単位):グローバル変数によって使用される合計メモリ。入力または出力がグローバル変数の領域にマップされていない限り、入力と出力は含まれません。

  • コードとデータに割り当てられた合計メモリサイズ (バイト単位):割り当てられたメモリの合計は、すでに使用されているメモリ領域と、増分ビルドおよびオンライン変更用に予約されているがまだ使用されていないメモリで構成されます。最初のビルド後、すでに使用されているメモリは、使用されている最大のアドレスとほぼ同じです(以下を参照)。最大の連続メモリギャップ(以下を参照)は、割り当てられたメモリの合計との差にほぼ対応します。ただし、増分ビルドとオンライン変更の数が増えると、メモリギャップの数も増え、連続する最大のメモリギャップは小さくなります。

  • メモリ領域<n>:個々の予約済みメモリ領域の内容:

    背景:どのデータとコードがどのメモリ領域に保存されているかは、PLCによって異なります。たとえば、コードとデータは、 CODESYS Control Win。住所について %I%M、 と %Q、変数がアドレスに割り当てられていない場合でも、メモリは常に予約されています。アプリケーションを「クリーンアップ」した後、メモリは完全に再割り当てされます。この場合、事前定義された「配置」(通常は8)によって小さなギャップが生じる可能性があります。ギャップが大きくなるのは、たとえば配列領域を増やすなどして、「クリーニング」せずに日付を変更した場合です。この場合、影響を受けるPOUのみが再コンパイルされます。さらに、オンライン変更の場合、メモリは新しい変数と新しいコードにのみ使用されます。以前に削除された変数とコードによって予約されていたメモリが再び使用可能になります。その結果、メモリの断片化は、多くの増分ビルドとオンライン変更の後に発生する可能性があります。これにより、場合によってはまったく使用できない可能性のある多くの小さなギャップが作成されます。安全に使用できるメモリの量を明確にするために、コード生成中にメモリ領域の「最大の連続メモリギャップ」が出力されます。

    • 使用された最高のアドレス (バイト):これは、割り当てられたメモリ領域全体で最も高い予約アドレスです。 「クリーニング」操作後の最初のビルド中に、メモリアドレスは、アラインメント(通常は8バイト)を考慮して、昇順で変数に出力されます。その結果、この時点で使用される最大のアドレスは、使用されるメモリの量にほぼ対応します。割り当てられたメモリ領域の残りの部分は、インクリメンタルビルドおよびオンライン変更に引き続き完全に使用できます。

    • 最大の連続メモリギャップ (バイト単位):これは、バックアップに使用できるメモリサイズです。

      割り当てられたメモリに生じたギャップは、他の変更のために可能な限り再利用されます。たとえば、タイプのグローバル変数の場合 Byte が追加されると、メモリの最初の空きバイトに配置されます。これには、わずかなギャップでも十分です。ただし、FBインスタンス、構造体または配列の型の変数、またはPOUのコードは連続して格納する必要があるため、それに応じてより多くのメモリを占有します。結果として、それらは最大の連続したメモリ領域にのみ割り当てることができます。これが、コード生成中に、安全に使用できる「最大の連続メモリギャップ」が出力(バイト単位)と、合計メモリのパーセンテージである理由です。

これについては、以下も参照してください。 アプリケーションを生成するためのオプション

アプリケーションコードの暗号化

詳細については、以下を参照してください。 アプリケーションの保護