VisualHMI 分期적용(系统):到期锁定与 set_stage_pwd

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

分期(租赁锁机):到约定时间自动锁屏,输密码才解锁。适合设备试用、分期付款。系统方案是「到期前锁定」,自定义方案(见 04)是「到期才锁」。

1. 설정

엔지니어링 → 엔지니어링设置 → 分期使用:활성화分期、分期数(最大10)、到期锁定화면 ID、每期到期日和密码。

VisualHMI 分期应用(系统):到期锁定与 set_stage_pwd插图

2. 锁定界面与系统레지스터

锁定화면放两个数值控件:密码입력绑定 $SysStageEnterPwd(LW0205,UINT32)、当前期号绑定 $SysStageTimeLevel(LW0204,UINT16,缩放1偏移1)。

VisualHMI 分期应用(系统):到期锁定与 set_stage_pwd插图1

3. 分期时间掉电存储(LUA)

改分期时间需写系统레지스터 SysCfgCtrl(0x011A)/SysCfgOption(0x011B):

function on_update(slave,vtype,addr)
  if vtype == VT_LW then
    if addr >= 0x0210 and addr <= 0x0218 then  -- 5个分期时间주소
      set_uint16(VT_LW, 0x011B, (1<<5))  -- 选择分期密码
      set_uint16(VT_LW, 0x011A, 0x5501)   -- 저장
    end
  end
end

VisualHMI 分期应用(系统):到期锁定与 set_stage_pwd插图2

4. 分期密码(不读只写)

set_stage_pwd(level, pwd):level 0~9 对应分期1~10,pwd 为数字密码。首次使用把密码쓰기 RW 区(检测标识位 0x0055 防重复初始化):

function on_init()
  local _val = get_uint16(VT_RW, 0x2000)
  if _val ~= 0x0055 then
    set_uint32(VT_RW, 0x0000, 1111)
    set_uint32(VT_RW, 0x0002, 2222)
    set_uint32(VT_RW, 0x0004, 3333)
    set_uint32(VT_RW, 0x0006, 4444)
    set_uint32(VT_RW, 0x0007, 5555)
    set_uint16(VT_RW, 0x2000, 0x0055)
  end
  set_uint16(VT_LW, 0x011B, (1<<5))
  set_uint16(VT_LW, 0x011A, 0x5502)  -- 从set_stage_pwd后的密码불러오기
end

VisualHMI 分期应用(系统):到期锁定与 set_stage_pwd插图3

5. 恢复与开关

恢复分期写 SysCfgCtrl=0x5503;动态开关通过写 LW0200(分期数 0 或 1)+ 저장实现。所有涉及分期的写 RW/系统레지스터操作都要配合 SysCfgCtrl/SysCfgOption 저장。

VisualHMI 分期应用(系统):到期锁定与 set_stage_pwd插图4

分期密码是只写不读的:你想让用户改密码或初始化,得自己在 RW 区镜像一份,再用 set_stage_pwd 同步。每次改完记着调 SysCfgCtrl(0x011A)/SysCfgOption(0x011B) 저장,否则掉电丢。

整理自 广州大彩科技 VisualHMI 개발문서(hmi-doc.gz-dc.com)其他기술튜토리얼「分期적용(系统)」,版权归大彩科技所有。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注