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

[复制链接]
查看397 | 回复0 | 2024-5-16 14:37:33 | 显示全部楼层 |阅读模式
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 画面就能看到您想要的效果了。





SIMATIC WinCC系统不仅支持简单的单机应用,同时还支持带有冗余功能的多服务器的分布式系统,以及基于 Web 的全球解决方案。基于这些多样的架构,可以实际就地或远程的生产过程监控。


文中WinCC架构图中所用图标说明如下




本中介绍8种最常用架构及选型




  • 单机系统







  • 单机冗余系统




  • 多用户系统
    (多客户机/单服务器架构)





  • 冗余服务器多用户系统
    (多客户机/单冗余服务器架构)




  • 分布式系统
    (多客户机/多服务器架构)


  • 单机系统的浏览器/服务器架构(B/S)




  • 分布式系统的浏览器/服务器架构
    (即C/S与B/S混合架构)








  • 瘦客户机架构
    (智能手机、平板电脑等智能设备)



    在实际项目中,可能会有更多的需求,诸如,数据归档要求,第三方系统与WinCC的数据通信接口,生产管理功能选件等,因篇幅所限,不能尽述。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则