Beckhoff#TwinCAT3 IEC61131-3 References

前回はPointersについて紹介しましたがこれから、Pointerより安全な方法を紹介したいと思っています。これはReferenceです。

Pointerは変数のメモリアドレスを保存するに対して、Referencesはオブジェクトを参照するのイメージです。

定義

nVar:Int:=10;

nRef:REFERENCE to INT:=nVar;

先のコードだと、nRefはいまnVarを参照しています。

つまり、nRefの値が変更になれば、nVarに直接変更すると、同じな結果になります。

例えば、nRefを30書き込みますと、nVarの値もそのまま30だと更新されいます。

ReferencesはPointerより、簡単に使える・データタイプの保護のメリットがあります。

Pointersのように^のOperatorを使わなくても大丈夫ですし、違うデータタイプの変数を参照しようとするとコンパイルエラーが出ます。

__ISVALIDREF()

そしてReferenceの参照が有効かどうかをCheckする関数もあります。

check:=__ISVALIDREF(nRef);

もし参照有効ならTrueが戻ります。References使用する前に常にCheckするのがよいでしょう。無効なReferencesを使うとPLCが止まってしまいますので。

ReferencesはFunctions/Functions Blocksのパラメータとしてよく見られています。特に大きなデータを引き数としてBlocksの中に入れるときはよく使います。そうするとMemoryの節約できますから(簡単にいうとReferencesにすると変数のアドレスを入れて参照するので、そのまま1000長さの実数配列を引数としていれると1000長さの実数配列を”COPY”してBlocksにの中に使うことになる。)

はーい、お疲れ様です。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする