梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 4178 个
工控威望: 7545 点
下载积分: 14643 分
在线时间: 2828(小时)
注册时间: 2016-10-31
最后登录: 2024-11-05
查看梦雨天涯的 主题 / 回贴
楼主  发表于: 2023-02-03 10:44
第一次
macro_command main()
bool a[2],QB_lamp,MB_Rising_edge
bool on=1,off=0
GetData(a[0], "Local HMI", LB, 0, 1)

//产生上升沿
if a[0] and not a[1] then
MB_Rising_edge=1
end if

//启动自锁
GetData(QB_lamp, "Local HMI", LB, 10, 1)
if ( MB_Rising_edge and not QB_lamp ) or (not MB_Rising_edge and  QB_lamp) then
SetData(on, "Local HMI", LB, 10, 1)
else
SetData(off, "Local HMI", LB, 10, 1)
end if

//复位上升沿和保持
MB_Rising_edge=0
a[1]=a[0]


end macro_command
[ 此帖被梦雨天涯在2023-02-03 10:58重新编辑 ]
本帖最近评分记录:
  • 下载积分:+1(king~大王) 好贴好贴!
  • 微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953
    梦雨天涯
    微信hui530527   &
    级别: 网络英雄
    精华主题: 0
    发帖数量: 4178 个
    工控威望: 7545 点
    下载积分: 14643 分
    在线时间: 2828(小时)
    注册时间: 2016-10-31
    最后登录: 2024-11-05
    查看梦雨天涯的 主题 / 回贴
    1楼  发表于: 2023-02-03 10:45
    看到以上程序,就感觉有点复杂了,于是先写一个上升沿的程序
    macro_command main()
    bool Button,keep//按钮,保持
    unsigned short count//计数
    GetData(Button, "Local HMI", LB, 0, 1)
    GetData(count, "Local HMI", LW, 0, 1)


    if Button and not keep then//当按钮接通且保持没有接通,开始计数一次
    count=count+1//计数一次
    end if
    keep=Button//按钮赋值给保持

    SetData(count, "Local HMI", LW, 0, 1)
    end macro_command
    微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953
    梦雨天涯
    微信hui530527   &
    级别: 网络英雄
    精华主题: 0
    发帖数量: 4178 个
    工控威望: 7545 点
    下载积分: 14643 分
    在线时间: 2828(小时)
    注册时间: 2016-10-31
    最后登录: 2024-11-05
    查看梦雨天涯的 主题 / 回贴
    2楼  发表于: 2023-02-03 10:50
    第三次,有了以上思路,然后继续写
    macro_command main()
    bool Button,keep//按钮,保持
    bool light//指示灯
    GetData(Button, "Local HMI", LB, 0, 1)
    GetData(light, "Local HMI", LB, 10, 1)

    if Button and not keep then
      if light then//当按钮接通且保持没有接通,开始计数一次
          light=0//指示灯亮
       else
          light=1//指示灯亮
      end if
    end if

    keep=Button//按钮状态赋值到保存输出
    SetData(light, "Local HMI", LB, 10, 1)


    end macro_command
    微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953
    梦雨天涯
    微信hui530527   &
    级别: 网络英雄
    精华主题: 0
    发帖数量: 4178 个
    工控威望: 7545 点
    下载积分: 14643 分
    在线时间: 2828(小时)
    注册时间: 2016-10-31
    最后登录: 2024-11-05
    查看梦雨天涯的 主题 / 回贴
    3楼  发表于: 2023-02-03 10:51
    发现第二个IF是可以简化的,再次简化可得

    macro_command main()
    bool Button,keep//按钮,保持
    bool light//指示灯
    GetData(Button, "Local HMI", LB, 0, 1)
    GetData(light, "Local HMI", LB, 10, 1)

    if Button and  not keep then//判断按钮是否接通,且判断按钮是否在保持状态
    light=not light//按钮输出相反
    end if

    keep=Button//按钮状态赋值到保存输出
    SetData(light, "Local HMI", LB, 10, 1)
    end macro_command
    微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953
    梦雨天涯
    微信hui530527   &
    级别: 网络英雄
    精华主题: 0
    发帖数量: 4178 个
    工控威望: 7545 点
    下载积分: 14643 分
    在线时间: 2828(小时)
    注册时间: 2016-10-31
    最后登录: 2024-11-05
    查看梦雨天涯的 主题 / 回贴
    4楼  发表于: 2023-02-03 10:54
    不断简化,精益求精,程序逻辑和思路整理的过程,这就是学习
    微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953
    梦雨天涯
    微信hui530527   &
    级别: 网络英雄
    精华主题: 0
    发帖数量: 4178 个
    工控威望: 7545 点
    下载积分: 14643 分
    在线时间: 2828(小时)
    注册时间: 2016-10-31
    最后登录: 2024-11-05
    查看梦雨天涯的 主题 / 回贴
    5楼  发表于: 2023-02-03 10:57
    图片:
    图片:
    图片:
    图片:
    全部图片
    微信hui530527      b站账号,非标自动化谭工
    请不要随意加我,不会随便通过。QQ群942493953