シーメンス#時間の操作

今回はシーメンスの時間データタイプについて説明します。シーメンスのPLCはいくつの時間タイプが用意しており、それぞれは少し違いがあります。まずこれらの違いを話し、そのあと時間に関連する命令などを紹介します。

Data Type

DATE

DATEは日付の符号なしの整数として保存します。中には年、月、日が入っています。日付けが一番古いなのは01-01-1990です。(実際は16#0000がはいっています。)

データのFormatはこうです:

  • Length
    • 2Bytes
  • Format
    • IEC date(Y-M-D)
  • Range
    • D#1990-01-01からD#2169-06-06まで
  • Example
    • D#2009-12-31
    • DATE#2009-12-31

TOD(TIME_OF_DAY)

TODは32BITのDWORDとして時間を保存します。中にmsあり、初期値は”一日の始まり”つまり0:00hです。

  • Length
    • 4Bytes
  • Format
    • TOD(h:m:s:ms)
  • Range
    • TOD#00:00:00:0000からTOD#23:59:59:999まで
  • Example
    • TOD#10:20:30:400
    • TIME_OF_DAY#20:11:49:231

LTOD(LTIME_OF_DAY)

LTODは32BITのDWORDとして時間を保存します。TODと比べて中にmsだけでなくusまであり、初期値は”一日の始まり”つまり0:00hです。

  • Length
    • 8Bytes
  • Format
    • LTOD(h:m:s:ms.us)
  • Range
    • LTO#00:00:00:000000000からTOD#23:59:59:999999999まで
  • Example
    • LTOD#10:20:30:400_241_512
    • LTIME_OF_DAY#20:11:49:231_512_201

DATE_AND_TIME(Date and time of day)

DT(Date and time of day)は時間の情報をBCD Formaとして保存されます。

  • Length
    • 8Bytes
  • Format
    • Date and time(yy:mm:dd:hh:mm:ss:ms)になります。
  • Range
    • DT#1990-01-01-00:00:00:0000から2089-12-31:23:59:59:999まで
  • Example
    • DT#2008-10-25-08:12:34.567,
    • DATE_AND_TIME#2008-10-25-08:12:34.567
  • 構造
    • Byte0
      • 0-99
      • BCD#90=1990
      • BCD#0=2000
      • BCD#89=2089
    • Byte1
      • BCD#1-12
    • Byte2
      • BCD#1-31
    • Byte3
      • BCD#0-23
    • Byte4
      • BCD#0-59
    • Byte5
      • BCD#0-59
    • Byte6
      • ms
      • BCD#00-999
    • Byte7(MSB)
      • msの符号
      • BCD0-9
    • Byte8(LSB)
      • 何曜日
      • BCD#1-7
      • BCD#1=日曜日
      • BCD#7=土曜日

Example

ここでDTの変数を一つを作って、長さ8Byteの配列に格納にします。

結果はこの通り、

0=20、2020年です。

1=11、11月です。

2=30、30日です。

3=22、22時です。

4=11、11分です。

5=12、12秒です。

6=85、854msの”85”です。

7=42、4は854msの”4”、2は火曜日のことです。

LDT(DATE_AND_LTIME)

LDT(DATE_AND_LTIME)は時間の情報を保存し、msでなく、Nanoseconds単位で保存。

  • Length
    • 8Bytes
  • Format
    • Date and time(yy:mm:dd:hh:mm:ss..Nanoseconds))になります。
  • Range
    • LDT#1990-01-01-00:00:00:000000000から2262-04-11-23:47:16.854775807まで
  • Example
    • LDT#2008-10-25-08:12:34.567

Example

DTL(DATE_AND_LTIME)

DTLは時間を12BytesのBCDとして保存します。

  • Length
    • 12Bytes
  • Format
    • Date and time(yy:mm:dd:hh:mm:ss.Nanoseconds)になります。
  • Range
    • DTL#1970-01-01-00:00:00.0から2262-04-11-23:47:16.854775807まで
  • Example
    • DTL#2008-12-16-20:30:20.250
  • 構造
    • Byte0-1
      • 1970-2262
    • Byte2
      • 1-12
    • Byte3
      • 1-31
    • Byte4
      • 何曜日
      • 1(日曜)から7(土曜)まで
    • Byte5
      • 何時
      • 0-23
    • Byte6
      • 0-59
    • Byte7
      • 0-59
    • Byte8-11
      • Nanoseconds
      • 0-999999999

Example

ここでDTLの変数を一つを作って、長さ12Byteの配列に格納にします。

結果はそのとおり、

Byte0,1=7E4=2020年

Byte1=0B=11月

Byte2=0C=12日

Byte3=05=木曜日

Byte4=0D=13時

Byte5=18=24分

Byte6=19=25秒

Byte7-9=3ADE68B1=987654321 Nanosecondsです。

Local Time・System time

シーメンスの時間単位を扱うときはLocal TimeとSystem time、その2つどうして出てきますね。うん?なにが違うの?と思う人も多いですが、一言いうと、System Timeはタイムゾーン設定と関係ない(UTC offsetは0)で、Local Timeはあなたが設定したTime Zoneに影響されいます。

タイムゾーン設定

PLC>Device Configurationをクリック。

Properties>General>Time of day>Local TimeでTime Zoneを設定することができます。

System Time設定

次はSystem Timeの時間設定を行うところを説明します。

PLCにOnlineし、Online & diagnsticsをクリック。

Functions>Set Timeで”System Time”を設定することができます。

Take from PG/PCならいま自分のパソコンの時間をApplyします。

Take from PG/PCのCheckboxを外すとそのまま数字入力になります。

PLCの時間読み

せっかくですので、PLCからのLocal TimeとSystemを読み、そしてその時間差を求めるプロクラムを作成します。

Local Time読み

RD_LOC_Tという命令を使い、出力したい時間のFormatは好きなように選べます。

では今回はDTLにしますね。

System Time読み

RD_SYS_Tという命令を使います、出力したい時間のFormatは好きなように選べます。

Local Timeと比較したいから、ここで先と同じくDTLにしますね。

次は、まず2つとったの時間あ同じかどうかをCheckしてみます。

ここでT_COMPという命令があります。

比べたい変数のTypeを選べることができます。

そしてどんな比較するのかも選べますね。EQは同じ、GTはIN1がIN2より大き…など。

最後はT_DIFFという命令を使って2つの時間の差を求めます。

結果

RD_LOC_TをとRD_SYS_Tを使って、いまの時間が読めますね。

そして、もちろんLocal Timeの時間とSystem Timeの時間が違いますので1つ目の比較のOUTはFalseですね。しかし、2つ目の比較はLocal TimeがSystem Timeより”先”なので、OUTがTrueになります。

最後、2つの時間差を求めることって、大体9時間くらいかな?~

日本タイムゾーンはGMT+9ですからねー

はーい、お疲れ様です。

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

シェアする

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

フォローする