恭喜,你发布的帖子
发布于 2017-12-24 17:08:55
39楼
在项目中用过这类得方法。结果后期修改程序时太麻烦。有下列几个大坑。
坑1:DB块有64KB得大小,数据多了需要分DB处理。含义就是下列
// 量程上限 REAL
// 量程下限 REAL
// 修正偏差 REAL
无法存储足够得数量。
坑2:不断得循环处理双极型及报警,浪费CPU资源。
坑3:一次扫描只能处理一个通道,处理完全部通道需要1000个扫描周期。
坑4:既然使用SCL处理通道,就不要在乎复制粘贴了。
坑5:单独增加一个,或删除无法做到。
直接向下列方式处理,不是更好??
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
SCALE(IN := PIW256 ,I_LIM :=100.0,LO_LIM := 0.0,BIPOLAR := 1 ,OUT := DB1.dd0); //备注
用的是FOR循环所以是一个扫描周期,不是多个扫描周期!需要注意的是一个扫描周期要大于这个FOR循环周期,置于你要增加和删除一个并不影响程序,因为大程序的PIW都是连续的,你只是改了DB块而已而DB可以用EXCEL生成根本就不是问题,若没接线的通道作为备用,若要用到就使用该变量就可以了,说穿了,你的硬件组态好了里面的通道地址就确定了,你再改啥也最多挪个通道而已。你说的64K限制这个是有的,但是你算算64KB得能处理多少个数了。。不够用多使用几个DB就可以了。你说的复制粘贴代码,你的是思路是每次要去改代码,我的思路是我只改数据而不动代码。再有就是你即使复制粘贴就不浪费块的大小么?若多了你要复制多少?而且一个块的大小也是有限制的。当然你看的这个批量处理程序只是我其中的一个,你可以再看看我的另外的一篇文章,将转换后的值单独放在另外的DB块当中的程序。(可以将我的另一个批处理改为FC),还一个个粘贴早就过时了。批量处理是该程序的核心价值。不喜就算了哈,只是发给大家参考交流的。
请填写推广理由:
分享
只看
楼主