不管是否使用周期读服务,只要不使用加Wait的函数,则WINCC都是使用异步通信机制与PLC进行通讯。昨天,我做了一个实验,硬件环境为CPU314C-2DP,CP343-1,装有WINCC的笔记本。
首先正确组态,下载硬件。然后在WINCC中建立S7-TCP/IP连接,再建立30个TAG,类型为浮点型,地址分别为MD0、MD4、...MD120。在全局动作中编如下程序:
float i,j,k;
i=GetTagDouble("NewTag_1");
j=GetTagDouble("NewTag_2");
SetTagDouble("NewTag_21",i+j);
...
脚本中含如上代码共10个,全局动作采用周期性触发,触发周期设为1S。使用周期性服务,采用异步通信机制,第一次运行时间较长,为1594MS,说明映像区里没有数据,需要从PLC读取数据(并在映像区中进行了注册),以后整个脚本的运行时间基本为0MS(不是毫秒级的),运行速度非常快,WINCC根本没有直接与PLC进行通讯,只是从映像区中读取了数据。把周期性服务关掉,函数不加WAIT,第一次运行时间为1250MS,同样,说明映像区中没有数据,需要从PLC中读取数据(并注册),以后脚本的运行时间基本为16MS,运行速度也很快,但比周期性服务的要慢一些,说明采用周期性服务对于数据采集还是很有效果的。
给4个Get加上WAIT函数后,第一次执行时间为1672,呵呵,第一次执行,不管是同步还是异步执行时间都差不多,以后执行周期基本为600MS,说明加WAIT的函数后是同步通讯,执行时间明显加长。
管理员注:本帖已被纳入此次探讨发帖整理,请
点此详阅。