SIEMENS湖北省宜昌市西门子(授权)中国总代理-西门子华中地区一级总代理商

供应商
湖南西控自动化设备有限公司
认证
联系电话
15344432716
手机号
15386422716
销售顾问
杨本刚
所在地
中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
更新时间
2024-06-19 08:50

详细介绍

对于全局脚本中使用的变量,我觉得使用wait函数会更好些,是因为如果不使用wait函数,在整个wincc的运行期间都都要占用周期性服务资源。而s7300的周期性资源只有4个,如果被全局脚本终始占用了一到两个,我觉得浪费很大,对于多台上位机运行的时候,这样势必使得使得周期性资源被占用太多,通讯效率有很大的降低。再说使用wait功能只要执行时间不超过脚本的触发周期,也没有问题。

呵呵,wincc映像区中注册的变量越多,wincc执行的负荷应该就越重,我觉得有时候不是通讯问题造成wincc速度慢,因为这点通讯量对于以太网或者dp来说根本不是问题。

wincc的 c 和 vbs脚本的使用非常灵活,可以大大加强wincc的各种功能,但若使用不当,确实会产生一些通讯问题。

有些不得不用脚本情况下,要谨慎使用,并多加注意即可:

首先,要了解 c 和vb 脚本的“排队”执行和堵塞的特性。但好在 c和vb脚本又有各自不同的“队列”,一定程度上实现了“多线程”的效果,所以可以有意识的将不同的任务分别放在c或vb脚本中执行,比如:一个按钮的vbs执行数据库读写,另一个按钮c脚本执行ui处理,当vbs数据库读写任务较重时,而按钮的c脚本通常不会被其堵塞。

其次,要了解常用的gettag系列函数的执行特性,具体如下:

问题:各种gettag和settag函数之间有什么差别?

解答:

在wincc的全局脚本里有几种函数专门是用来提取(gettag 函数)和设置函数值(settag函数)的。

这里的列表给出了不同的函数及它们的功能:

settag 函数:

settagxxx

此函数给作业赋予一个值去写,然后立即返回到调用函数。它并不等到值实际写好后再返回。

该调用的明显特点是:

此调用比较快。

调用函数并不清楚这个值实际是在何时写的。

该函数也不提供写作业状态的有关信息。

settagxxxwait

此函数给作业赋予一个值去写,但是只有当值已经写好后才返回到调用函数。

该调用的明显特点是:

该调用慢于settagxxx。其实际速度取决于通道和plc的其它因素。

调用后值已经实际写好。

该函数不提供写作业状态的有关信息。

settagxxxstate

此函数具有settagxxx相同的特点。另外,settagxxxstate函数还提供写作业的状态的信息。由于状态永远是内部提供的,故相比于settagxxx性能上没有什么差别。

settagxxxstatewait

此函数具有与settagxxxwait相同的特点。但是settagxxxstatewait函数还提供了写作业的状态信息。由于状态永远是内部提供的,故相比于settagxxxwait性能上没有什么差别。

settagxxxstatewait与settagxxxstate这两个函数间的差别与settagxxxwait与settagxxx这两个函数间的差别相对应。注意:当写过程结束时只能给出某些状态。

settagmultiwait

此函数的特点与settagxxxwait相同。但是它也提供在一个作业里发出多个写作业的选件。

gettag 函数:

gettagxxx

当此函数被调用时变量被注册下来。然后变量受到plc的周期性请求。注册的周期取决于触发器(参看下面的叙述)。使用gettagxxx调用,提供了wincc中的可用值。取消了对图像的选择后,变量被再次注消。

注意:

如果变量在一个全局脚本动作里被请求,那么它将对wincc的整个运行系统保持注册状态。

在回调函数里你必须使用相应的gettagxxxwait函数。

变量触发器的动作特点

在规定的监控时间里选择图像那一刻,变量触发器里包含的所有变量已经注册。如果触发器里包含了被请求的变量,那么它的值已经可用并直接传送到调用。

注意:

如果被请求的一个变量不包含在变量触发器中,则其动作将与标准触发器一样。

标准变量触发器的动作特点

第一次调用时,变量在半个周期时间里被注册。其值对于后续的每个调用都可用。

事件触发动作的特点

对于第一次调用,“当被修改后”变量被注册。对于过程变量,其计时过程的管理取决于通道(缺省为1秒)。

注意:

如果在鼠标单击事件背后由函数gettagxxx请求一个值,那么变量被注册,而且该变量自此之后被plc周期性的请求。这增加了基本负荷。因此必须考虑是否用gettagxxxwait请求值更好(只有一次高通讯负荷),也可因之避免注册(增加基本负荷)。

gettagxxxwait

变量不注册。值仅仅被plc请求一次。

此调用有下述特点:

此调用相比与gettagxxx用的时间要长。其延续时间由通道和plc决定。

当前值取自plc。

该函数不提供变量状态的任何信息。

gettagxxxstate

此函数具有与gettagxxx相同的特点。但是gettagxxxstate函数另外还提供变量状态的信息。由于状态永远是内部提供的,故相比于gettagxxx性能上没有什么差别。

gettagxxxstatewait

此函数具有与gettagxxxwait相同的特点。但是gettagxxxstatewait函数另外还提供变量状态的信息。由于状态永远是内部提供的,故相比于gettagxxxwait性能上没有什么差别。

gettagxxxstatewait与gettagxxxstate函数的差别对应于gettagxxxwait和gettagxxx函数将的差别。注意,由于过程变量的值是从plc读得,它的状态要比gettagxxxstate给出的状态要更新一些。

gettagmultiwait

此函数具有与gettagxxxwait相同的特点。但是它也提供在一个作业里请求多个变量的选件。)

另外,wincc还提供了脚本中高效数据交换(批量读写)的函数和方法:gettagmultiwait/settagmultiwait(vbs中的tagset)和原始数据类型 rawdata。

其中gettagmultiwait是同步方式,可以一次读取上百个不同类型的wincc变量(不是数组),而所花费的时间却和gettagwait函数调用一次的时间差别不明显,优化效果极为显著。

而wincc的原始数据类型rawdata大家都比较熟悉了,以数组方式和plc交换数据,优点:数据量大,缺点:无法直接在画面等处直接使用,需要脚本拆解。



展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话