要通过MODBUS采集一个模块的数据,比如温度, 根据项目的不同,这个模块会传过来10个数据或者20个数据或者更多,按最多100个。
如果随着数据量的不同,每次都在实时数据库里增加或者删除数据对象,那就太麻烦了(比如原先做了个10个的变量,后来又来了个20个变量的项目那就得再加10个,然后再配置他的告警值之类的)。
现在想的是,我直接建立100个数据对象,都勾选上报警属性,然后把这100个对象编成组,勾选存盘属性,然后再做一个输入框,输入这个项目有多少个数据,然后再用脚本将其余的数据对象的告警取消掉(EnableAlm(DataName,AlarmIndex,n))。
但是发现没有函数可以将数据对象从组里剔除出去。这样存盘的时候还是会存100条。 有什么解决办法吗。或者各位有什么其他方法能实现我的需求吗?
楼主最近还看过
"天自" 的回复,发表在3楼
对内容: 【换个思路,PLC过来一直都是100个,你要传10个,就放10个真实数据,其它都是假数据,你要传20 就放20个真实的。其它假数据,数值设置成不会报警的数值。...】进行回复:
-----------------------------------------------------------------
感谢回答,是的。我目前是这么做的,但存盘时,一存就是100个(这个没关系),浏览历史时也是100个而不能10个,这个不行。不然客户肯定问,我就10个温度。你给我显示100个干嘛,虽然其余的90个都是0
"技术宅男" 的回复,发表在4楼
对内容: 【"天自" 的回复,发表在3楼 对内容: 【换个思路,PLC过来一直都是100个,你要传10个,就放10个真实数据,其它都是假数据,你要传20 就放20个真实的。其它假数据,数值设置成不会...】进行回复
-----------------------------------------------------------------
在画面循环脚本里用这个指令。窗口0.控件0.SetTrendVisible(1,0)意思就是把历史窗口,对应得曲线1隐藏,搞个循环,不用的都隐藏。窗口0.控件0.SetTrendVisible(1,1)需要的都打开。第一个1是曲线号设置成变量
"攀" 的回复,发表在2楼
对内容: 【我之前用MCGS做画面的时候,想要在运行过程中根据事件的不同实时修改画面内容,但是总会报错,我就打电话去问了MCGS的技术人员,对方表示暂时不支持这个功能。我想说的有两个第一,直接给厂家打电话,寻求技...】进行回复:
-----------------------------------------------------------------
设备是不支持这种功能,或者是不能直接做这种效果,但是我们可以走“捷径”来实现类似的功能。就像以前的FC游戏机,机能很弱,但是程序员用各种手段榨干机能,实现各种炸天的效果。