首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ST源代码分享:如何把Time类型变量转换成时分秒,方便显示在HMI触摸屏上?

ST源代码分享:如何把Time类型变量转换成时分秒,方便显示在HMI触摸屏上?

作者头像
Hello工控
发布2025-12-23 14:53:52
发布2025-12-23 14:53:52
1430
举报
文章被收录于专栏:Hello工控Hello工控

我们一直在尝试把一些常规的程序需求,封装成复用的功能或功能块,做成标准化的模块,提高我们程序完成的质量和效率!

当然,这里主体采用的还是ST语言,它的优势和趋势已经很明显了,我们也多次做过分享:PLC编程主流的两种语言大PK!!!

我们这期也是项目中需要用到的功能,所以和大家分享如下:

关于ST语言的资料,我们再次分享下,没有下载的朋友可以链接里领取:

ST语言学习资料汇总

代码语言:javascript
复制

ST语言:Time类型转换成时分秒

在触摸屏上,有些品牌的HMI直接支持Time类型的,但是想做到通用,那么,我们可以将Time类型的变量转换成Int类型的Hour、Minute、Second!这样,几乎所有的HMI就能支持了,优点就是代码的兼容性较高,不需要做任何的程序上的修改。

我们这里主要用ST语言来进行转换,为了标准化和复用性,可创建Function或者Function Block。这两个概念我们在这个分享里有详细的描述:

PLC Control with ST,V3版本学习笔记10—巧用子程序、功能块FB及函数FC!

源代码

我们这里以CODESYS编程环境为例,来详细介绍:

主要步骤:

  • 将TIME类型转换为总毫秒数(DINT)
  • 计算小时
  • 计算分钟
  • 计算秒

详细的代码如下所示:

代码语言:javascript
复制
    // 1. 将TIME类型转换为总毫秒数(DINT)
    diTotalMilliseconds := TIME_TO_DINT(tInTime);

    // 2. 计算小时
    iHOUR := TO_INT( diTotalMilliseconds / 3600000 ); // 1小时 = 3600 * 1000 毫秒
    diRemainingValue := diTotalMilliseconds MOD 3600000; // 取余得到除去小时后的毫秒数

    // 3. 计算分钟
   iMINUTE := TO_INT( diRemainingValue / 60000 ); // 1分钟 = 60 * 1000 毫秒
   diRemainingValue := diRemainingValue MOD 60000; // 取余得到除去分钟后的毫秒数

    // 4. 计算秒
    iSecond := TO_INT( diRemainingValue / 1000 ); // 1秒 = 1000 毫秒

变量申明部分如下:

代码语言:javascript
复制
(*功能块作用是把Time类型的变量转变成INT类型的时分秒*)
FUNCTION_BLOCK TimeToHMS
VAR_INPUT
    tInTime : TIME; // 输入TIME类型的时间值
END_VAR
VAR_OUTPUT
    iHour   : INT;     // 输出小时
    iMinute : INT;   // 输出分钟
    iSecond : INT;   // 输出秒
END_VAR
VAR
    diTotalMilliseconds : DINT; // 总毫秒数(注意范围)
    diRemainingValue : DINT;    // 中间计算值
END_VAR

测试效果:

当然,有些场合需要用字符串的方式显示时分秒,那么可以在上述代码中的INT类型的时分秒,转换成字符串,然后用CONCAT字符串拼接指令按照实际的显示要求进行拼接即可!具体的代码不做演示,有疑问的朋友可以留言区留言哦!

最后,关于本期分享的内容,大家有更好的方法,欢迎留言交流哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ST语言:Time类型转换成时分秒
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档