如何在 SIMATIC HMI 面板和 SIMOTION 控制器之间同步时

n
操作指导:
通过外部变量实现 protool 和 simotion scout 之间的日期和时间同步。通过组态的变量,循环地从 simotion 读出系统时间并传送到 protool 中。通过脚本函数进行双向同步。
n
序号步骤1创建一个 simotion 项目:
日期和时间同步的首要要求是一个打开的项目,该项目带有 simotion 设备设置。n
图 01
n
注意事项:
通过“create new device”项目菜单向项目中添加一个或更多新设备。2在 simotion 中创建/导入一个结构化程序:
在项目菜单中,在“programs”文件夹中为创建的设备添加一个新的 st 程序。n
图 02
n
注意事项:
或者,也可以下载 uhr.zip 文件,通过弹出菜单(在“programs”上右击)导入解压缩后的文件“uhr.st”。在弹出菜单中选择“import external source”和“st source file”。n
图 03 3创建全局变量和程序:
全局变量用于在 protool 和 simotion scout 之间交换数据。可以借助于创建的 readclock 和 setclock 功能读取或设置系统时间。 n
图 04
n
注意事项:
readclock 和 setclock 功能是 rtc 类型。调用这些功能时,必须传递明确的参数以便可以执行相应的功能。可通过调用 cdt 方法读取当前的系统时间。
n
标识符参数数据类型描述setinputboolean设置时间,缺省值为 falsereadinputboolean读取时间,缺省值为 falsepdtinputdt实时时钟的设定值,缺省值为 dt#0001-01-01-00:00:00。如果 simotion 设备上的实际值小于缺省的实时时钟值,则实时时钟被设置为缺省值(例如,c320-2:dt#1994-01-01-00:00:00)。cdtoutputdt当前系统时间例子:
调用以下功能之后,便读取了系统时间,并通过 cdt 方法传递了当前时间:n
readclock( false, true, dt#2005-01-01-0:0:0 );
returnvalue = readclock.cdt;n
注意事项:
可通过“st source file > accept and compile”或点击下面的工具条图标检查结构化程序的语法错误。n
接受和编译4在运行系统中定义程序调用:
必须将在 simotion scout 中创建的或者被导入 simotion scout 中的程序,在执行系统中定义为后台任务。 n
通过在项目菜单上点击“execution system”并选择“executionlevels > operationlevels > backgroundtask”定义为后台任务。n选择“uhr.clock( )”程序,然后点击“add”按钮添加该程序。
图 05
n
随后,便可以编译 simotion 组态并将其传送到 simotion 设备。5在 protool 中创建一个 simotion 连接:
必须在 protool 中创建与 simotion 设备的连接。 n
通过在项目树(1)中双击一个新连接并选择“simotion v6.0”驱动程序创建“controllers”。在选择窗口中点击“parameters…”按钮(2)。n
“coect op to network”对话框随即打开,在该对话框中选择 profibus 子网(3),面板将作为硬件连接到该子网上。在选择域(4)“choose a communication peer/symbol list”中选择 simotion 设备。n
图 06
n
注意事项:
protool 不支持将区域指针“date/time plc”用于实现与 simotion 设备的时间同步,因为 protool 的“date_and_time”数据类型与 simotion 数据类型不同。6为时间同步添加变量:
在项目树中的“tags”下面创建所有必需的变量: n
uhr.setnuhr.time_panelnuhr.time_plc
图 07 7创建一个脚本: n
添加一个名称为“setpanelclk”的新脚本。n在 script editor 中创建六个脚本变量(second、minute、hour、day、month、year),使用合适的 vbs 功能(如:day、month 等),通过外部变量“uhr.time_plc”分配相应的时基。可通过(cmd)控制台使用 windows 中的操作系统函数“date”和“time”更改面板的系统时间。通过脚本函数“call”和“start_ptfct.program”调用 windows 控制台。n
图 08:脚本 – setpanelclk
n
注意事项:
根据选择位置的不同,必须选择点或者破折号作为详细数据中的分隔符。n
关于“start_program”功能的描述:
在 script editor 中,通过以一个点分开的标识符“ptfct”来指示用于 protool 功能的指令。“start_program”功能定义如下:n
ptfct.start_program (<progname>, <param>, <layout>, <wait>)
n
参数含义描述progname程序的名称包含程序名称的字符串常数或者变量param程序的参数包含程序参数的字符串常数或者变量layout显示选项0 = 窗口
1 = 最小化
2 = 最大化
3 = 最小化且不活动wait等待结束0 = 关闭
1 = 打开注意事项:
可以在 script editor 中通过点击“compile”按钮检查脚本的语法错误。8创建更多脚本:
创建第二个脚本并将其重新命名为“clk_sys_in_var”。n使用关键字“now”为已经创建的变量“uhr.time_panel”赋值。“now”功能将当前的系统日期和时间传递到面板或 pc。n
图 09:脚本 – clk_sys_in_var 9创建画面和对象:
创建两个按钮、两个日期-时间域,以及(可选)一个带有系统消息的报警视图作为新画面中的一个报警事件。 n
图 10
注意事项:
报警视图仅仅用作组态的辅助工具。此外系统消息(该系统信息必须已明确组态)将显示在该视图中,以指示 simotion 设备是否已经连接到面板。 10链接变量:
将上面的日期/时间域连接到以前创建的变量。在下面的日期/时间域中选择“system time”。 n
图 11 11将脚本链接到按钮:
在“time panel > cpu”按钮的 properties 属性的“functions > onclick”下链接“clk_sys_in_var”脚本。创建“set_bit”功能并链接“uhr.set”变量。使用与前面按钮同样的操作方式将第二个脚本“setpanelclk”链接至“time cpu > panel”按钮。
图 12 现在可以将组态传送到面板或者启动 pc 运行系统。
下载结构化的 simotion 程序:
该文件包含可被导入 simotion scout v3.2.1 的“uhr.st”文件。
uhr.zip ( 508 bytes )
下载样例项目:
压缩文件中包含了本操作指导中所述的 simotion protool 项目。protool 项目需要使用 protool 版本 v6.0 sp3。
simotion_protool.zip ( 450 kb )
可运行性和测试环境:
下表列出了创建本条目内容以及验证其功能所用的组件。
组件产品和版本pc 操作系统microsoft windowsxp sp2标准工具工程工具simotion scout v 3.2.1hmi 软件protool v6.0 sp3hmi 系统–simotion 设备c230关键词:
日期同步,时间同步