资讯动态

MCGS系统时间显示与设置全解析:从原理到NTP对时实战

发布时间:2026/8/17 10:50:19 来源:尧图企业网站定制
1. 项目概述MCGS系统时间显示与设置的核心价值在工业自动化现场一块触摸屏上显示的时间远不止是“几点几分”那么简单。它可能是设备运行日志的时间戳是生产批次记录的基准是报警信息排序的依据甚至是与上位机、服务器进行数据同步的关键凭证。MCGSMonitor and Control Generated System作为国内广泛应用的组态软件其系统时间的准确性与可管理性直接关系到整个监控系统的可靠性与数据可信度。很多新手工程师在初次接触MCGS时往往只关注画面制作和变量连接忽略了时间这个“沉默的基石”直到出现“报警记录时间错乱”、“报表日期对不上”甚至“与PLC时钟不同步导致逻辑错误”时才意识到问题的严重性。本文将从一个资深工控人的视角彻底拆解MCGS中系统时间的显示与设置不仅告诉你如何操作更深入剖析其背后的通讯机制、依赖关系以及那些手册上不会写的“坑”。2. MCGS系统时间架构与原理深度解析2.1 硬件时钟与软件时钟的分离与同步要理解MCGS的时间首先要明白其运行载体的时钟体系。绝大多数MCGS触摸屏如TPC系列内部都有一颗硬件实时时钟RTC芯片通常由一枚纽扣电池供电。这个RTC在设备完全断电后依然能够维持计时这就是为什么你的触摸屏断电重启后时间可能还是大致准确的前提是电池有电。然而这个硬件时钟的精度有限可能存在每天几秒甚至几十秒的累积误差。MCGS组态软件运行时会基于操作系统通常是嵌入式Windows CE或Linux读取这个硬件时钟并将其作为系统的“软件时钟”。我们在MCGS组态环境中配置的“系统时间”本质上是通过组态软件向这个操作系统软件时钟发出设置指令。这里就引出了第一个关键点MCGS组态软件是时间的管理者而非时间的源头。它依赖于底层硬件和操作系统提供的时间接口。2.2 时间数据的流向从屏到变量再到画面当我们希望在触摸屏画面上显示时间时数据流是这样的源头操作系统内核的当前时间。MCGS内核服务MCGS运行系统有一个后台服务会周期性地例如每秒从操作系统获取时间数据。系统变量获取到的时间数据被填充到MCGS内置的系统变量中。最核心的几个变量是$Year,$Month,$Day年、月、日。$Hour,$Minute,$Second时、分、秒。$Week星期几。$Date和$Time组合后的日期和时间字符串。画面显示我们在画面编辑器中插入一个“标签”或“输入框”将其“显示输出”或“输入输出”连接属性关联到上述系统变量如$Time并设置好显示格式。运行时该图形对象就会自动从对应的系统变量中读取数值并刷新显示。这个流程看似简单但隐患往往出现在环节之间的同步与刷新上。例如如果你设置了一个显示到秒的标签但刷新周期设置得过长就会出现显示停滞的现象。2.3 时间设置的本质写操作与权限设置时间则是上述数据流的反向操作。通常通过一个“时间设置对话框”或几个输入框配合按钮来实现。用户输入操作者在画面上输入新的年、月、日、时、分、秒。脚本执行通过一个按钮的“按下脚本”或“释放脚本”执行一段!SetTime()指令。这是MCGS提供的专用时间设置函数。系统调用!SetTime()函数会调用MCGS运行系统的接口进而调用操作系统的API最终将新的时间值写入硬件RTC。反馈与同步设置成功后MCGS内核服务会在下一个周期读取到新的时间并更新所有系统变量从而所有关联的画面显示也随之改变。这里的关键在于权限和生效时机。在有些系统尤其是涉及网络对时的系统中随意允许HMI画面修改时间可能是危险的可能会破坏事件序列。因此成熟的工程往往会将时间设置功能放在有密码保护的“管理员菜单”中。3. 显示系统时间的多种实现方案与细节3.1 基础显示连接系统变量这是最直接的方法。在MCGS组态软件的“工作台”中打开“实时数据库”可以看到“系统变量”分组里面列出了所有内置变量。在画面中制作显示元件放置一个“标签”构件。双击标签进入属性设置。在“输入输出连接”中勾选“显示输出”。点击“显示输出”页签在“表达式”一栏点击右侧的“”按钮从变量选择窗口中找到并选择“$Time”显示完整时间或“$Date”显示日期。在“输出值类型”中选择“字符串输出”。在“输出格式”中可以点击“格式设置”进行细化例如将$Time的格式设置为“HH:mm:ss”以实现到秒的显示这也是网络热词中“kos系统将时间显示到秒钟”在MCGS上的对应实现思路。注意$Time变量默认的更新周期是1秒。如果你需要更快的刷新如用于高精度计时单纯依赖此变量不行需要利用脚本和!FlushDataInit函数来自定义高速数据采集但这会增加系统负荷。3.2 高级显示自定义格式与动画有时我们需要更灵活的显示比如将日期和时间分开显示在不同位置或者用更大的字体只显示时间。分开显示创建两个标签一个连接$Date一个连接$Time。可以分别设置它们的字体、颜色和位置。时钟动画这需要一点技巧。可以制作表盘图片然后利用$Hour、$Minute、$Second这三个数值型变量通过“旋转”动画连接让指针图片的角度随着变量值变化。具体步骤是为指针图元设置“旋转”动画角度表达式为($Hour * 30 $Minute * 0.5)时针或($Minute * 6)分针或($Second * 6)秒针。这实现了“鼠标点那儿在哪儿显示柱状图”那种动态数据绑定的思想只不过是应用在时间显示上。3.3 显示登录用户名与时间结合结合网络热词“mcgs显示登录用户名”这是一个非常实用的功能常用于操作日志或界面抬头。MCGS有内置系统变量$UserName记录当前登录的用户名。我们可以制作一个标签将其表达式设置为$UserName ” ” $Date ” ” $Time。这样就能显示如“张三 2023-10-27 14:30:25”的效果。为了美观通常需要对字符串进行格式化处理可能需要用到!StrFormat函数或直接在表达式框里用字符串连接符“”进行拼接。4. 设置系统时间的完整实操流程4.1 通过标准时间设置对话框MCGS提供了一种最快捷的方式使用其内置的“时间设置”构件。在“工具箱”中找到“时间设置”构件可能位于“输入”或“高级”分类下。将其拖放到画面上它会自动呈现为一个日历和时钟组合的界面。运行时用户可以直接点击该构件修改日期和时间修改后通常需要点击“确定”或“应用”按钮。该构件背后自动关联了!SetTime()函数无需用户编写脚本。实操心得这个构件虽然方便但样式固定且弹出的对话框可能会打断操作流程。在要求界面风格统一或全屏运行的场合通常不采用这种方式而是自定义设置面板。4.2 自定义时间设置面板推荐这是更专业、更灵活的做法可以完全控制UI和交互逻辑。制作输入框在画面上放置6个“输入框”构件分别用于年、月、日、时、分、秒。将它们的“输入输出连接”属性设置为“对应数据对象”。我们需要先在实时数据库中创建6个数值型变量例如Set_Year,Set_Month,Set_Day,Set_Hour,Set_Minute,Set_Second并将输入框分别与它们关联。同时可以将这些输入框的“最小值”和“最大值”属性设置合理范围如月1-12时0-23这是提升用户体验和防止输入错误的重要一步。制作设置按钮放置一个按钮命名为“设置时间”。编写按钮脚本双击按钮在“脚本程序”标签页通常是“抬起脚本”中写入以下代码!SetTime(Set_Year, Set_Month, Set_Day, Set_Hour, Set_Minute, Set_Second)这段代码调用了MCGS的系统函数将我们输入框中的变量值传递给系统从而设置时间。制作读取当前时间按钮可选为了方便可以再做一个“读取当前时间”按钮其脚本功能是将系统变量的值赋给我们的设置变量Set_Year $Year Set_Month $Month Set_Day $Day Set_Hour $Hour Set_Minute $Minute Set_Second $Second这样用户可以先读取当前时间再基于此进行微调。4.3 通过网络自动对时NTP客户端在需要多台设备时间严格同步或长时间运行要求时间精准的场合手动设置是不可靠的。让MCGS触摸屏作为NTP客户端自动同步网络时间是最佳实践。这通常需要触摸屏具有网络接口以太网并且网络内有可用的NTP服务器可以是公网NTP服务器也可以是局域网内的服务器或高级别PLC。硬件与网络准备确保触摸屏IP地址设置正确能与NTP服务器通信。对于“麒麟桌面系统密码错误锁定时间修改参数”、“openeuler 修改系统时间”、“rocky linux设置静态ip”这些热词反映的服务器/PC端时间问题恰恰说明了网络中拥有一个可靠时间源的重要性。MCGS组态设置在MCGS组态软件的“运行策略”中可以添加“循环策略”或“启动策略”。在策略中新增一个“脚本程序”行。编写NTP对时脚本MCGS本身不直接提供NTP函数但可以通过调用操作系统命令或使用高级脚本如VBScript配合网络通讯组件来实现。一种较为通用的思路是利用“设备窗口”添加一个“TCP/IP客户端”通用设备。编写脚本按照NTP协议格式UDP 123端口组包并向NTP服务器发送请求然后解析返回的报文获取精确的UTC时间。将获取到的时间转换为本地时间并用!SetTime()函数设置。设置对时周期将对时脚本放在一个“循环策略”中设置循环时间为较长周期如每12小时或每24小时执行一次避免频繁网络请求。重要提示实现NTP对时是MCGS的中高级应用涉及网络通讯和协议解析需要一定的编程基础。有些品牌的触摸屏如西门子其固件直接支持NTP配置但MCGS通用性更强需要自行实现逻辑。初次尝试建议先在小范围测试。5. 时间功能相关的常见问题与深度排查5.1 时间显示不更新或更新慢现象画面上的时间标签卡住不动或跳动不连贯。排查步骤检查变量连接确认标签连接的确实是$Time、$Hour等系统变量而不是自己创建的同名普通变量。检查刷新周期在标签的“显示输出”属性中查看“显示更新周期”是否被误设为很大的值如10000毫秒。对于时间显示通常应设为1000毫秒或更短。检查系统负荷如果工程很大动画很多脚本复杂可能导致MCGS运行系统忙于处理其他任务延迟了系统变量的更新。可以尝试简化工程或观察CPU使用率。检查硬件性能过于老旧的触摸屏硬件性能不足也可能导致刷新缓慢。5.2 设置时间后无效或重启恢复现象通过画面设置时间当时显示成功但触摸屏重启后时间又回到错误值或者设置后立即查看其他时间显示发现没变。排查步骤RTC电池耗尽这是最常见的原因。触摸屏内部的纽扣电池通常是CR2032没电了无法在断电后维持硬件时钟。需要拆机更换电池。更换后必须重新上电设置时间。脚本执行错误检查设置时间的按钮脚本是否有语法错误!SetTime函数的参数是否正确传递。可以在脚本中加入!MessageBox函数弹出调试信息确认脚本确实被执行且参数正确。权限问题在某些定制的或高安全性的操作系统环境中应用程序可能没有修改系统时间的权限。这需要检查触摸屏操作系统的设置。变量传递延迟如果你是通过中间变量如Set_Hour来设置确保在调用!SetTime之前这些变量的值已经通过输入框正确写入。有时输入框的“数据对象值变化”事件没处理好会导致按钮按下时取到的还是旧值。5.3 与PLC等设备时钟不同步现象触摸屏上显示的时间与连接的PLC、仪表等设备内部时钟不一致导致事件记录、报表生成出现时间错位。解决方案主从同步确定一个“主时钟”。通常选择系统中最高级、最稳定的设备作为主时钟如服务器或高级别PLC。让其他设备包括MCGS触摸屏向主时钟同步。MCGS作为主时钟在MCGS中编写脚本定期如每分钟读取$Date和$Time通过通讯协议如Modbus TCP、S7协议等写入到PLC的时钟存储区。这需要你清楚PLC的时钟地址和格式。MCGS作为从时钟在MCGS中编写脚本定期从PLC读取时钟数据然后使用!SetTime()函数设置自身系统时间。这要求PLC的时钟是准确的。统一外部时钟源最佳方案是让MCGS触摸屏和PLC都接入NTP网络同时与同一个NTP服务器同步从而实现毫秒级的时间统一。5.4 时间数据记录与导出中的问题结合热词“mcgs数据导出到excel”时间在数据记录中至关重要。问题导出的历史数据或报表中时间列错乱、格式不对、或时区有问题。排查与处理记录变量选择在MCGS“历史表格”或“存盘数据浏览”构件中确保你选择记录了正确的时间变量。如果你想记录每条数据产生的具体时刻应该记录$Date和$Time或者使用!StrFormat函数将它们组合成一个字符串变量进行记录。切忌只记录一个自定义的、仅在数据变化时刷新的时间点。存盘时机MCGS的历史数据存盘有“周期存盘”和“变化存盘”两种。对于时间记录如果关联的数据变化不频繁使用“变化存盘”可能导致时间戳稀疏。需要根据业务逻辑仔细选择。导出格式处理当使用“数据导出”功能或通过脚本将存盘数据导出为CSV/Excel时要特别注意时间数据的格式。MCGS导出的日期时间可能是“YYYY-MM-DD HH:MM:SS”格式的字符串Excel可能会将其识别为文本而非日期。需要在Excel中手动进行“分列”操作或使用脚本在导出时格式化为Excel可识别的标准日期时间格式。6. 提升时间系统可靠性的进阶技巧6.1 开机自动时间初始化脚本在“运行策略”的“启动策略”中添加一个脚本用于在触摸屏上电启动时检查并初始化时间。例如可以检查$Year是否小于一个合理值如2020如果小于则自动从一个默认值如2023年1月1日开始或尝试从连接的PLC中读取时间。这可以避免因RTC电池彻底没电后系统从一个非常古老的默认日期如2000年开始运行。6.2 双冗余时间显示与告警在重要的监控画面上可以在不同位置放置两个时间显示标签连接同一个$Time变量。这看似多余实则是一种视觉冗余校验可以快速发现某个显示区域因图形渲染问题导致的显示异常。更进一步可以编写一个后台脚本计算两个自身读取时间的时间差理论上应为0如果差值超过一定阈值如2秒则触发一个“时间显示异常”的内部报警提醒维护人员检查。6.3 利用时间变量进行复杂逻辑控制系统时间变量不仅可以显示还可以用于逻辑判断。例如在“用户策略”中可以编写脚本实现基于时间的操作权限管理在$Hour介于8到17之间时允许所有用户操作在非工作时间则弹出密码输入框。再比如可以用$Time来控制一个定时画面的切换实现白天和夜间不同的界面风格亮度、对比度调整。这些应用将时间从一个显示元素变成了一个强大的控制参数。6.4 为工程添加“时间版本”信息在工程调试和维护阶段经常会有多个版本的程序。可以在主画面角落用一个标签显示一个固定的字符串如“版本20231027_V1.2”。这里的日期不是系统时间而是编译工程的日期手动写入。这能帮助现场人员快速确认当前运行的工程版本。虽然这与动态系统时间无关但却是时间信息在工程管理中的一个重要应用能有效避免“用旧版程序排查新版问题”的尴尬。通过以上从原理到实操从基础到进阶从显示到设置再到深度应用的全面剖析我们不难发现MCGS中的时间功能是一个“麻雀虽小五脏俱全”的子系统。处理好它是保证整个自动化监控系统数据完整性、逻辑正确性和运行稳定性的基石。它考验的不仅是工程师对MCGS软件操作的熟练度更是对计算机系统基础、网络通讯和现场维护的综合理解能力。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价