Siemens-AutomationandDrives-Service&Support-AutomationServ...第1页共4页2005-05-293:14自动化系统SIMATICHMI人机界面HMI软件SCADA系统SIMATICWinCCSIMATICWinCC常规常问问题WinCC和S7之间的时间同步订货号:6AV637..WINCCSIMATICHMISOFTWARE6AV638..WINCCSIMATICHMISOFTWARE26ES765..SIMATICPCS7问题:如何进行WinCC和S7之间的时间同步?回答:下面的方法只能进行时间设置而不能完成时间同步的功能。因为必须考虑到延迟,比如报文的处理时间,C脚本的运行时间等,因此这个方法在精度方面不如真正的时间同步精确。注意:通过ProcessAutomationProcesscontrolSystemsSIMATICPCS7OperatingStationsGeneral,可以找到关于使用SIMATIC缺省工具来同步系统时钟的信息。创建一个数据块(在本例中是DB1),其中有一个DATE_AND_TIME类型的变量和一个布尔变量。/li1.图1:创建DB1当元素Flag在WinCC中被置1,程序就调用系统函数SFC0SET_CLK。此例中,DB1中的触发变量Flag(DB1.DBX8.0)在WinCC脚本中被SetTagBitWait(DB1_FLAG,TRUE)(参见第4步)置1。因此仅当此C脚本在WinCC中被调用时,时间才被设置。SFC0必须先添加到Step7程序的块文件夹中。/pSiemens-AutomationandDrives-Service&Support-AutomationServ...第2页共4页2005-05-293:14图2:在STL中调用SFC0在此段程序中,DB块中的各个时间变量被写到作为SFC0参数的DATE_AND_TIME类型的本地变量DateAndTime中。用SET_CLK设置完时钟后,触发变量Flag被复位。注意:在此段程序中,本地变量DateAndTime存储在以0为起始地址的本地数据堆栈中。如果不得已要把这个变量分配到别的地址,同时对传送指令参数化时,必须要考虑到地址分配的问题。(见图2)。2.为“年”新建一个Unsigned8-bitvalue类型的变量,对其进行格式变换ByteToBCDByte,然后为其在DB块中选择相应的字节地址:Siemens-AutomationandDrives-Service&Support-AutomationServ...第3页共4页2005-05-293:14图3:在WinCC变量管理器中创建变量DB1_YEAR在WinCC中创建剩下的变量。选择Unsigned16-bitvalue类型然后改变格式为WordToBCDByte,然后在DB块中选择实际的字节地址。在本文最后的例子脚本中,可以看到剩下的变量起了什么样的名字。Siemens-AutomationandDrives-Service&Support-AutomationServ...第4页共4页2005-05-293:14图4:在WinCC变量管理器中创建剩下的变量最后,在WinCC中创建一个C脚本来读取系统时间并进行拆分,然后把它们写到DB1中。在例子中这段脚本通过点击按钮来调用。这段脚本也可放在全局脚本中被定时触发器循环调用。S7PLC中的时钟设置是被脚本中的DBI_FLAG变量触发的。4.C-ScriptinWinCC(27KB)注意:SetTagMultiWait这个函数可以把多条写命令合并成一条写命令。有关SetTagMultiWait的用法可以在WinCC的在线帮助中找到。重要信息:此例程是免费的,任何用户可以都使用。此例程的作者和托管者对此例程的运行性能和兼容性不负任何责任。用户自己承担使用风险。因为是免费软件,所以无法获得任何担保、错误更正以及热线支持。关键字:时间校准,设置时间条目号:7802886日期:02/16/2005©SiemensAG2005版权所有-法人信息-保密政策-应用条款