ラベルの実戦投入を意識して、幾つかポイントを見て行きましょう。
どうも!ずぶです。今回は、シーケンサでのラベルの使い方(2)
※主に Works3 と シミュレータ で展開します。
プログラムを書いてみよう
ラベルプログラムを一緒に書いて行きましょう。
こんなのが有ります。
![](https://zubu.jp/wp-content/uploads/2021/01/図面1.png)
スイッチを1秒以上押し続けている間、リレーを駆動させます。
何てこと無さそうですね。
グローバルラベル入力
図面は、実配線です。
外部とやり取り をするって事なので、即ち グローバル
従って グローバルラベル を入力して行きます。
![](https://zubu.jp/wp-content/uploads/2021/01/グローバル2.png)
上のラベル設定を回路で使用すると
![](https://zubu.jp/wp-content/uploads/2021/01/入力4.png)
このように表示されます。
何がどこに作用しているか分かりましたので、残りを続けて打ち込んで行きます。
が、
面倒ですね。
グローバルラベル設定をコピーして、エクセルに貼り付けます。
![](https://zubu.jp/wp-content/uploads/2021/01/エクセル5.png)
ビャ~っとコピーして、要る所だけチョコチョコ修正
![](https://zubu.jp/wp-content/uploads/2021/01/エクセル6.png)
それを、グローバルラベル設定に戻すと楽ちんですね。
![](https://zubu.jp/wp-content/uploads/2021/01/クローバルラベル設定7.png)
完成しました。
自動命名規則の設定はこちら
プログラム作成
では、いつも通りプログラムを書いていきましょう。
ローカルラベル設定は、空欄状態でのスタートです。
1秒以上押したら、と書いてあるのでタイマ受けが要りますね。
ローカルで使うラベルを適当に入力して、タイマの様に使ってみます。
![](https://zubu.jp/wp-content/uploads/2021/01/タイマ8.png)
ラベル設定が済んでいないので、未定義ラベル設定が立ち上がってきます。
ここでは、タイマとして使いたいのでデータ型を変更
![](https://zubu.jp/wp-content/uploads/2021/01/未定義9.png)
設定が完了すると
![](https://zubu.jp/wp-content/uploads/2021/01/タイマ10.png)
タイマっぽくなった (*‘∀‘)
後は予測変換を上手に使って、残りのプログラムを完成させるだけです。
( グローバルは一覧で放り込んだので、予測変換に現れているのですね )
![](https://zubu.jp/wp-content/uploads/2021/01/予測変換11.png)
グローバルは、予測変換で
ローカルは、気ままにって作戦です。
配列を使ってみよう
データ型選択に、配列要素の囲みがあります。
![](https://zubu.jp/wp-content/uploads/2021/01/配列12.png)
配列は良いとして、なぜ目立つ所に置いてあるのでしょうね?
試しに、
local10 をビット 配列要素数(1次元)に 16 を設定
local11 をビット 配列なし
この様に設定して、数値を転送してみます。
![](https://zubu.jp/wp-content/uploads/2021/01/無題.png)
local10 は通りましたけど、local11 は弾かれました。
どうやら local11 は、MOVが通らないデータ型のようです。
local 10も 11も、設定したのはビットです。
心情的には、local11 から先のビットを引っ張ってもらい所ですよね。
local11 の次は、local12 だし
何なら、グローバルラベルの
bLabel7 の次は、bLabel8 ですよね?
違います! ※自分で書いて何ですが(笑)
それらには、何の繋がりもありません。
ちなみに、ここで設定した local10 と local11 のイメージはこう
![](https://zubu.jp/wp-content/uploads/2021/01/配列15.png)
とにかく、local10 と local11 は繋がりどころか型すら違う のです。
いっそのこと、local10 と local11 の名前を変えて
![](https://zubu.jp/wp-content/uploads/2021/01/配列16.png)
を
![](https://zubu.jp/wp-content/uploads/2021/01/配列17.png)
この位変えたらピンとくるでしょうか?
ラベル名のナンバリングには何の関連性もない のです。
繋がったラベルを作るのに、配列は使われるのですね。
今までの感覚で行きたいなら
データ型を
![](https://zubu.jp/wp-content/uploads/2021/01/配列18.png)
このようにすれば、慣れやすいかもしれません。
使い方は、
![](https://zubu.jp/wp-content/uploads/2021/01/配列19.png)
記述の仕方が多少違いますが、使い勝手は普通の Dレジスタ とさほど変わりありません。
単体で繋いで行くのも良いですが、バサッと行きたい時は配列で繋ぐと楽ちんですね。
合わせて読みたい
シーケンサのK4X000の使い方
ラベル使用の注意点
ラベルを使用するに当たって、幾つか気を付けたい箇所があります。
全コンパイルに気を付ける
ラベルをデバイスに紐付するのがコンパイルなのですが、
『変換』→『全変換』を行うと( 再割付 )が行われます。
一体何のこっちゃ?ですが、ラベルを実デバイスに割付ける Works2 で確認してみましょう。
ラベル配列に数値を代入します。
(ここでのデータ型は、ワード[符号付き](0..2) としています)
![](https://zubu.jp/wp-content/uploads/2021/01/コンパイル19.png)
そんな時は、ウォッチウィンドウ を使うと便利
では、ラベルを1行追加して
![](https://zubu.jp/wp-content/uploads/2021/01/コンパイル22.png)
『 変換+全コンパイル 』 を実行
モニタに戻ると・・・
![](https://zubu.jp/wp-content/uploads/2021/01/全変換23.png)
何か、モニタしてる数値がおかしくね?
もう一発、ウォッチウィンドウを登録!
![](https://zubu.jp/wp-content/uploads/2021/01/ウォッチウィンドウ24.png)
ラベル 配列[0]~ は実デバイス D13308~ に割付けられている事が判りました。
何で変わっとんね~ん!
って
全コンパイル したからなのですね。
ラベルエリアを確保している Works3 も同じような挙動のようです。
これを回避するには、なるべくコマめに 通常コンパイル をして行くしかありません。
コマめにと書いたのは、
Works3 が 大規模コンパイル と判断したら、通常コンパイルを選択していても、全コンパイルを掛けてしまう からです。
( 再割付 )とはいえ、適当に降っているのではなく規則性を持っているようです。
ただ、「 再割付する 」と書かれている以上、警戒を怠れないのですね。
範囲オーバー
ラベルの範囲オーバーにも気を付けなければなりません。
ワード設定ラベルを用意します。
wlocal1 は配列
wlocal2 は単体で設定
![](https://zubu.jp/wp-content/uploads/2021/01/ラベル.png)
プログラムを書いて、ウォッチウィンドウで見てみます。
![](https://zubu.jp/wp-content/uploads/2021/01/ウォッチウィンドウ.png)
どこがマズイかお分かりでしょうか?
そうですね、wlocal2に〔 FMOV 〕で5個転送を掛けているのですが、wlocal2は単体なので受け皿は無いはず。
けれど、5個転送は実行されているようで、wlocal1の配列に上書きされています。
(オーバーライトされた箇所はたまたまかも知れません)
範囲を越したラベルは、どこに紐付されるか分からないので注意が必要です。
っていう、仕様です。(´・ω・`)
まとめ
どうやらここら辺は、バージョンアップの最前線らしく、
配列にコメントが入らなくて使いにくいなぁ~なんて思っていたら、バージョンアップで解消していたり、リリース当時よりも使い勝手が良くなってきていて Works3 + iQ-R も軌道に乗りつつあるのかな?といった感触です。
今回の注意点も、いつか変更が掛かるかもしれません。
サボらずに、ソフトのバージョンアップしなきゃですね。
合わせて読みたい
シーケンサでのラベルの使い方(1)
最近のコメント