咸宁西门子一级代理商
问题:为什么PCS 7项目中OS上显示的当前报警时间和本地时间不一致,例如,计算机时间为14:16,而当前报警时间为22:16,如下图所示,偏差8个小时。该问题是如何造成的,又该如何解决?
回答:在标准的PCS 7项目中,程序产生的报警信息其时间均来自于控制器。如果控制器的时间设置不正确,例如,设置控制器时间时未考虑时区的问题,或者未做自动的时间同步功能,则会出现上述问题。
而在WinCC项目的下列计算机属性设置中,其默认控制器的时区为UTC(即GMT)时区,并在本地显示报警的时间时按照本地时区进行转换后显示(归档时仍然按照UTC时区归档)。
如果我们不考虑控制器和上位机之间的时区偏差问题,简单的设置控制器的时间和本地时间相同。则会有如下问题:例如,当前本地时间为早晨9:00,设置控制器的时间也为早晨9:00。则当前产生的报警时间来自于控制器,其也为早晨9:00,上传至WinCC后,由于WinCC的默认设置中(上图3)认为控制器为UTC时区,且按本地时区进行显示。其将会自动加上本地时区和UTC时区的时间偏差8小时后,进行显示。终显示的报警时间则为9:00+8=17:00点,和当前计算机时间不符。 当通过Simatic manager的plc Set time of day菜单手动对所选择的控制器进行时间设定时,必须注意时区偏差的问题,如下图所示。
在设置模板时间时,需要点击More按钮,加入相应的本地时区时间偏差后(例如,当前计算机设置时区为东八区,则设置时间偏差为+8小时),点击apply按钮设置控制器的时间。例如,当前本地计算机时间为早晨9:00(东八区),则控制器的时间应该设置为凌晨1:00才正确(UTC时间 = 当前时间 - 时区偏差)。这样设置后,则不会出现上述的类似问题了。 |
组态步骤 1. 在 SIMATIC Manager 中插入一个FB功能块,双击FB1打开此功能块。
3. 在 FB1 中选择结构变量aaa,单击右键打开 aaa 的关联菜单。打开 aaa 的 “Object Properties”。跳转到 “Attributes”标签,输入系统属性 “S7_m_c”。输入值“true”。单击 “OK”保存设置。
注意:在“Attributes”标签中,可以看到一个系统属性 “S7_xm_c”,此属性在普通的OS项目中没有任何意义,此功能是针对于PCS7项目增加的功能。
4. 在 SIMATIC Manager中创建一个OB1功能块,双击打开OB1,在程序中调用FB1并且设置背景数据块为DB1。
5. 在SIMATIC Manager 中选择 DB1,单击右键打开 DB1 的关联菜单。打开 DB1 的 “Object Properties”。跳转到 “General – Part1” 标签,在“Symbolic Name”中输入ddd并点击“OK”保存设置。
6. 在SIMATIC Manager 中选择 DB1,单击右键打开 DB1 的关联菜单。通过 “Special Object Properties > Operator Control and Monitoring...” 打开 DB 的 OC&M 属性。启用 “Operator Control and Monitoring”选项框并单击 “Save”保存设置。
7. 在 SIMATIC Manager 中选择 DB1,单击右键打开 DB1 的关联菜单。打开 DB 的 “Object Properties”。跳转到 “Attributes” 标签,输入系统属性 “S7_m_c”。输入值 “true”。单击 “OK”保存设置。
8. 在 SIMATIC Manager 中选择 OS站,单击右键打开 OS站 的关联菜单。打开 OS站 的 “Compile”,点击“Next”打开项目选择界面,选择要关联的plc程序如下图,再点击“Next”两次,后点击“Compile”完成项目编译。
9. 在 SIMATIC Manager 中打开 OS项目,在WinCC项目树中展开结构变量,可以看到PLC程序中的FB1已经被编译过来了。
10. 在WinCC变量管理器“SIMATIC S7 PROTOCOL SUITE—TCP/IP”下可以看到编译过来的S7连接,在S7连接里可以看到编译过来的FB1中的结构变量。
声 明 目前PLC程序块中的复杂数据类型的编译功能,只支持结构变量的编译,而数组和UDT数据类型目前还不支持,因为在数组和UDT类型变量的属性中没有“S7_m_c”这个参数,无法进行编译。
|