codesys 获取系统时间

codesys 获取系统时间

  1. 添加获取时间库 添加库输入caa dtutil搜索库,选中双击添加

在这里插入图片描述

2.定义功能块,读取时间

PROGRAM PLC_PRG
VAR
 //定义读取当前时间功能块
 ReadCurrentTime:dtu.GetDateAndTime;
 //系统当前时间,注意此时的时间为世界时间并非本地时间
 dtTime:DT;
 //更新时间变化
 RTC_BLOCK:RTC;
 dtTime2:DT; 
END_VAR
ReadCurrentTime(
 xExecute:= TRUE, 
 xDone=> , 
 xBusy=> , 
 xError=> , 
 eError=> , 
 dtDateAndTime=>dtTime , 
 ePeriode=> );
RTC_BLOCK(EN:= ReadCurrentTime.xDone, PDT:= dtTime, Q=> , CDT=> dtTime2);

3.运行 Codesys SoftMotion Win 下载运行,效果如下:
在这里插入图片描述
4.注意此时读到的时间为世界时间需要转换为北京时间

PROGRAM PLC_PRG
VAR
 //定义读取当前时间功能块
 ReadCurrentTime:dtu.GetDateAndTime;
 //系统当前时间,注意此时的时间为世界时间并非本地时间
 dtTime:DT;
 //更新时间变化
 RTC_BLOCK:RTC;
 dtTime2:DT;
 //时间总秒数
 w_TotalSeconds :LINT;
 //本地时间总秒数
 l_TotalSeconds:LINT;
 
 sysCurrentTime:DT;
END_VAR
ReadCurrentTime(
 xExecute:= TRUE, 
 xDone=> , 
 xBusy=> , 
 xError=> , 
 eError=> , 
 dtDateAndTime=>dtTime , 
 ePeriode=> );
 
RTC_BLOCK(EN:= ReadCurrentTime.xDone, PDT:= dtTime, Q=> , CDT=> dtTime2);
//获取时间时间总秒数
w_TotalSeconds:=DT_TO_LINT(dtTime2);
//应为北京时间和世界时间相差8小时
l_TotalSeconds:=w_TotalSeconds + 8 * 60 * 60;
//转换成时间格式
sysCurrentTime:=LINT_TO_DT(l_TotalSeconds);

5.从新下载运行即可得到本地时间
在这里插入图片描述
源码下载

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: CODESYS是一个可编程的自动化控制系统软件,可以用于编程控制、监控、数据处理与通讯等。获取当前时间是在代码编程时很重要的一个功能,以便进行事件计时和记录。 CODESYS提供了获取当前系统时间的函数,可以在程序中调用。常用的获取时间函数为: SYS_TOD_OF_DAY:此函数返回当前日期和时间戳,可以用于记录事件的时间。 举例:现在想获取当前时间,假设CODESYS已经安装,首先需要在编程环境中定义一个变量,例如: VAR CurrentTime: ST_DT; END_VAR 然后,在程序中调用获取时间函数,将当前时间赋值给变量CurrentTime: CurrentTime := SYS_TOD_OF_DAY(); 通过此方法,就可以获取当前系统时间了。注意,返回的时间是一个有结构的类型,包含年月日、时分秒等信息。 获取到当前时间后,可以将其记录在日志中,或者与其他数据进行计算和比较。CODESYS提供了很多其他的函数和工具,可以帮助工程师进行控制应用的编程和测试。 ### 回答2: Codesys是一个强大的工具,它可以帮助我们在PLC中编写程序。获取当前时间在PLC控制系统中是非常重要的,因为很多运算和控制都基于时间。 要获取当前时间,首先需要在Codesys中添加日期/时间库。在该库中,我们可以找到一个函数叫做GetLocalTime。这个函数的作用就是获取当前时间。我们只需调用它,它会返回一个包含小时、分钟、秒和毫秒的结构体。 要想使用GetLocalTime函数,我们需要在程序中声明日期/时间库,然后声明一个结构体来存储获取时间。如下述代码所示: ```c //声明日期/时间库 {$lib datetime} //声明时间结构体 VAR currentTime : TIME := t#0s; stTime : SYSTEMTIME; END_VAR //获取当前时间 GetLocalTime(ADR(stTime)); //将获取时间存储到结构体中 currentTime := TIME_TO_TIME(stTime.wHour, stTime.wMinute, stTime.wSecond, stTime.wMilliseconds); ``` 在这段代码中,我们调用了GetLocalTime函数来获取系统时间。然后,我们将获取时间存储到一个TIME类型的变量中。 获取当前时间很简单,只需要几行代码。但是,在实际应用中,我们可能需要对时间进行格式化或者进行其他的时间操作。因此,在编写PLC程序时,我们需要对时间有一个深入的理解。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值