Skip to main content

マルチコア操作のためのデータの一貫性の維持

デフォルトでは、視覚化のIECプログラム(Visu_Prg)独自のタスクで実行されます(VISU_TASK)。視覚化は通常、メインアプリケーションからのデータを表示します。メインアプリケーションからのデータは、別のタスクで処理されます。このため、アプリケーションをマルチコアコントローラーで実行する場合、データの整合性は重要なトピックです。

原子(時間で分割できない)割り当てがないことを知っておくことが重要です。 STRINGWSTRING データ型と構造化データ。これらのタイプの日付が渡されたときに日付を変更してはなりません。ただし、日付が以外のタスクによって変更された場合 VISU_TASK、その後、短時間表示されない場合があります。

以下に、データの一貫性を明示的に維持する必要がある場所を示します。 CODESYS マルチコアシステムで使用するための視覚化。

ヒント

に関する一般的な注意事項に注意してください マルチコア操作

1つの視覚化サイクルでIECデータを読み取る

視覚化要素の表示が複数の変数に依存している場合、これらの変数の割り当てはサイクル整合性がありません。たとえば、要素が2つのIEC変数によってx方向とy方向に移動する場合、これは、視覚化要素が1サイクルでx方向にのみ移動し、次にy方向に移動するという効果があります。次のサイクルの方向。

同じことが、複数の視覚化要素によって使用されるデータにも当てはまります。

例:要素1は状態変数を読み取ります invisible 状態を更新します。別のタスク VISU_TASK それぞれのIEC変数を変更します。要素2は状態変数を読み取ります。 Invisible 状態を更新します。結果:要素の状態が短時間異なります。この動作は、すべてのアニメーション変数で発生する可能性があります。

一般的な入力アクション

視覚化の変更

文字列データ型を使用する場合は、上記の問題に注意してください。

コマンドの実行

文字列データ型を使用する場合は、上記の問題に注意してください。

フレームの視覚化を切り替えます

文字列データ型を使用する場合は、上記の問題に注意してください。

変数の書き込み

読み取りと同様に、書き込みにアトミックな割り当てはできません STRING/WSTRING 変数。

STコードを実行する

STコードを作成するときは、データの整合性が危険にさらされていないことを確認してください。

視覚化のインターフェース変数

構造が経由で転送される場合 VAR_INPUT、その場合、データの一貫性は保証されません。構造化データを使用する VAR_IN_OUT、または経由でインターフェースを使用する VAR_INPUT

視覚化のユーザー管理

ユーザー管理がパブリックインターフェイスを介して呼び出された場合(VisuUserMgmt.library)、これは常にから発生する必要があります VISU_TASK

視覚化要素「ポリゴン」

The ポリゴン 視覚化要素には ダイナミックポイント 財産。ここで、ポイントの配列を構成できます。配列全体の読み取りはアトミックではないことに注意してください。

データ型の変数 STRING

データ型の変数で構成されたすべてのプロパティにアトミックな割り当てはありません STRING。例:のURLの制御変数 ウェブブラウザ 視覚化要素。

ユーザーライブラリ

VisuUtils.library

FbOpenDialogExtended.CallOpenDialog 使用 SysMemCpy。しばらくの間、インスタンスを再構成しないでください xBusy == TRUE

IECStringUtils.library

機能ブロックは使用しないでください VisuFbAnalyzeDateTimeFormatString 複数のタスクからの同じバッファを使用します。

StringUtils.library

注意:構造体へのアクセスは、使用時に発生します DateFormatter.Format

IECStringUtils.library

注意:文字列アクセスは、使用時に発生します VisuFbAnalyzeDateTimeFormatString.GetMonth

ダイアログ

ダイアログのパラメータの受け渡しは、複雑なデータ型の場合と同じように検討する必要があります。ダイアログを開くと、渡されたすべてのパラメーターのコピーが作成されます。

例外: VAR_IN_OUT を持っているパラメータ {attribute 'VAR_IN_OUT_AS_POINTER'}。この属性が割り当てられている場合、コピーは作成されず、ダイアログは元のオブジェクトで機能します。