WinCC输入/输出域没有所需要的预定义输出格式该怎么办? 点击:971 | 回复:0



低诉

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2016年7月23日
发表于:2021-04-22 14:07:45
楼主

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

大多数人都应该知道 WinCC 的 IO 域对于浮点数的显示都支持格式预定义。

例如原数 567.89 可以在经过 IO 域的预定义后在画面上显示为 567.9:

image.png

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

 image.png

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

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

 image.png

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

可是随着项目运行时间长了之后问题就来了:数据位数不过来了。

 image.png


能不能给加个千位分隔符让数好读一些呢?


这对 WinCC 的输入/输出域来说确实就犯难了,软件本身没有提供千位分隔符的格式预定义啊。但是客户的需求倒也是合理的,想想办法吧。

还好 WinCC 支持脚本功能,自己写一个应该也不算难,写吧。于是想想,写起来貌似用静态文本来输出这些累计量可能更方便,于是最终给用户呈现出了下面这种效果。

 image.png

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


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


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

Step.1

image.png

Step.2

image.png

对于不同累计量的静态文本,只需要将脚本中的变量名替换掉就 ok 了。其实只是用了 VBS 简单的一个 Formatnumber 函数来解决了这个问题。

为了省去各位看官用的时候再去查这个函数的用法,简单在此解释一下这个函数吧(其实度娘上倒也很容易找到用法)。

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

语法:

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

image.png


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


Expression

也就是累计量值,

HMIRuntime.Tags("Water_Total").Read 

这个毫无疑问是必须的。


NumDigAfterDec

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


GroupDig


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

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

image.png

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


 image.png

设置完成重新激活您的 WinCC 画面就能看到您想要的效果了。

image.png



楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师