Welcome to Yutekke's PLC Forum

 

PLC Tips  ホーム

時間計算のシーケンス

 時間の計算は、特に暦日が関係すると計算が複雑になります。ここでは、現在時刻を

  読み込み、時間、分を入力して

  現在時刻+入力時:分 = 年:月:日:時:分 を求める足し算と

  現在時刻−入力時:分 = 年:月:日:時:分 を求める引き算の

  シーケンスを示します。

なお足し算、引き算とも閏年の補正はしていません。

1. 現在時の取込み

  ラダー図1のように、ステップ0〜109はシーケンサのカレンダデバイスから、

D0〜D5格納し、元のBCD値からバイナリ値へ変換しています。

元データは D9025: 年:月  各8ビット

          D9026: 日:時  各8ビット

      D9027: 分:秒  各8ビット

の形で格納されているため、8ビットずつ切り分けて取り出しています。

ここで

  D0:秒 D1:分 D2:時 D3:日 D4:月 D5:年 の値を格納しています。

 データの取込みは、分秒の値は内部の2秒クロックで取り込んでいますが、時間以上

 のデータは1分クロックで取り込んでいます。

                                  図1

 

2.時間の足し算

   上記のD0D5の暦日データと

     D16: 分   D17:時間 の値との和を求め、年月日時分の繰り上がり計算

   を行いD11:分 D12:時 D13:日 D14:月 D15:年 を格納しています。

   年月日の補正は、可成り複雑になり、ジャンプ命令を多用していますので、注意が

   必要です。

 

                                  図2

   時間の繰り上がり処理は、年の単位まで行っていますので、千、万の時間でも計算

   出来ます。

3.時間の引き算

   上記のD0D5の暦日データより

     D16: 分   D17:時間 の値を差し引き、年月日時分の整合性をとりその

   結果を  D11:分 D12:時 D13:日 D14:月 D15:年 を格納しています。

   年月日の補正は、足し算よりさらに複雑になり、ジャンプ命令を多用しています。

 

                                図3  

分の単位で、引き算で負の値になる場合には、現在時を1時間補正し、時間の単位で

負となる場合には、現在日を補正してゆきます。同様に日、月、年の単位を補正して

行きますので、時間の単位は万の位でも問題ありません。

                    ダウンロード