ユーザ用ツール

サイト用ツール


ja-jp_products:mp_studio:device_clock

MP STUDIO 2 · 機器の時計(RTC)

機器の時計は、機器に接続した外付けのDS3231時計モジュールの日付と時刻を、機器が0.1秒ごとにD領域の16ワードに書き込み、ラダーから直接読めるようにする機能です(V1.2.0以降)。PCの時刻に合わせるウィンドウと、時計モジュールがないときに機器が自分で時刻を数える内部時計もあわせて提供します。

機器には時計モジュールが内蔵されていないため、DS3231モジュール(I²Cアドレス0x68)を機器のI²C端子に接続して使用します。接続するピンは、各製品のページで確認してください。モジュールは、キャラクターLCDなどほかのI²Cデバイスと同じ配線を共用します。

オンにする

  1. 設定 → RTC(時計)…を選択します。
  2. 機器の時計 (RTC) を使うをオンにします。
  3. 開始アドレスにD領域のアドレスを入力します(既定はD100)。開始アドレスから16ワード(D100~D115)を使います。
  4. OKを押してから、プログラムをダウンロードします。ダウンロードした後から、機器が0.1秒ごとに時刻を書き込みます。

図1. RTC(時計)ウィンドウ

ウィンドウの下部には、この機能が使うフラッシュ・RAMと処理時間(0.1秒ごとに約0.4ms)が表示されます。オフにすると、コンパイルされるプログラムは1バイトも変わりません。シンボルテーブルに名前を追加を押すと、RTC_YEAR…RTC_REQの名前がシンボルテーブルに登録され、ラダーでアドレスの代わりに名前で使えます(任意)。

16ワードの構成

値は10進数で入ります。以下は、開始アドレスがD100の場合です。

アドレス 読み出し(機器が0.1秒ごとに書く) 範囲
D100 年 2000~2099
D101 月 1~12
D102 日 1~31
D103 曜日 1~7(1 = 日曜日)
D104 時 0~23
D105 分 0~59
D106 秒 0~59
D107 ステータス 0 正常 · 1 モジュールなし(内部時計) · 2 停止したことあり
アドレス 時刻合わせ(PC・HMI・ラダーが書く) 説明
D108~D114 設定する年・月・日・曜日・時・分・秒 範囲は読み出しと同じです。
D115 時刻合わせ要求 1を書くと時刻を合わせます。完了すると0、値が不正な場合は2になります(時計はそのまま)。

ラダーやHMIから時刻を合わせるには、D108~D114に設定する値を書き込んでから、D115に1を書き込んでください。ステータスが2の場合は、モジュールの電池が外れるなどして時計が止まったことがあるという意味なので、時刻を合わせ直してください。

PCの時刻に合わせる

  1. 機器の時計をオンにしてダウンロードした機器を、モニタリング(Ctrl+M)します。シミュレーション中にも使用できます。
  2. 実行 → 機器の時計合わせ…を選択します。
  3. PC の時刻に合わせるを押します。

図2. 機器の時計合わせウィンドウ(シミュレーション中のため仮想時計で表示)

ウィンドウには、PCの時刻と機器の時刻、その差(「一致 (±1 秒)」または「機器が N 遅れ」・「機器が N 進み」)が表示されます。時刻合わせは、次の秒に切り替わる瞬間に届くように送信し、合わせた後に機器の時刻を読み直して、実際に合ったかどうかを確認します。

  • 機器の時計がオンで、モニタリング中またはシミュレーション中であり、機器のプログラムがこのプロジェクトと同じであると確認できた場合にのみ合わせられます。条件を満たさない場合はボタンが無効になり、理由が1行で表示されます。
  • 機器のプログラムが同じであることは、このPCのMP STUDIO 2でそのポート(COMまたはIP)にこのプログラムをダウンロードした記録で確認します。確認できない場合は、ダウンロードしてからモニタリングをオンにし直してください。
  • 時計モジュールがない場合は機器の内部時計を合わせ、電源を切ると時刻が失われることを案内します。
  • S1ポートは値の書き込みを受け付けないため、時刻を合わせられません。ダウンロードポートで接続してください。

モニタリング開始時の確認

実際の機器のモニタリングをオンにしたときに、機器の時刻がPCと5秒以上ずれている場合は、「機器の時計が PC より N 遅れています — PC の時刻に合わせますか?」のように一度確認します。はいを押すと、上と同じ方法で時刻を合わせます。時計が止まったことがある場合(ステータス2)は、代わりにモジュールの電池の確認を促す質問が表示されます。機器のプログラムがこのプロジェクトと同じであると確認できた場合にのみ確認し、シミュレーションでは確認しません。

時計モジュールがない場合(内部時計)

  • モジュールがない、外れた、または読み取りに失敗した場合はステータスが1になり、機器が自分で時刻を数えて書き込みを続けます。スキャンは止まりません。
  • モジュールなしで電源を入れると、2000-01-01 00:00:00から数えます。電源を切ると時刻が失われます。
  • モジュールを再び接続すると、モジュールの時刻に従います。電池がなくて時刻が失われたモジュールの場合もその値に従うため、時刻を合わせ直してください。
  • 内部時計は、モジュールより精度が低くなります(1台の機器で1日あたり約-2.3秒)。

シミュレーション

シミュレーションでは、仮想時計が動作します。シミュレーションの開始時にPCの時刻から始まり、シミュレーションの時間に従って進みます。一時停止や1スキャンずつの実行を行うと、PCより遅れます。シミュレーションを開始し直すと、PCの時刻に戻ります。ステータスは常に0です。ラダーのDS3231_RD・DS3231_WRファンクションも、同じ仮想時計を使います。

確認事項

  • 16ワードのブロックが停電保持(EEPROM)のD区間と重なると、コンパイルとダウンロードができません。時刻のワードが常に変わり、EEPROMの寿命を急速に縮めるためです。ブロックを停電保持区間の外へ移すか、区間を狭めてください(データメモリ)。
  • ラダーが読み出し用のワード(D100~D107)に書き込む場合や、Modbus 機器テーブルの受信先のアドレスがブロックと重なる場合は、黄色の警告が表示されます。警告はコンパイルを妨げません。
  • 時計モジュールはSDAピンを使うため、同じピンをカウンター・エンコーダー入力として使えません。
  • 機器の時計を使ったプロジェクトファイル(.mpx)は、V1.1.0では開けません。

関連文書

ja-jp_products/mp_studio/device_clock.txt · 最終更新: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki