シーケンサでのラベルの使い方(2)

FA

ラベルの実戦投入を意識して、幾つかポイントを見て行きましょう。

 

どうも!ずぶです。今回は、シーケンサでのラベルの使い方(2)

※主に Works3 と シミュレータ で展開します。

プログラムを書いてみよう

ラベルプログラムを一緒に書いて行きましょう。

 

こんなのが有ります。

 

スイッチを1秒以上押し続けている間、リレーを駆動させます。

何てこと無さそうですね。

 

グローバルラベル入力

図面は、実配線です。

外部とやり取り をするって事なので、即ち グローバル

 

従って グローバルラベル を入力して行きます。

 

上のラベル設定を回路で使用すると

このように表示されます。

何がどこに作用しているか分かりましたので、残りを続けて打ち込んで行きます。

 

が、

 

面倒ですね。

グローバルラベル設定をコピーして、エクセルに貼り付けます。

 

ビャ~っとコピーして、要る所だけチョコチョコ修正

 

それを、グローバルラベル設定に戻すと楽ちんですね。

 

完成しました。

初っ端のラベル名は自動割付で行っています。
自動命名規則の設定はこちら


プログラム作成

では、いつも通りプログラムを書いていきましょう。
ローカルラベル設定は、空欄状態でのスタートです。

1秒以上押したら、と書いてあるのでタイマ受けが要りますね。
ローカルで使うラベルを適当に入力して、タイマの様に使ってみます。

 

ラベル設定が済んでいないので、未定義ラベル設定が立ち上がってきます。

ここでは、タイマとして使いたいのでデータ型を変更

 

設定が完了すると

タイマっぽくなった (*‘∀‘)

 

後は予測変換を上手に使って、残りのプログラムを完成させるだけです。
( グローバルは一覧で放り込んだので、予測変換に現れているのですね )

 

グローバルは、予測変換で
ローカルは、気ままにって作戦です。

 

配列を使ってみよう

データ型選択に、配列要素の囲みがあります。

 

配列は良いとして、なぜ目立つ所に置いてあるのでしょうね?

 

試しに、

local10 をビット 配列要素数(1次元)に 16 を設定
local11 をビット 配列なし

この様に設定して、数値を転送してみます。

local10 は通りましたけど、local11 は弾かれました。
どうやら local11 は、MOVが通らないデータ型のようです。

 

local 10も 11も、設定したのはビットです。
心情的には、local11 から先のビットを引っ張ってもらい所ですよね。

local11 の次は、local12 だし
何なら、グローバルラベルの
bLabel7 の次は、bLabel8 ですよね?

 

違います! ※自分で書いて何ですが(笑)

 

それらには、何の繋がりもありません。

ちなみに、ここで設定した local10 と local11 のイメージはこう

 

とにかく、local10 と local11 は繋がりどころか型すら違う のです。

いっそのこと、local10 と local11 の名前を変えて

この位変えたらピンとくるでしょうか?

ラベル名のナンバリングには何の関連性もない のです。

繋がったラベルを作るのに、配列は使われるのですね。

 

 

今までの感覚で行きたいなら

データ型を

このようにすれば、慣れやすいかもしれません。

使い方は、

 

記述の仕方が多少違いますが、使い勝手は普通の Dレジスタ とさほど変わりありません

単体で繋いで行くのも良いですが、バサッと行きたい時は配列で繋ぐと楽ちんですね。

 

合わせて読みたい
シーケンサのK4X000の使い方

ラベル使用の注意点

ラベルを使用するに当たって、幾つか気を付けたい箇所があります。

 

全コンパイルに気を付ける

ラベルをデバイスに紐付するのがコンパイルなのですが、

『変換』→『全変換』を行うと( 再割付 )が行われます。

 

一体何のこっちゃ?ですが、ラベルを実デバイスに割付ける Works2 で確認してみましょう。

 

ラベル配列に数値を代入します。

(ここでのデータ型は、ワード[符号付き](0..2) としています)

今回は別個に記述しているので何も感じませんが、配列を行くときはバサッと飛ばしたいので数値確認が難しくなります。
そんな時は、ウォッチウィンドウ を使うと便利

 


ウォッチウィンドウから、ラベル 配列[0]~ は実デバイス D13309~ に割付けられている事が判りました。

 

では、ラベルを1行追加して

『 変換+全コンパイル 』 を実行

 

モニタに戻ると・・・

 

何か、モニタしてる数値がおかしくね?

もう一発、ウォッチウィンドウを登録!

 

 

ラベル 配列[0]~ は実デバイス D13308~ に割付けられている事が判りました。

何で変わっとんね~ん!

って

全コンパイル したからなのですね。

 

ラベルエリアを確保している Works3 も同じような挙動のようです。
これを回避するには、なるべくコマめに 通常コンパイル をして行くしかありません。

コマめにと書いたのは、
Works3 が 大規模コンパイル と判断したら、通常コンパイルを選択していても、全コンパイルを掛けてしまう からです。

 

ラベルをいじらずに、全コンパイルをしても割付が変わらない事が殆どです。
( 再割付 )とはいえ、適当に降っているのではなく規則性を持っているようです。
ただ、「 再割付する 」と書かれている以上、警戒を怠れないのですね。

 

範囲オーバー

ラベルの範囲オーバーにも気を付けなければなりません。

ワード設定ラベルを用意します。

wlocal1 は配列
wlocal2 は単体で設定

 

プログラムを書いて、ウォッチウィンドウで見てみます。

どこがマズイかお分かりでしょうか?

 

そうですね、wlocal2に〔 FMOV 〕で5個転送を掛けているのですが、wlocal2は単体なので受け皿は無いはず。

けれど、5個転送は実行されているようで、wlocal1の配列に上書きされています。
(オーバーライトされた箇所はたまたまかも知れません)

範囲を越したラベルは、どこに紐付されるか分からないので注意が必要です。

 

っていう、仕様です。(´・ω・`)

 

まとめ

どうやらここら辺は、バージョンアップの最前線らしく、
配列にコメントが入らなくて使いにくいなぁ~なんて思っていたら、バージョンアップで解消していたり、リリース当時よりも使い勝手が良くなってきていて Works3 + iQ-R も軌道に乗りつつあるのかな?といった感触です。

 

今回の注意点も、いつか変更が掛かるかもしれません。

 

サボらずに、ソフトのバージョンアップしなきゃですね。

 

合わせて読みたい
シーケンサでのラベルの使い方(1)