故事作者:自动化so酷

最近创作

看看TA的故事

20210303聊技术|WinCC 输入/输出域没有所需要的预定义输出格式该怎么办?

已锁定

自动化so酷

总坛主

  • 帖子

    28
  • 精华

    0
  • 被关注

    4

论坛等级:侠客

注册时间:2020-03-02

普通 普通 如何晋级?

20210303聊技术|WinCC 输入/输出域没有所需要的预定义输出格式该怎么办?

3473

0

2021-03-03 13:40:57

大家好,又是辛苦搬砖的周一。今天二师兄想跟大家分享一个我解决的客户小难题。

小技巧解决小问题,积跬步才能至千里~今天的问题是关于WinCC 输入/输出域没有所需要的预定义输出格式该如何操作的。

 

应该大多数人都知道 WinCC 的 IO 域对于浮点数的显示都支持格式预定义,例如原数 567.89 可以在经过 IO 域的预定义后在画面上显示为 567.9 。

 

甚至是带符号或不带符号,带前导 0 或不带:

 

相对常规应用而言基本还是能满足项目开发的需求了。但是最近确实也遇到了用户的一个合理需求让 WinCC 的输入/输出域格式预定义犯难了。

用户发现在画面中显示的累计量,不管是水还是电,项目初期都还 OK ,项目初期的水电累计量:

 

还比较容易读数:三百六十五点九吨水,一千七百八十九点三度电。

可是随着项目运行时间长了之后问题就来了:

 

数据位数不过来了。能不能给加个千位分隔符让数好读一些呢?

这对 WinCC 的输入/输出域来说确实就犯难了,软件本身没有提供千位分隔符的格式预定义啊。但是客户的需求倒也是合理的,想想办法吧。还好 WinCC 支持脚本功能,自己写一个应该也不算难,写吧。于是想想,写起来貌似用静态文本来输出这些累计量可能更方便,于是最终给用户呈现出了下面这种效果。

 

加上了千位分隔符确实看起来好读一些了。

分享一下实现方法,小技巧解决些小问题,兴许能带来一些启发,别的地方也能用上。

画面上添加两个“静态文本”,在属性窗口中打开“文本”属性的“ VBS 动作…”编程窗口,然后写上代码就完成了:

 

 

对于不同累计量的静态文本,只需要将脚本中的变量名替换掉就 ok 了。其实只是用了 VBS 简单的一个 Formatnumber 函数来解决了这个问题。为了省去各位看官用的时候再去查这个函数的用法,简单在此解释一下这个函数吧(其实度娘上倒也很容易找到用法)。

Formatnumber 函数可返回作为数字被格式化的表达式。

语法:

Formatnumber (Expression [, NumDigAfterDec [, IncLeadingDig [, UseParForNegNum [, GroupDig]]]])

 

对应于刚才的脚本,解释一下用到的。

Expression 也就是累计量值:HMIRuntime.Tags("Water_Total").Read ,这个毫无疑问是必须的。

NumDigAfterDec, 默认值为 -1,当然也可以省略,如果选择 -1 或者省略,也就自动根据计算机区域设置来显示了。在上面的脚本里用了 1 ,实际也就是指定了小数点后保留 1 位小数。

GroupDig,默认 -1 也可以,上面的脚本里指定了 -2,也就是使用计算机区域设置中的设置。那这个设置如何打开如何设置?

打开操作系统的控制面板,切换为以小图标方式查看就可以找到“区域”设置了。

 

打开“区域”设置,点击“其他设置(D)…”就可以找到“数字分组符号(I):”设置了。默认情况下通常分组符为“,”,当然您也可以根据您的需要任意选择或者输入。哪怕是“空格”甚至是“@”。设置完成重新激活您的 WinCC 画面就能看到您想要的效果了。

 

 

 

 

20210303聊技术|WinCC 输入/输出域没有所需要的预定义输出格式该怎么办? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

自动化so酷

共有78条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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