QQ登录

只需一步,快速开始

维纶通触摸屏Unix 时间使用实例

[ 复制链接 ]
1.  简介与操作
简介
Unix 时间  (或称为Epoch 时间)  是从世界协调时间 1970年1月1日 0时0分0
秒起开始累计的秒数。本范例将演示如何将 HMI的时间转换为Unix 时间。
操作
请输入时间至  [年月日时分秒]  栏位,输入完毕后,系统会自动计算出 Unix 时
间。或点选  [Local Time]  按钮,系统会将目前 RTC 的时间自动填入到  [年月日
时分秒]  栏位。

维纶通触摸屏Unix 時时间使用实例

维纶通触摸屏Unix 時时间使用实例

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:Unix_Timestamp_Converter.rar 
文件大小:648.93 KB  售价:3金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我



計算方式解釋
根據POSIX:2008的 4.15小節定義,Epoch時間是個不包含潤秒,
從 Epoch以來累積的秒數。其計算方式為:
tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
(tm_year-70)*31536000 + ((tm_year-69)/4)*86400-
((tm_year-1)/100)*86400 + ((tm_year+299)/400)*86400


Unix 時間(Epoch時間)計算     
此計算方式假設潤年發生在可被 4整除但不被 100整除、或是可被 400 整除的西元年。
宏細節 :
主要使用的巨集列出如下:

  1. macro_command main()

  2. short yy, mm, dd, hh, min, ss
  3. unsigned short md[13] = {0,31,59,90,120,151,181,212,243,273,304,334}
  4. unsigned short md_leap[13] = {0,31,60,91,121,152,182,213,244,274,305,335}
  5. unsigned int epoch = 0
  6. unsigned int a,b,c,d,e,f

  7. GetData(yy, "Local HMI", LW, 100, 1)
  8. GetData(mm, "Local HMI", LW, 101, 1)
  9. GetData(dd, "Local HMI", LW, 102, 1)
  10. GetData(hh, "Local HMI", LW, 103, 1)
  11. GetData(min, "Local HMI", LW, 104, 1)
  12. GetData(ss, "Local HMI", LW, 105, 1)

  13. yy = yy - 1900
  14. mm = mm-1
  15. if yy%4==0 then
  16.   dd = md_leap[mm] + dd - 1
  17. else
  18.   dd = md[mm] + dd - 1
  19. end if

  20. a = (yy-70) * 31536000
  21. b = (yy-69) / 4 * 86400  
  22. c = (yy-1) /100 * 86400
  23. d = (yy + 299) / 400 * 86400

  24. epoch = ss + min*60 + hh*3600 + dd*86400 + a + b - c + d
  25. SetData(epoch, "Local HMI", LW, 0, 1)

  26. end macro_command
复制代码
2.  设定程序
步骤 1. 建立7个  [数值]  物件,其中6个提供输入 RTC 时间,1个则显示转换后的Unix 时间。
步骤 2. 建立巨集,将 RTC 时间转换为Unix 时间。

维纶通触摸屏Unix 時时间使用实例

维纶通触摸屏Unix 時时间使用实例


3.  位址设定
此范例所使用之物件位址皆列于下表,请依实际需要调整。

维纶通触摸屏Unix 時时间使用实例

维纶通触摸屏Unix 時时间使用实例


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索