ストレージ形式
本章では、ファイルベースのストレージ形式について説明します。これには、ファイルのテキストエンコーディング、フォルダ構造、プログラミングオブジェクトとそのメタデータの保存方法、構造化テキストおよびグラフィカル言語によるソーステキストの説明が含まれます。
テキストのエンコードとフォーマット
によって書き込まれるすべてのファイルに対して同じ規則が適用されますCODESYS File-Based Storageこれにより、プロジェクトはオペレーティングシステム間で移植可能になり、バージョン管理システムにおける差異も明確になります。
エンコーディングすべてのテキストファイルはUTF-8で書き込まれます。バイトオーダーマーク(BOM)。既存のXMLファイルが読み込まれる場合、指定されたエンコーディングが使用されます。バイトオーダーマーク容認されている。
終点 : ファイルは改行文字で書き込まれます (
\n) ファイルが読み込まれると、改行と Windows の行末 (\r\n) が受け入れられます。バージョン管理システムにおける行末
不要な差異を避けるため、バージョン管理システムで改行が行末として保持されるように設定してください。
へこみ JSONファイルとXMLファイルは、ネストレベルごとにタブ文字1つでインデントされます。
フォルダー
プロジェクトツリー内の各フォルダーは、同じ名前のディレクトリになります。フォルダーには、オプションでメタデータファイルが含まれます。.folder_meta.jsonこのファイルには、フォルダのオブジェクトGUIDとそのプロパティが保存されます。
{
"objectGuid": "1b3a0c5e-...",
"properties": {
"PropertyName": "PropertyValue"
}
}でCODESYS 3各フォルダにはオブジェクト GUID があります。これは、.folder_meta.jsonフォルダの名前変更や移動後も追跡できるようにファイルを作成します。propertiesフィールドは、フォルダにプロパティがある場合にのみ書き込まれます。それ以外の場合は省略されます。CODESYS 4フォルダーにはオブジェクト GUID がありません。保存されたメタデータのないフォルダーには.folder_meta.jsonファイル。
プログラミングオブジェクト
各プログラミングオブジェクトは個別のテキストファイルとして保存されます。ファイル名の構文は次のとおりです。
<object name>.<class>.<language>
クラス部分はオブジェクトの型を指定し、言語部分は実装言語を指定します。具体的には、構造化テキストの言語部分は次のようになります。st構造化テキストにおける関数ブロックの例は次のとおりです。Timer.fb.st。
オブジェクトタイプ | クラス部分 | 例 |
|---|---|---|
プログラム |
|
|
機能ブロック |
|
|
関数 |
|
|
方法 |
|
|
アクション |
|
|
遷移 |
|
|
POUの所有物 |
|
|
インタフェース |
|
|
インターフェースメソッド |
|
|
インターフェースプロパティ |
|
|
構造(DUT) |
|
|
列挙(DUT) |
|
|
エイリアス(DUT) |
|
|
ユニオン(DUT) |
|
|
グローバル変数リスト |
|
|
下位オブジェクトを持つオブジェクト(例えば、メソッドを持つ関数ブロック)は、名前がキャレット()で終わるディレクトリとして保存されます。^オブジェクト自体はこのディレクトリ内のファイルです。下位オブジェクトはそれらの隣に配置されます。
Timer.fb.st^/
Timer.fb.st (der Funktionsbaustein selbst)
Start.meth.st (eine Methode)
Stop.meth.st (eine Methode)オブジェクトメタデータ
オブジェクトに他の方法では再構築できないメタデータが含まれている場合、ファイルはメタデータコメントで始まります。例としては、安定したオブジェクト GUID やオブジェクトプロパティなどがあります。コメントは次のようにマークされます。(* METADATA … *)メタデータはJSON形式で保存されます。
(* METADATA
{
"v3Meta": {
"objectGuid": "e75fc257-..."
}
}
*)オブジェクトにメタデータが含まれていない場合、メタデータコメントは書き込まれず、ファイルはオブジェクトヘッダーから直接開始されます。
プロジェクト情報(タイトル、バージョン、作成者、会社、説明、その他の設定)は、ProjectInfo.jsonプロジェクトのルートディレクトリにあるファイル。
構造化テキスト内のオブジェクトのソーステキスト
構造化テキストは、マーカーのないプレーンテキストとして保存されます。宣言部分は常に最初に記述され、その直後に実装部分が続きます。
以下の例は構造化テキストを示していますPLC_PRGプログラムPLC_PRG.prg.stファイル。
PROGRAM PLC_PRG
VAR
nCounter : INT;
END_VAR
nCounter := nCounter + 1;
END_PROGRAMグラフィック言語の原文
構造化テキスト以外の言語 - ラダー図 (LD)、ファンクションブロック図 (FBD) などのグラフィカル言語、連続関数チャート CFC(Central Function Chart)およびSFC(Sequential Function Chart)は、構造化テキストとして記述できません。これらの言語の場合、宣言はプレーンテキストとして保存されます。ただし、実装セクションは、それぞれの言語を示す2行のマーカー行で囲まれています。
FUNCTION_BLOCK TSSend
VAR_INPUT
xExecute : BOOL;
END_VAR
__BEGIN_IMPLEMENTATION('CFC')
{
... die Implementierung im eigenen Format der Sprache ...
}
__END_IMPLEMENTATION
END_FUNCTION_BLOCK実装はマーカーから始まります__BEGIN_IMPLEMENTATION('<language>')言語を引用する(例:LDラダー図の場合、FBD機能ブロック図の場合、CFC連続関数チャートの場合、またはSFC(シーケンシャル関数チャートの場合)。マーカーで閉じられます。__END_IMPLEMENTATIONマーカー間のすべてのデータは、それぞれの言語のテキスト形式で保存されます。統合されたグラフィック言語の場合、この形式はJSONとして使用され、ネストレベルごとにタブ文字1つでインデントされます。
マーカーは、宣言が実装部分の内容に関わらず、確実に分離されるようにする役割を果たします。構造化テキストにはマーカーはいいえであり、使用もされません。
ネイティブフォーマットを持たないオブジェクト
すべてのオブジェクトタイプに独自のテキスト表現があるわけではありません。デバイス構成やタスク構成などのオブジェクトは、拡張子を持つスワップファイルに保存されます。xml.v3オリジナルを封入したものCODESYSシリアル化。これらのファイルはテキストファイルのままであり、バージョン管理システムでは行ごとの差異が引き続き発生します。このようなオブジェクトは、ネイティブ形式が利用可能になり次第、後日移行することができます。
詳細については、以下を参照してください。オブジェクトを移行
オブジェクトの内容が全く解釈できない場合、そのオブジェクトは変更されずにそのまま保持されるため、情報が失われることはありません。