ふたつぼし inside

制作・活動内容、機材の使い方、作り方などなど

ユーザ用ツール

サイト用ツール


howto:open_plc:sys_time

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
howto:open_plc:sys_time [2022/10/17 13:07]
Staff_Ujiie [補足事項]
howto:open_plc:sys_time [2023/03/31 10:31] (現在)
Staff_Ujiie [OpenPLCでの日時情報]
行 7: 行 7:
 ===== 時刻情報の予備知識 ===== ===== 時刻情報の予備知識 =====
  
-  * RaspberryPi OSが属するLinuxが使っている時間情報は、UNIX時間というものになります。\\ 過去のある時点(The Epoch(1970年1月1日00:00:00(UTC) )からの経過秒数を、符号込みの32bitで表した数値でコンピュータが使用する時間にしています。\\ \\ 参考:[[http://www.math.kobe-u.ac.jp/HOME/kodama/tips-DateTime-transform.html#:~:text=%E7%8F%BE%E5%9C%A8%E3%81%AE%E6%99%82%E5%88%BB%3A,2022%2000%3A00%3A05%20GMT|現在時のUNIX時間は?]] また、この32bitで表すことのできる最大値が+2147483647で、2038年にそこに到達してしまうために、そのとき時間がリセットされて問題が起きるコンピュータが出てくるかもしれません。2038年問題と言われています。+  * RaspberryPi OSが属するLinuxが使っている時間情報は、**UNIX時間**というものになります。\\ 過去のある時点(The Epoch(1970年1月1日00:00:00(UTC) )からの経過秒数を、符号込みの32bitで表した数値でコンピュータが使用する時間にしています。\\ \\ 参考:[[http://www.math.kobe-u.ac.jp/HOME/kodama/tips-DateTime-transform.html#:~:text=%E7%8F%BE%E5%9C%A8%E3%81%AE%E6%99%82%E5%88%BB%3A,2022%2000%3A00%3A05%20GMT|現在時のUNIX時間は?]] また、この32bitで表すことのできる最大値が+2147483647で、2038年にそこに到達してしまうために、そのとき時間がリセットされて問題が起きるコンピュータが出てくるかもしれません。2038年問題と言われています。
  
   * この元となるUNIX時間データは1664150405.200.のような数値で、これだけではいつなのかよくわかりませんので、そこから通常よく使われる年/月/日などで表示された時刻に変換して利用します。   * この元となるUNIX時間データは1664150405.200.のような数値で、これだけではいつなのかよくわかりませんので、そこから通常よく使われる年/月/日などで表示された時刻に変換して利用します。
行 16: 行 16:
   * OpenPLCでは、システムの現在時刻情報を、プログラムで利用できる特別なアドレス(**%ML1024**)に取り込んでくれます。\\ [[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1305993224|OpenPLCフォーラム:Support for RTC on Special Functions]]   * OpenPLCでは、システムの現在時刻情報を、プログラムで利用できる特別なアドレス(**%ML1024**)に取り込んでくれます。\\ [[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1305993224|OpenPLCフォーラム:Support for RTC on Special Functions]]
  
-  * %ML1024で提供されるデータは、そのままでは上記のUNIX時間の一種(地方標準時相当)の数値なので、使う側が必要な形式に変換して、変換後のデータを利用します。+  * %ML1024で提供されるデータは、そのままでは上記のUNIX時間の一種(地方標準時相当)の数値なので、使う側が必要なデータ形式に変換して、変換後のデータをプログラム内で利用します。
 \\  \\ 
 ===== 利用する時間形式への変換 ===== ===== 利用する時間形式への変換 =====
行 28: 行 28:
   * %ML1024に取り込まれる数値のデータ型は何が適切なのかよくわからなかったのですが、フォーラム内のOpenPLC作者の[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1306010232|投稿内の説明]]で**ULINT**が使われていたのでそれに合わせます。   * %ML1024に取り込まれる数値のデータ型は何が適切なのかよくわからなかったのですが、フォーラム内のOpenPLC作者の[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1306010232|投稿内の説明]]で**ULINT**が使われていたのでそれに合わせます。
  
-  * 型変換 +  * **型変換** 
-    * 時間データの変換には、データ型変換の機能ブロックを使います。上記の各データに変換したいときは、**ULINT_TO_TOD**、**ULINT_TO_DT**、**ULINT_TO_DATE**の型変換です。\\ \\ {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.51.png?direct&200|ULINT_TO_TOD}} {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.43.png?direct&200|ULINT_TO_DT}} {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.33.png?direct&200|ULINT_TO_DATE}}\\ +    * 時間データの変換には、**データ型変換の機能ブロック**を使います。上記の各データに変換したいときは、**ULINT_TO_TOD**、**ULINT_TO_DT**、**ULINT_TO_DATE**の型変換です。\\ \\ {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.51.png?direct&200|ULINT_TO_TOD}} {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.43.png?direct&200|ULINT_TO_DT}} {{:howto:open_plc:スクリーンショット_2022-10-16_18.32.33.png?direct&200|ULINT_TO_DATE}}\\ 
  
   * プログラム上の記載は以下のようになります。変数と機能ブロックをつないだだけですが、変数 "SYSTIME"(%ML1024に割当て)と変数 "currentTOD"(他の部分で使用する現在時刻)を用意して、間に型変換をかませています。左側の数値が変換されて右側に時刻データとして入ります。それ以降は"currentTOD"に対して条件設定等を行います。この部分ではラダープログラムの左右の電源線は出てきません。\\ \\ {{:howto:open_plc:sc2022-10-16_15.51.57r.png?direct&600|}}\\    * プログラム上の記載は以下のようになります。変数と機能ブロックをつないだだけですが、変数 "SYSTIME"(%ML1024に割当て)と変数 "currentTOD"(他の部分で使用する現在時刻)を用意して、間に型変換をかませています。左側の数値が変換されて右側に時刻データとして入ります。それ以降は"currentTOD"に対して条件設定等を行います。この部分ではラダープログラムの左右の電源線は出てきません。\\ \\ {{:howto:open_plc:sc2022-10-16_15.51.57r.png?direct&600|}}\\ 
行 39: 行 39:
   * 上記のフォーラムの[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1305993224|投稿内]]では、OpenPLCを最新のコードにアップデートするよう注意書きがありますが、これは2018年の投稿ですので、現在提供されているファイルをインストールする上では問題ありません。   * 上記のフォーラムの[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1305993224|投稿内]]では、OpenPLCを最新のコードにアップデートするよう注意書きがありますが、これは2018年の投稿ですので、現在提供されているファイルをインストールする上では問題ありません。
  
-  * 上記[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1308287991|投稿内]]に"The OSCAT Basic library for Codesys"というのが出てきますが、[[http://www.oscat.de/|OSCAT]](Open Source Community for Automation Technology)という団体が作っている、オープンソースPLCライブラリの一部です。PLCソフト「[[https://www.codesys.com/|Codesys]]」用のバージョンです。使い道に応じすぐ使えそうな便利な機能ブロックが豊富に用意されています。\\ また、OpenPLCフォーラム内で、OpenPLC用にコンバートしたOSCAT Basic libraryを[[https://openplc.discussion.community/post/oscat-basic-333-oscat-building-openplc-10284818?highlight=oscat&pid=1309669105|公開]]している人がいます。この辺まだきちんと試していないのでなんとも言えませんが、利用すれば相当便利に使えるようになると思います。+  * 上記[[https://openplc.discussion.community/post/support-for-rtc-on-special-functions-9900466?pid=1308287991|投稿内]]に"The OSCAT Basic library for Codesys"というのが出てきますが、[[http://www.oscat.de/|OSCAT]](Open Source Community for Automation Technology)という団体が作っている、[[http://www.oscat.de/dlmanager/7-news/69-downloads.html|オープンソースPLCライブラリ]]の一部です。PLCソフト「[[https://www.codesys.com/|Codesys]]」用のバージョンです。\\ ここには利用シーンに応じすぐ使えそうな便利な機能ブロックが豊富に(何百も)用意されています。\\ OpenPLCについては、OpenPLC用にコンバートしたOSCAT Basic libraryをフォーラム内で[[https://openplc.discussion.community/post/oscat-basic-333-oscat-building-openplc-10284818?highlight=oscat&pid=1309669105|投稿]]してくれている人がいます。この辺まだきちんと試していないのでなんとも言えませんが、利用すれば相当便利に使えるようになると思います。
 \\  \\ 
  
howto/open_plc/sys_time.1665979631.txt.gz · 最終更新: 2022/10/17 13:07 by Staff_Ujiie