回复:wincc 里面如何实现600个实时数据从大到小的排序?关键是60个变量的排序要在尽可能短的时间的内完成。

zhangli0

版主 西门子1847工业学习平台

  • 帖子

    17132
  • 精华

    63
  • 被关注

    889

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2016-10-31 10:19:00

22楼

600个变量全放到一个页面上显示,这个刷新都够卡的了。另外你数据排序了,那么操作员要不要知道哪个数据来自于哪个plc呢?如果只是显示排序后的数据,wincc定义600个内部变量如tag1~tag600,600个外部变量plc_tag1~plc_tag600

wincc全局脚本,周期5秒或者10秒,根据你的需要:

Dim group1,group2,mytag(600),mymax,i,j,tagname

Set group1 = HMIRuntime.Tags.CreateTagSet

Set group2 = HMIRuntime.Tags.CreateTagSet

group1.add"plc_tag1"

group1.add"plc_tag2"

.........

group1.add"plc_tag600"

group1.read

group2.add"tag1"

group2.add"tag2"

..............

group2.add"tag600"

mytag(0)=group1("pcl_tag1").value

mytag(1)=group1("pcl_tag2").value

............

mytag(599)=group1("pcl_tag600").value

for i=0 to 599'降序排列

    for j=i to 599

        if mytag(i)<mytag(j) then

           mymax=mytag(j)

           mytag(j)=mytag(i)

           mytag(i)=mymax

         end if

    next

next

for i=0 to 599'赋值

    tagname=tag&(i+1)

    group2(tagmane).value=mytag(i)

next

group2.write


以上脚本纯手打,难免有误,自己调试。

wincc画面上做600个io域分别链接incc内部变量tag1~tag600.就这600个变量放到一个画面上都要累死wincc了。

活到老,学到老!为了生活学习吧!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32569条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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