Siemens#TIAのAT キーワード使ってANY DATA TYPEを設定する

みんなさん、お久しぶりです。最近はお仕事とか色々忙しくなってBLOGが一時的に放置しました。今回はTIAのATキーワードでANY DATE TYPEを作ってBLK_MOVEなどの命令と一緒に使えるようになるには、どうすればいいのかを簡単なメモします。
まず今回私が使っていたのはS7-1500です。S7-1500ならDBの構造がデフォルトに最適化が入っててつまりアドレスがありません。そうなるとANY DATA TYPEが使用できませんのでまずDBの最適化のCHECK BOXを外してください。
ではまずS7-1200とS7-1500がどうやって間接アドレスアクセスできるのかをF1を押して見てみましょう。

1

うんうん、なるほど。もしSiemens使うのなら英語を読むのは怖がらないでくださいね。POINTERで使えますね、あとSTLならARなどのアドレスRegisterが使えますが、SCLなら命令で間接アドレスアクセスしかできないってことですね。
でもいまはATというKEYWORDを使えば、SCLでもPOINTER活用できます。

まず、AT Keywordはなに?

AT KEYWORDは簡単だというと1つのDEVICEを別の形で表示するってことです。例えば1つのWORDを16BITで表示すること。PROGRAMで個別でWORDの中にあるBITを操作することできるってこと。

ANY POINTERの構造

2
F1 HELPは永遠もあなたの仲間です。
BYTE0は10h。
BYTE1はデータタイプ。
BYTE2、3は謎、影響ないので触らなくてもいいです。
BYTE4、5はDB番号もしくは0。
BYTE6はどんなAREAを使う。Qか?Mか?Iか?など。
BYTE7−9はアドレスですね。

これで全部わかった!

データタイプのコード

3

Memory Areaのコード

4

Data Typeを作る

5

先の構造のようにDATA TYPEを作ってください。
S7-CODEはデフォルト値を16#10します。

テスト用のデータタイプ

6

適当でいいです。

FC作る

7

FCを作ります。INTERFACEの中にTEMPという所でANYを作って、そのしたに”AT”というKEYWORDを付けてデータタイプを先に作ったものを宣言します。ここで2つを作ります。

POINTERをINITするFCを作る

8

これは必要ではありませんが、INITのFCを作ればあと何回も再使用できるの便利。

9

中身はこんな感じです。NETWORK-1のとろこは8にかけてBYTE MEMORYのTAGのアドレスを正確にSHIFTします。

実装

10

あとはPOINTERをBLKMOVに参考させれば完成です。
ONLINEしてみるとこんな感じです。

13

P#DB3.DBX0.0 BYTE 4→P#DB5.DBX2.0 BYTE4

これだけです。お疲れ様ですー

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

シェアする

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

フォローする