返回主站|会员中心|保存桌面

发那科机器人(中国)服务商    

发那科工业机器人

新闻分类
  • 暂无分类
联系方式
  • 联系人:姚经理
  • 电话:18520143666
站内搜索
 
首页 > 新闻中心 > 维纶触摸屏计时功能实现!
新闻中心
维纶触摸屏计时功能实现!
发布时间:2025-11-15        浏览次数:33        返回列表

维纶触摸屏(Weintek HMI,如 MT/MTi/IM 系列)的计时功能可通过内部寄存器(LW 区) 结合宏指令动画元件属性实现,支持 “倒计时”“正计时”“累计计时” 等场景,具体方法如下:

一、核心原理:利用 HMI 内部时钟与寄存器

维纶触摸屏内置实时时钟(RTC),并提供掉电保持寄存器(如 LW9000~LW9999) 存储计时数据,通过宏指令读取系统时间或触发计时逻辑,再将结果显示在界面上。

二、常用计时功能实现方法

1. 正计时(从 0 开始累计时间)

适用于记录设备运行时长、工序耗时等。

  • 步骤 1:创建变量在 “系统参数→设备→内部寄存器” 中,定义 3 个掉电保持寄存器:

    • LW9000:计时状态(0 = 停止,1 = 启动);

    • LW9001:起始时间(存储开始计时时的系统秒数);

    • LW9002:累计秒数(当前计时值,= 当前秒数 - 起始秒数)。

  • 步骤 2:编写宏指令(触发计时)新建宏指令(“编辑→宏指令”),实现 “启动 / 停止” 逻辑:

    basic

  • // 启动计时(当启动按钮按下,LW9000=1且首次触发)if (GetData(LW, 9000, 1) == 1 && GetData(LW, 9003, 1) == 0) {
        SetData(LocalSecond(), LW, 9001, 1);  // 记录当前系统秒数到LW9001
        SetData(1, LW, 9003, 1);  // 标记已启动(避免重复赋值)
    }// 停止计时(当停止按钮按下,LW9000=0)if (GetData(LW, 9000, 1) == 0) {
        SetData(0, LW, 9003, 1);  // 重置启动标记
    }// 计算累计时间(仅在启动状态)if (GetData(LW, 9000, 1) == 1) {    int current = LocalSecond();  // 获取当前系统秒数(0~86399)    int diff = current - GetData(LW, 9001, 1);
        if (diff < 0) diff += 86400;  // 跨天处理(一天86400秒)
        SetData(diff, LW, 9002, 1);  // 存储累计秒数到LW9002
    }
  • 步骤 3:界面显示放置 “数值显示” 元件,关联LW9002,并在 “格式” 中设置为 “时:分: 秒”(如%H:%M:%S),自动将秒数转换为时间格式。放置 “按钮” 元件,分别关联LW9000的 “置 1”(启动)和 “置 0”(停止)操作。

2. 倒计时(从设定值递减到 0)

适用于定时停机、工序倒计时等。

  • 步骤 1:创建变量

    • LW9010:倒计时状态(0 = 停止,1 = 运行);

    • LW9011:设定时间(秒,如 300 秒 = 5 分钟);

    • LW9012:剩余时间(秒,= 设定值 - 已流逝秒数)。

  • 步骤 2:编写宏指令

    basic

  • // 启动倒计时(首次触发时初始化剩余时间)if (GetData(LW, 9010, 1) == 1 && GetData(LW, 9013, 1) == 0) {
        SetData(GetData(LW, 9011, 1), LW, 9012, 1);  // 剩余时间=设定值
        SetData(LocalSecond(), LW, 9014, 1);  // 记录启动时的系统秒数
        SetData(1, LW, 9013, 1);  // 标记已启动
    }// 停止倒计时if (GetData(LW, 9010, 1) == 0) {
        SetData(0, LW, 9013, 1);  // 重置标记
    }// 倒计时计算(每秒递减1)if (GetData(LW, 9010, 1) == 1) {    int current = LocalSecond();
        int past = current - GetData(LW, 9014, 1);
        if (past < 0) past += 86400;
        int remain = GetData(LW, 9011, 1) - past;
        if (remain <= 0) {
            remain = 0;
            SetData(0, LW, 9010, 1);  // 倒计时结束,自动停止
        }
        SetData(remain, LW, 9012, 1);}
  • 步骤 3:界面配置

    • 用 “数值输入” 元件设置LW9011(倒计时总时长);

    • 用 “数值显示” 元件显示LW9012,格式设为 “时:分: 秒”;

    • 按钮控制LW9010的启停,倒计时结束后可联动报警(如 “位状态指示灯” 闪烁)。

3. 基于实时时钟的定时(如固定时间触发)

适用于按每天固定时间执行操作(如 8:00 启动设备)。

  • 步骤 1:读取系统时间维纶 HMI 的系统时间寄存器:

    • LW9260:年,LW9261:月,LW9262:日;

    • LW9263:时,LW9264:分,LW9265:秒。

  • 步骤 2:宏指令判断

    basic

  • // 每天8:00:00触发动作(置位LW9020)if (GetData(LW, 9263, 1) == 8 && GetData(LW, 9264, 1) == 0 && GetData(LW, 9265, 1) == 0) {
        SetData(1, LW, 9020, 1);  // 触发信号
    } else {
        SetData(0, LW, 9020, 1);  // 其他时间复位
    }
  • 步骤 3:联动控制LW9020关联到 PLC 的输入点(通过 HMI 与 PLC 的通讯),实现定时控制逻辑。

三、关键注意事项

  1. 掉电保持:需使用LW9000~LW9999区间的寄存器(默认掉电保持),避免断电后计时数据丢失;

  2. 宏指令执行周期:在 “宏指令属性” 中设置执行周期(如 1000ms,即每秒执行一次),过短会占用 HMI 资源,过长会导致计时误差;

  3. 跨天处理:正计时 / 倒计时超过 24 小时需在宏指令中增加天数计算(如diff = diff % 86400取余);

  4. 精度限制:基于系统秒数的计时精度为 1 秒,若需更高精度(如 100ms),可读取LW9266(毫秒,0~999)并调整宏指令周期。

通过以上方法,可灵活实现维纶触摸屏的各类计时功能,核心是利用内部寄存器存储状态和数据,通过宏指令关联系统时间完成逻辑计算。

收缩
  • QQ咨询

  • 电话咨询

  • 18520143666
  • 添加微信客服