故事作者:joe_liang

最近创作

看看TA的故事

【技】精简触摸屏使用有妙招

已锁定

joe_liang

西门子1847工业学习平台

  • 帖子

    25
  • 精华

    3
  • 被关注

    13

论坛等级:侠客

注册时间:2018-08-01

普通 普通 如何晋级?

【技】精简触摸屏使用有妙招

10789

2

2020-02-25 17:10:51

       在平时与客户的交流过程中,很多客户都反映西门子的触摸屏没威纶屏好用,功能不够强大,图库也不丰富,有些功能也不知道怎样实现。在刚学习西门子触摸屏的时候,多少会有点迷茫,关于触摸屏编程的教学资料也不像PLC那么多,很多时候都是需要自己去摸索,去尝试而实现最终需要的功能。其实西门子的触摸屏还是可以实现很多功能的,只是有些设置比较隐蔽,有些需要自己用基础元素配合事件去实现。趁着假期,总结了两个平时经常被问到的功能或者是我认为还是有点用的功能,以及当时是如何找到实现方法的心路历程和大家分享。

(本次分享主要以KTP精简屏和Smart Line为例,因为这两款屏平时接触比较多,精智屏太贵了,平时很少客户会用)

一、弹出画面

       弹出画面,精智屏是集成了这个功能的,但是精简屏和Smart Line并没有这个功能。弹出画面这个功能可以让触摸屏在有限的画面内展现更多的内容,所以也是很有用的。平时客户问精简屏有没有弹出画面的功能,通常我的回答都是没有,需要用精智屏才有。但闲时想了想,既然触摸屏没有集成这样的功能,那我能不能通过基础的元素和事件来实现类似的效果呢?

       想了又想,突然灵机一动,或许可以通过切换画面来实现。于是动手试了试,效果还不错。基本的实现思路如下:

1、 先制作一个基础画面作为底图


图1 基础画面


2、 将这个基础画面用作模板


图2 模板


3、 每个弹窗单独做一个画面,模板选择刚制作的基础模板

图3 弹窗界面


4、 在基础界面的按钮做一个单击事件,组态“激活屏幕”函数跳到相关画面就可以了。


       因为用的是基础画面做底图,所以画面切换的时候没什么违和感,就好像窗口弹出来了一样。如果基础画面变了,只需要更新模板就可以了,也很方便。

       除此之外,还有另外一种方式可以实现这样的功能。这种方法是假期在看西门子的触摸屏例程上看到的,例程里是通过动画“可见性”实现的,效果也不错。但是这种做法有个不好的地方是,如果弹窗多的话,需要不停地切换图层和组态动画,比较麻烦。但是对于Smart Line触摸屏来说,只能使用第二种方法来实现弹窗的功能了。因为Smart Line的模板只有一个,不能像精简触摸屏一样创建多个模板。


二、画面自动弹出

       这个功能似乎用得比较多,在工作中也是被经常问到怎样实现。在机器运行过程中,客户在外部按了某个按钮,需要跳到特定的界面以监控机器的状态,譬如按了启动按钮,需要跳回主界面监控机器的状态。或者是程序满足某种条件,需要跳到相关窗口,譬如出现报警时跳到报警状态显示窗口。

       做画面跳转,第一时间想到的是用“激活屏幕”这个函数。但是平时的用法是组态一个按钮,然后连接一个“按下”或“单击”事件,组态“激活屏幕”函数。当按钮按下的时候,就可以跳到相应的界面了。


图4 激活屏幕


       那么如果不按触摸屏的按钮,怎么让画面跳转呢?这时需要用到另外一个函数“根据编号激活屏幕”,但是问题又来了,怎样触发这个函数呢?延续以往的做法,给按钮组态了一个激活事件,在激活事件里触发函数。当时想,只要我在每个画面都放一个这个按钮,那在任何界面,这个按钮应该都是处于激活状态,相当于这个函数是一直在激活的,只要我改变画面号就可以了。然而,仿真的结果却不是这样,当前画面一动不动,一点都没有要跳转的意思。

       于是翻阅各种手册和帮助文件,看看这几个事件到底是什么意思。发现原来理解错了,这些事件都是基于当前控件的,譬如“激活”和“取消激活”这两个事件,是指按钮有没有被选中,如果不碰触摸屏这个按钮,是不会触发任何事件的。


图5 “取消激活”事件描述


       此路不通,继续找资料,寻寻觅觅,终于在网上找到一丝蛛丝马迹,需要用变量(代表画面号)自身的事件来触发函数,于是按照这个方法试了一下,还是不行。继续研究发现是因为变量在触摸屏没有被调用导致的,于是在模板上组态了一个隐藏按钮,用事件+“根据编号激活屏幕”函数,使变量能在每个界面都被调用,然后就成功了。


图6 变量属性

 

图7 按钮组态


       再后来,在一次参加西门子培训的过程中,主讲老师提到了一个概念——采集模式。这个知识点使我灵光一闪,又有了新的想法。是这样的,触摸屏的变量采集模式有三种:必要时、循环操作、循环连续。这三种模式的区别在于:

(1)     必要时:如果选择“要求时”采集模式,则不循环更新变量。 例如,只有当通过脚本或使用“UpdateTag”系统函数请求时才更新变量。

(2)     循环操作:如果选择“循环操作”采集模式,则当变量在画面中显示或记录变量时在运行系统中更新变量。 采集周期决定在 HMI 设备上变量值更新的更新周期。 既可以选择默认采集周期,也可以定义用户指定的周期。

(3)     循环连续:如果选择“循环连续”采集模式,则在运行系统中连续更新变量,即使变量不在当前打开的画面上。例如,如果将变量组态为当变量值变化时触发函数列表,则为该变量激活此设置。只能将“持续更新”设置用于那些确实必须连续更新的变量。 频繁读取操作将增加通信的负担。

*以上关于采集模式的解释摘自博图的信息系统


       了解了变量采集模式的区别后,上面画面跳转的实现又有了新的办法:在最后一步的时候,不需要在模板调用函数了,只需要将相应变量的采集模式从默认的“循环操作”改为“循环连续”就可以了,这样就能实现变量一直调用了。用仿真软件测试了一下,成功。

       所以,其实要实现触摸屏画面自动弹出这个功能很简单,只需两步:(1)在代表画面号的变量的事件“数值更改”里组态函数“根据编号激活屏幕”;(2)将变量的采集模式改为“循环连续”。


       世上无难事,只怕有心人。遇到问题,多想,多看,多问,多动手,总能找到解决的办法。


【技】精简触摸屏使用有妙招 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。