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

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

引文:博途工控人平时在哪里技术交流博途工控人社群

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

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

图片

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

图片

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

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

图片

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

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

图片

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

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

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

图片

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

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

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

Step.1

图片

Step.2

图片

对于不同累计量的静态文本,只需要将脚本中的变量名替换掉就 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 画面就能看到您想要的效果了。

图片

引文:博途工控人平时在哪里技术交流博途工控人社群

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值