シーケンサの時刻データの読出し方
シーケンサで内部時刻データの読み出し方法を見て行きます。
ご存知の通り、コード自体は〔 DATERD 〕1行で終わってしまいます。
どのように使って行くかを、処理履歴を作る前提で一緒に考えてみましょう。
どうも、ずぶ です! 今回は、シーケンサの時刻データの読出し方
処理履歴って、何すれば良いの?
履歴とは、すなわち時刻。
ワーク投入 処理終了 必要なのはその瞬間の時間
レシピなり、IDなり、もろもろのデータを残す事もあるでしょうが、紐づけする相手はやはり時刻。
早い話、要所要所で時刻を残して行けばよい のですね。
そのタイミングで時刻データの読み出しが必要となってくるのですね。
基準時刻を作る
『8時頃に処理したワークが、どうもオカシイ』
大抵履歴を追い始めるのは、ある程度時間が経過した後です。
今から4時間前のデータとか、そういう感じですよね。
その場合、表示時刻と履歴時刻がリンクされている限り、
時報時刻との違いがあってもさほど影響はありません。
時報時刻から逆算で追いかけられますからね。
けれど、履歴時刻と表示時刻がずれていた場合、ちょっと訳 ワカメ になってしまいます。
そこでまずは、見える時刻である タッチパネルと、シーケンサの時刻を一致 させる必要が出てきます。
↓コチラに時刻合わせをまとめてありますので、ご参考までに
シーケンサとGOTの時計合わせの方法
シーケンサ内の時刻を読み出す
シーケンサ内の時間を読み出すには
[ DATERD ] 命令を使うのが楽ちんですよね。
コードはこれだけ
実行結果はこうです
年月日時分秒曜がアドレス毎にBINで収納されてきます。
読みだした時刻データを、格納したい場所に放り込んで行けば良いのですね。
履歴データの貯め方を設計する
データ追記には2種類考えられます。
積み重ね方式 と
押し上げ方式 です。
積み重ねとか、押し上げとか、僕の勝手な認識です(笑)
絵に描くとこんな感じ、上が積み重ねで、下が押し上げです。
どちらも FIFO を作成する事はできるのですが、シーケンサの場合は件数が決まっている場合が多いので、
常に同じ箇所に放り込む 押し上げ方法 がプログラムも楽ちんで迷いも少なくなります。
↓ FIFOってこんなの
FIFO-Wikipedia
プログラム
先ほどの説明を踏まえてプログラムを作成してみます。
こんな感じでしょうか
プログラムの内容を、視覚的に表してみます。
スペースの関係で、3つ前までしか表示していませんが、実際は、20件の履歴が格納される計算です。
1件分のデータは 20個、
180個 のBMOVというのは、履歴 9件分の事ですね。
そこに
最新履歴のデータが 20個で、計 10 件 分 の履歴が蓄積される事となります。
また、他のデータ( 温度やIDなど )を残したい場合などは、同じタイミングで連ねて書けば良いですね。
データマップを作成する
動きが確認できた所で、本格的に設計をしなくてはなりません。
例のように 時刻データをダイレクトに格納するのなら、投入時データは 月日時分 で 4 ワード です。
終了時のデータも 4ワード なので、投入ー終了だけで 8 ワード が消費されています。
他の紐づけデータも見越して、1 件 辺り 20ワード を確保したのですが、
100件だと2000ワード
1000件だと20000ワード
それってどうかというと、
1 処理が 5分 の装置もあれば、数日かかる 装置もありますよね。
100件 や 1000件 の履歴確保数が多いか少ないかは、装置次第なのです。
終了時は 時分 だけで良いかもしれませんし、投入時も 月日 など不要かも知れません。
多少の拡張も見越さなければなりませんし、他のデータとの兼ね合いも考えなければなりません。
ヘタな考え休むに似たりと言いますが、ここで掛ける手間は有為な手間です。
じっくり考えておけば、後からアタフタして違法建築のようなデータマップにもなり難いでしょう(笑)
合わせて読みたい
レシピとデータマップの作り方
勿論、大きなデータを扱う場合は、R(ファイルレジスタ)が良いのでしたね。
シーケンサのレジスタの違い
履歴の長さや個数を変更するには、
[ BMOV D2000 D2020 K180 ] の箇所を触ってみて下さい。
まとめ
履歴ものは、押し上げ方式でコードを書いておくと、予期せぬラインアウト等に対応できます。
この例だと、ワークがラインアウトしたら履歴もアウトしますので、どうこう考える必要もありません。
途中でぶった切れたデータがスタックされていくだけです。
ご紹介した [ BMOV ] [ FMOV ] [ MOV ] の流れは色々なシーンで使えますので、応用も効きますよ。
合わせて読みたい
レシピとデータマップの作り方
最近のコメント