在300PLC中定义了30个DB块,每个DB是一个配方,共30个配方。每个DB块里还有大概400个变量,因此共1万多变量。
在wincc编程调用这些DB里的变量时,wincc中定义了1万多个外部变量。因此在编程赋值时超出了代码限制。
如果不使用wincc的配方功能,有没有其他办法能实现这些变量的赋值?
比如结构变量,能用在这儿吗?
赋值时,能使用函数或语句的办法能给变量批量赋值吗?而不是我现在一个个赋值的方法,导致我定义了1万个外部变量。
-------你可以定义一个公用db,包含你的配方参数和id参数,id的值为0~29,上位机直接给这个公共db赋值,然后plc中编程根据id的值的不同,把公共db中的配方数据保存到其他的私有配方db中,这样wincc和plc通讯的变量只要401个变量。
--------还应该建两个上传下载的中间标志位位变量,间接的变量不能一直写或者读。
如果想读配方的话,id就可以是正常范围了,然后plc中判断这个id的值为几,就把对应的配方值读到这个公共db中,wincc画面中io域链接这个公共db的变量。这个可以一直读的,不需要用边沿触发的功能。
-------应该是第一次上传将目标配方的值全部赋给间接变量上位机就看到了当前配方的值了,或者是在选择索引变化的时候触发上传一次,然后就是在所有的io域在输入完成时触发同一个下载标志位变量执行一次将当前间接变量的值赋给配方变量并且在下降沿时又要将当前配方的值反过来赋给中间变量这样写一次后要读它的当前值看有没有写成功,这样做不需要再做按钮单独上传下载了,另外也可以做两个按钮实现上传下载,每次更改配方后必须反向上传一次当前值确认修改了实际配方的值,如果用sfc20也可以判断它的返回值显示到wincc。
---------------谢谢您们的指导。
因为对wincc配方这块不熟悉,加上时间紧,所以采用了最笨最原始的方法。
有介绍里又说,数据不能断电保存,总是担心,所以就放弃了归档功能的使用了。
这方面的教材好像少了点。
用EXCEL表格?然后用什么方法读取写入?
-----用户归档的表格直接对应变量,很方便,下载传都可以
-----我抽空做一个发给你,你先看看,合适吗?
欢迎光临 工控编程吧 (https://www.gkbc8.com/) | Powered by Discuz! X3.4 |