S7-1200的Web 服务器 编程手册

2018年6月23日07:11:41 发表评论 197 阅读
文章目录[隐藏]

S7-1200 的 Web 服务器允许用户通过 Web 页面来访问 CPU 的相关数据以及 CPU 中的过程数据。

标准 Web 页面

S7-1200 包含可 通过 PC 的 Web 浏览器进行访问 (页 543)的标准 Web 页面:

  • 简介 (页 547) - 标准 Web 页面的进入点
  • Start Page (页 548) - 有关 CPU 的常规信息
  • Identification (页 549) - 有关 CPU 的详细信息,包括序列号、订单号和版本号
  • Module Information (页 550) - 有关本地机架中的模块的信息
  • Communication (页 553) - 有关网络地址、通信接口的物理属性和通信统计的信息
  • Diagnostic Buffer (页 549) - 诊断缓冲区
  • Variable Status (页 554) - CPU 变量和 I/O,可通过地址或 PLC 变量名称进行访问
  • Data Logs (页 556) - 存储在 CPU 内部或存储卡中的数据日志文件
  • 更新固件 (页 559) - 更新 CPU 中的固件

这些页面内置于 S7-1200。有关标准 Web 页面以及如何对其进行访问的详细信息,请参见 标准 Web 页面 (页 543)部分。

用户定义的 Web 页面

S7-1200 还支持您创建可访问 CPU 数据的用户定义的 Web 页面。 可以使用所选的

HTML 创作软件来开发这类页面,并且可将预定义的“AWP”(Automation Web Programming,自动化 Web 编程)命令包含在 HTML 代码中以访问 CPU 数据。 有关开发用户定义的 Web 页面以及在 STEP 7 中进行相关组态和编程的具体信息,请参见 用户定义的 Web 页面 (页 561)一章。

11.1 启用 Web 服务器

Web 浏览器要求

以下 Web 浏览器支持 Web 服务器:

  • Internet Explorer 8.0 或更新版本
  • Mozilla Firefox 3.0 或更新版本
  • Opera 11.0 或更新版本

有关可干扰标准或用户定义的 Web 页面显示的浏览器相关的限制,请参见 限制 (页 601)

部分。

    1. 启用 Web 服务器

在 STEP 7 中,通过“设备组态”(Device Configuration) 为要连接的 CPU 启用 Web 服务器。

要启用 Web 服务器,请按以下步骤操作:

      1. 在设备组态视图中选择 CPU。
      2. 在巡视窗口中,从 CPU 属性中选择“Web 服务器”(Web server)。
      3. 选中“在该模块上启用 Web 服务器”(Enable Web server on this module) 复选框。
      4. 如果需要对 Web 服务器进行安全访问,请选中“仅允许使用 HTTPS 访问”(Permit access only with HTTPS) 复选框。

S7-1200的Web 服务器  编程手册-1

警告

未经授权访问 CPU 或将 PLC 变量更改为无效值可能会中断过程操作并可能导致死亡、严重人身伤害和/或财产损失。

由于启用 Web 服务器可让“admin”用户执行操作模式更改、写入 PLC 数据以及进行固件更新,Siemens 建议遵照以下安全实践:

  • 只使用 HTTPS 协议启用对 Web 服务器的访问权限。
  • 使用可靠的密码 对 CPU 进行密码保护 (页 166)。 可靠的密码在长度上至少为八个字符,可以是字母、数字和特殊字符的组合,不能是可在字典上找到的词,并且不能是可从个人信息推断出的名字或标识符。 保管好密码并经常更改密码。
  • 对程序逻辑中的变量执行错误检查和范围检查,因为 Web 页面用户可将 PLC 变量更改为无效值。

下载设备组态后,可使用标准 Web 页面访问 CPU。 如果针对“自动更新”(Automatic

update) 选择了“启用”(Enable),则标准 Web 页面每十秒刷新一次。

如果创建了用户定义的 Web 页面,则可通过标准 Web 页面菜单访问这些页面。

说明

如果正在 “在 RUN 模式下进行下载” (页 746),那么在下载完成之前,标准和用户定义的

Web 页面不会更新数据值,也不允许写入任何数据值。 下载期间,进行的任何写入数据值尝试都将被丢弃。

标准 Web 页面

通过 PC 访问标准 Web 页面

要通过 PC 访问 S7-1200 的标准 Web 页面,请按以下步骤操作:

        1. 请确保 S7-1200 和 PC 位于同一个以太网中,或二者之间直接使用标准以太网电缆进行连接。
        2. 打开 Web 浏览器,输入 URL“http://ww.xx.yy.zz”,其中“ww.xx.yy.zz”与 S7-1200 CPU

的 IP 地址相对应。

Web 浏览器将打开“简介”(Introduction) 页面。

说明

如果 Internet 访问不允许直接连接到 IP 地址,请咨询 IT 管理员。 Web 环境或操作系统可能造成其它 限制 (页 601)。

也可将 Web 浏览器设置为指向特定的标准 Web 页面。 为此,应输入

“http://ww.xx.yy.zz/<页面>.html”形式的 URL,其中 <页面> 为以下标准 Web 页面之一:

  • start (页 548) - 有关 CPU 的常规信息
  • identification (页 549) - 有关 CPU 的详细信息,包括序列号、订单号和版本号
  • module (页 550) - 有关本地机架中的模块的信息
  • communication (页 553) - 有关网络地址、通信接口的物理属性和通信统计的信息
  • diagnostic (页 549) - 诊断缓冲区
  • variable (页 554) - CPU 变量和 I/O,可通过地址或 PLC 变量名称进行访问
  • datalog (页 556) - 存储在 CPU 内部或存储卡中的数据日志文件
  • updatefirmware (页 559) - 能够通过文件更新 CPU 中的固件的页面
  • index (页 547) - 进入标准 Web 页面的简介页面

例如,如果输入“http://ww.xx.yy.zz/communication.html”,浏览器将会显示通信页面。

安全访问

可以使用 https://(而不是 http://)对标准 Web 页面进行安全访问。 使用 https:// 连接到S7-1200 时,网站将通过数字证书对会话进行加密。 数据将安全传输,而不会被任何人看到。 通常,您会收到安全警告,可以按“是”(Yes) 继续浏览标准 Web 页面。 要避免每次安全访问时都出现安全警告,可以 将 Siemens 软件证书导入 Web 浏览器 (页 603)。

标准 Web 页面的布局

每个标准 Web 页面的布局均相同,都具有如下所示的导航链接和页面控件:

S7-1200的Web 服务器  编程手册-2 S7-1200的Web 服务器  编程手册-3 S7-1200的Web 服务器  编程手册-4 S7-1200的Web 服务器  编程手册-5 S7-1200的Web 服务器  编程手册-6 S7-1200的Web 服务器  编程手册-7

1

2

3

4 5

6

7

① Web 服务器标题

② 登录或注销

③ 包含您正在查看的页面的名称的标准 Web 页面标题。 本示例为 CPU 的

Identification 页面。 有些标准 Web 页面(如模块信息页面)还会在此处显示导航路径,前提是您可以访问该类型的多个画面。

④ 刷新图标: 对于具有自动更新功能的页面,可用来启用或禁用自动更新功能;对于不具有自动更新功能的页面,可以使页面用当前数据进行更新

⑤ 打印图标: 准备并显示所显示页面提供的信息的可打印版本

⑥ 用来切换到其它页面的导航区

⑦ 正在查看的特定标准 Web 页面的内容区域。 本示例为 CPU 的 Identification 页面。

说明

打印标准 Web 页面

打印标准 Web 页面内容时请注意,打印的内容有时可能与显示的页面不同。 例如,“诊断缓冲区”(Diagnostic buffer) 页面的打印件可能包含并未显示在该页面上的新诊断条目。如果未启用自动刷新,显示出的内容是最初显示页面时的诊断事件,而打印件包含的内容则是执行打印功能时的诊断事件。

登录

查看标准 Web 页面中的数据不需要进行登录。 要执行特定操作(如更改控制器的操作模式或向存储器写入值以及更新 CPU 固件),必须以“admin”用户的身份登录。

S7-1200的Web 服务器  编程手册-8 登录框位于每个页面的左上角附近。

要以“admin”用户的身份登录,请按以下步骤操作:

        1. 在“名称”(Name) 字段中输入“admin”。
        2. 如果在 Password 域中组态了 CPU 密码,应输入 CPU 密码;否则,按 Enter 键。现在,您便以“admin”用户的身份登录。
S7-1200的Web 服务器  编程手册-9警告
未经授权访问 CPU 或将 PLC 变量更改为无效值可能会中断过程操作并可能导致死亡、严重人身伤害和/或财产损失。

由于启用 Web 服务器可让“admin”用户执行操作模式更改、写入 PLC 数据以及进行固件更新,Siemens 建议遵照以下安全实践:

  • 只使用 HTTPS 协议启用对 Web 服务器的访问权限。
  • 使用可靠的密码 对 CPU 进行密码保护 (页 166)。 可靠的密码在长度上至少为八个字符,可以是字母、数字和特殊字符的组合,不能是可在字典上找到的词,并且不能是可从个人信息推断出的名字或标识符。 保管好密码并经常更改密码。
  • 对程序逻辑中的变量执行错误检查和范围检查,因为 Web 页面用户可将 PLC 变量更改为无效值。

如果在登录时遇到错误,返回 “简介”(Introduction) 页面 (页 547),然后 下载 Siemens 安全证书 (页 603)。 随后便可成功登录。

注销

S7-1200的Web 服务器  编程手册-10 要注销“admin”用户,只需单击任意页面的“注销”(Log out) 链接。

也可以在未登录的情况下继续访问和查看标准 Web 页面,但不能执行仅限于“admin”用户的操作。 每个标准 Web 页面说明都定义了需要以“admin”身份登录才能执行的操作(如果有)。

简介

“简介”(Introduction) 页面是进入 S7-1200 标准 Web 页面的欢迎画面。

S7-1200的Web 服务器  编程手册-11

在该页面中单击“Enter”可访问 S7-1200 标准 Web 页面。 屏幕上方是有用的 Siemens

Web 网站的链接以及 下载 Siemens 安全证书 (页 603)的链接。

Start

Start 页面显示所连接 CPU 的图示,并列出有关 CPU 的常规信息。 如果以“admin”用户的身份登录,还可以更改 CPU 的操作模式并使 LED 闪烁。

S7-1200的Web 服务器  编程手册-12 S7-1200的Web 服务器  编程手册-13 S7-1200的Web 服务器  编程手册-14

1

2

① 和② 仅当您以“admin”用户的身份登录时,才会在“启动”(Start) 页面上显示用于使

LED 闪烁以及更改操作模式的按钮。

Identification

Identification 页面显示 CPU 的标识特性:

  • 序列号
  • 订货号
  • S7-1200的Web 服务器  编程手册-15 版本信息

“标识”(Identification) 页面与您是否以“admin”身份登录无关。

Diagnostic Buffer

Diagnostic Buffer 页面会显示诊断事件。 可以从选择器中选择要显示的诊断缓冲区条目范围(1 到 25 或 26 到 50)。页面的顶部会显示这些条目以及事件发生时对应的 CPU 时间和日期。 时间为来自 CPU “时间”(Time of day) (页 87) 的系统时间。

可以从页面顶部选择任何单独的条目,以在页面底部显示有关该条目的详细信息。

S7-1200的Web 服务器  编程手册-16

“诊断缓冲区”(Diagnostic buffer) 页面与您是否以“admin”身份登录无关。

模块信息

Module Information 页面提供有关本地机架中所有模块的信息。 屏幕顶部显示模块的摘要,屏幕底部显示所选模块的状态和标识。

状态显示

S7-1200的Web 服务器  编程手册-17

标识显示

S7-1200的Web 服务器  编程手册-18

深入展开

可以选择顶部的链接来深入展开特定模块的模块信息。 具有子模块的模块包含每个子模块的链接。 显示的信息类型会根据所选模块的不同而异。 例如,模块信息对话框最初会

S7-1200的Web 服务器  编程手册-19对域排序

显示 SIMATIC 1200 站的名称、状态指示灯和注释。 如果深入展开 CPU,模块信息将显示 CPU 型号提供的数字量和模拟量输入输出的名称(例如“DI14/DO10”和“AI2”)、I/O 地址信息、状态指示灯、插槽号和注释。

S7-1200的Web 服务器  编程手册-20

在深入展开的同时,模块信息页面会显示访问的路径。 可以单击该路径中的任意链接返回到更高级别。

S7-1200的Web 服务器  编程手册-21

过滤模块信息

如果列表显示多个模块,则可单击域的列标题,以按该域对列表进行升序或降序排列。

可以过滤模块信息列表中的任何域。 从下拉列表中选择要过滤数据的域名称。 在相关文本框中输入文本并单击 Filter 链接。 列表会进行更新,以显示与过滤标准相对应的模块。

状态信息

Module Information 页面底部的 Status 选项卡显示顶部所选模块的当前状态的说明。

Identification

Identification 选项卡显示所选模块的序列号和修订版本号。

“模块信息”(Module Information) 页面与您是否以“admin”身份登录无关。

Communication

Communication 页面显示所连 CPU 的参数以及通信统计数据。 Parameter 选项卡显示

CPU 的 MAC 地址、CPU 的 IP 地址和 IP 设置以及物理属性。 Statistics 选项卡显示发送和接收通信统计数据。

Communication: Parameter 显示

S7-1200的Web 服务器  编程手册-22

Communication: Statistics 显示

S7-1200的Web 服务器  编程手册-23

“通信”(Communication) 页面与您是否以“admin”身份登录无关。

Variable Status

Variable Status 页面允许您查看 CPU 中的任何 I/O 或存储器数据。 可以输入直接地址

(如 I0.0)、PLC 变量名或特定数据块的变量。 对于数据块变量,应使用双引号将数据块名称括起来。 可以为每个监视值选择数据的显示格式。 可以继续输入和指定值,只要所需值的数量不超过页面的限制。 默认情况下,会自动显示监视值并进行刷新,除非您单击页面右上方区域的“Off”图标。 如果已禁用刷新,则可单击“On”重新启用自动刷新。

以“admin”身份登录时,还可以修改数据值。 在相应的“Modify Value”域中输入任何要设置的值。 单击值旁边的“Go”按钮将该值写入 CPU。 还可以输入多个值,然后单击“Modify All Values”将所有值写入 CPU。

S7-1200的Web 服务器  编程手册-24 S7-1200的Web 服务器  编程手册-25

1

① 仅当以“admin”用户的身份登录时,才能看到和访问“修改值”(Modify Value) 功能。

如果离开“Variable Status”页面然后返回,则“Variable Status”页面不会保留您的输入内容。 可以为页面加书签,然后返回该书签,这样便可看到相同的条目。 如果不为页面加书签,则必须重新输入变量。

说明

使用标准的“变量状态”页时,请注意以下问题:

  • “变量状态”页不允许用户修改超过 198 个字符的字符串。
  • 使用指数表示法在“变量状态”页输入 Real 或 LReal 数据类型的值时:
    • 要输入具有正指数(如 +3.402823e+25)的实数值(Real 或 LReal),请按以下格式之一输入值:

+3.402823e25

+3.402823e+25

    • 要输入具有负指数(如 +3.402823e-25)的实数值(Real 或 LReal),请按如下形式输入值:

+3.402823e-25

    • 确保指数表示法实数值的尾数部分包含小数点。 不包含小数点将导致值被改为意外的整数值。 例如,请输入 -1.0e8,而不是 -1e8。
  • “变量状态”页只支持输入 15 位数的 LReal 值(小数点位置不限)。 输入 15 位以上的值会导致舍入错误。

“变量状态”页的限制:

  • 每页可输入的最大变量数为 50。
  • 与 Variable Status 页面对应的 URL 的最大字符数为 2083。可以在浏览器的地址栏中查看表示当前变量页面的 URL。
  • 对于字符显示格式,如果实际 CUP 值不是浏览器所解释的有效 ASCII 字符,则页面会显示十六进制值。

说明

如果某个变量名称因包含特殊字符而被拒绝作为“变量状态”(Variable Status) 页面上的条目,则可用双引号将该变量名括起来。 大多数情况下,“变量状态”(Variable Status) 页面随后便能识别该变量名称。

Data Logs

Data Logs 页面允许您查看或下载指定数目的数据日志条目。 以“admin”身份登录时,还可以在下载之后清空或删除这些条目。 Web 服务器会以逗号分隔值 (CSV) 文件格式将数据日志下载到您的 PC。

“数据日志”(Data Logs) 页面最多显示 40 个数据日志文件。 如果存在 40 个以上的数据日志文件,“数据日志”(Data Logs) 页面将显示前 40 个最先创建的文件。

说明

数据日志时间戳显示为系统时间,而不是本地时间

CPU 在 系统时间 (页 87)中写入数据日志条目的时间戳并且 Web 服务器的“数据日志”(Data Logs) 页面显示采用系统时间的数据日志的时间戳。

S7-1200的Web 服务器  编程手册-26 S7-1200的Web 服务器  编程手册-27 S7-1200的Web 服务器  编程手册-28

1

2

① 如果未以“admin”用户的身份登录,则“下载并清除”(Download & Clear) 选项不可用。

② 如果未以“admin”用户的身份登录,则“删除”(Delete) 选项不可用。

说明

数据日志文件采用 USA/UK 的逗号分隔值格式 (CSV)。 要在非 USA/UK 系统上的 Excel

中打开该文件,必须 采用特定设置将其导入 Excel 中 (页 604)。

最新条目: 下载指定数量的最新数据条目

设定要下载的最新条目的数目,然后单击数据日志名称以开始下载指定数目的记录。 在输出 .csv 文件中,会按条目的降序对数据条目进行排序。 Windows 会提示您打开或保存日志文件。

默认情况下,要查看的最新条目数默认设置为 25。 您可以在“要查看的最新条目

数”(Number of recent entries to view) 字段中更改该值,方法是输入所需的值,也可以使用“+”或“-”按钮来递增或递减该值。

说明

DataLogCreate (页 339) 指令的 Records 参数定义每个数据日志文件的最大条目数。

下载包含所有数据条目的日志文件

要下载整个日志文件,请单击特定日志文件对应的“下载”(Download) 图标。 Windows 会提示您打开或保存日志文件。

在输出 .csv 文件中包含所有数据条目,并且会按条目编号的升序进行排序,但数据日志已满或旧条目(编号较低的条目)被新条目(编号较高的条目)覆盖的情况除外。

下载和清空日志文件

要下载日志文件,然后清除所有数据条目,必须以“admin”用户的身份登录。 然后单击特定日志文件对应的“下载并清空”(Download & Clear) 图标。 Windows 会提示您打开或保存日志文件。

下载完成后,将在 PLC 存储的数据日志文件的标题条目之后插入新的“//END”行。 这样可以有效清空数据日志供将来内部 PLC 处理之用,但对该文件的后续下载会在第一个

“//END”行上方插入新数据条目。

说明

数据日志 .csv 文件“//END”标记

“//END”.csv 文件结束标记仅用于前(最大条目数 - 1)个条目,以标识文件的逻辑结束位置。 逻辑结束标记之后,文件可能会包含被 Excel 解释为附加数据条目的数据。 应搜索第一个“//END”,然后删除它及其后的所有条目。 如果不存在逻辑结束标记,可以通过条目编号对数据行进行排序。

删除日志文件

要删除日志文件,必须以“admin”用户的身份登录。 然后单击特定日志文件对应的“删除”(Delete) 图标。 Web 服务器随后便会删除所选的日志文件。

更多信息

有关如何使用数据日志指令进行编程的信息,请参见 数据记录 (页 338)一章。

更新固件

“更新固件”(Update Firmware) 页面可让“admin”用户通过文件更新 CPU 固件。

说明

只能使用“更新固件”(Update Firmware) 功能更新版本 3.0 及更高版本的 S7-1200 CPU。

Web 服务器使用“https”协议执行固件更新。

CPU 必须处于 STOP 模式下才能执行固件更新。 如果 CPU 尚未处于 STOP 模式下,

Web 服务器会提示将 CPU 切换为停止模式。

S7-1200的Web 服务器  编程手册-29

当 CPU 处于 STOP 模式下时,可导航至某个文件并选择该文件,从中加载固件版本更新。 固件更新可在客户支持网站 (http://support.automation.siemens.com/CN)上使用。在从网站将相应固件更新下载到计算机后,就可在计算机上浏览至某个文件并选择该文件进行更新。

S7-1200的Web 服务器  编程手册-30

在更新期间,“更新固件”(Update Firmware) 页面会显示消息,表明更新正在进行。 在更新完成后,“更新固件”(Update Firmware) 页面会显示更新的固件的订货号和版本号,并提示您确认是否重启 CPU。

S7-1200的Web 服务器  编程手册-31

如果在十分钟内未做出响应,CPU 将会自动重启。

S7-1200的Web 服务器  编程手册-32

用户定义的 Web 页面

S7-1200 Web 服务器还提供了一些方法,供您创建可融入 PLC 数据的应用特定的 HTML 页面。 可以选择相应的 HTML 编辑器来创建这些页面,然后从可通过标准 Web 页面菜单访问的位置将这些页面下载到 CPU。 该过程涉及到以下几项任务:

  • 使用 HTML 编辑器(如 Microsoft Frontpage)创建 HTML 页面。 (页 562)
  • 将 AWP 命令包含在 HTML 代码的 HTML 注释中 (页 563):AWP 命令是 Siemens 提供用于访问 CPU 信息的固定命令集。
  • 将 STEP 7 组态为读取和处理 HTML 页面 (页 577)
  • 基于 HTML 页面生成块 (页 577)
  • 对 STEP 7 进行编程设计,以控制 HTML 页面的使用 (页 579)
  • 编译程序块并将其下载到 CPU (页 580)
  • 通过 PC 访问用户定义的 Web 页面 (页 581)

该过程的图示如下:

S7-1200的Web 服务器  编程手册-33 S7-1200的Web 服务器  编程手册-34 S7-1200的Web 服务器  编程手册-35

1

① 具有嵌入式 AWP 命令的 HTML 文件

创建 HTML 页面

可以根据需要使用软件包来创建自己的用于 Web 服务器的 HTML 页面。 请确保 HTML 代码符合 W3C(万维网联盟)的 HTML 标准。 STEP 7 不会对 HTML 语法进行任何验证。

可使用能够以所见即所得或设计版式模式进行设计的软件包,但是必须能够在纯 HTML 表单中编辑 HTML 代码。 大部分 Web 编写工具可以提供这种类型的编辑;否则,您始终可以使用简单文本编辑器来编辑 HTML 代码。 将以下代码行包含在 HTML 页面中,以将页面的字符集设置为 UTF-8:

<meta http-equiv="content-type" content="text/html; charset=utf-

8">

还要确保以 UTF-8 字符编码的格式保存编辑器中的文件:

使用 STEP 7 将 HTML 页面中的所有内容编译到 STEP 7 数据块中。 这些数据块由一个管理 Web 页面显示的控制数据块、一个或多个包含已编译 Web 页面的片段数据块组成。 请注意,如果有大量的 HTML 网页,尤其是那些具有很多图像的页面,它们的片段

DB 需要非常大的 装载存储器空间 (页 581)。 如果 CPU 的内部装载存储器不足以容纳用户定义的 Web 页面,请使用 存储卡 (页 111)来提供外部装载存储器。

要编写 HTML 代码程序以使用 S7-1200 中的数据,应将 AWP 命令 (页 563)以 HTML 注释的形式包含在代码中。 完成之后,将 HTML 页面保存到 PC,并记下保存这些页面的文件夹路径。

刷新用户定义的 Web 页面

用户定义的 Web 页面不会自动刷新。 可以根据需要选择是否编写用来刷新页面的 HTML 程序。 对于显示 PLC 数据的页面,定期刷新可使数据保持最新。 对于用作数据输入格式的 HTML 页面,刷新可能会干扰用户输入数据。 如果希望整个页面自动进行刷新,可将以下命令行添加到 HTML 头文件,其中,“10”表示两次刷新间隔的时间(以秒为单位):

<meta http-equiv="Refresh" content="10">

还可以使用 JavaScript 或其它 HTML 方法来控制页面或数据的刷新。 相关信息,请参考

HTML 和 JavaScript 文档。

S7-1200 Web 服务器支持的 AWP 命令

S7-1200 Web 服务器提供了以 HTML 注释形式嵌入用户定义的 Web 页面中的 AWP 命令,这些命令具有以下用途:

        • 读取变量 (页 564)
        • 写入变量 (页 565)
        • 读取特殊变量 (页 567)
        • 写入特殊变量 (页 569)
        • 定义枚举类型 (页 571)
        • 为枚举类型分配变量 (页 572)
        • 创建片段数据块 (页 573)
一般语法

除读取变量的命令之外,AWP 命令的语法如下:

<!-- AWP_ <command name and parameters> -->

AWP 命令与典型的 HTML 表单命令一起使用时,可将变量写入 CPU。接下来的各页面在介绍 AWP 命令时采用如下惯例:

  • 方括号 [ ] 中包含的项为可选项。
  • 尖括号 < > 中包含的项是要指定的参数值。
  • 引号是命令的文字部分。 它们必须按所示的形式出现。
  • 根据具体用法,变量或数据块名称中的特殊字符 必须进行转义或用引号括号来

(页 575)。

使用文本编辑器或 HTML 编辑模式可将 AWP 命令插入页面中。

AWP 命令汇总

接下来的各主题将详细介绍每个 AWP 命令的用法,但此处先对这些命令进行简单汇总: 读取变量

:=<Varname>:

写入变量

<!-- AWP_In_Variable Name='<Varname1>' [Use='<Varname2>'] ... -->

该 AWP 命令只是声明 Name 子句中的变量可写入。 HTML 代码将按 HTML 表单中

<input>、<select> 或其它 HTML 语句中的名称写入变量。

读取特殊变量

<!-- AWP_Out_Variable Name='<Type>:<Name>' [Use='<Varname>'] -->

写入特殊变量

<!-- AWP_In_Variable Name='<Type>:<Name>' [Use='<Varname>']-->

定义枚举类型

<!--

AWP_Enum_Def Name='<Enum type name>' Values='<Value>, <Value>,..

. ' -->

引用枚举类型

<!-- AWP_Enum_Ref Name='<VarName>' Enum='<EnumType>' -->

创建片段

<!-- AWP_Start_Fragment Name='<Name>' [Type=<Type>][ID=<id>] -->

导入片段

<!-- AWP_Import_Fragment Name='<Name>' -->

        1. 读取变量

用户定义的 Web 页面可以从 CPU 中读取变量(PLC 变量)。

语法

:=<Varname>:

参数

<Varname> 要读取的变量,可以是 STEP 7 程序中的 PLC 变量名称、数据块变量、

I/O 或可寻址存储器。 对于存储器、I/O 地址或别名 (页 575),请勿使用引号将变量名称括起来。 对于 PLC 变量,请使用双引号将变量名称括 起来。 对于数据块变量,只用双引号将块名称括起来。 变量名称位于引

号外。 请注意,应使用数据块名称,而不是数据块编号。

示例

:="Conveyor_speed"::="My_Data_Block".flag1:

:=I0.0:

:=MW100:

读取具有别名的变量的示例

<!-- AWP_Out_Variable Name='flag1' Use='"My_Data_Block".flag1' --

>

:=flag1:

说明

主题 对变量引用使用别名 (页 570)中介绍了如何定义 PLC 变量和数据块变量的别名。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题 处理包含特殊字符的变量名称 (页 575)中所述。

写入变量

用户定义的页面可以将数据写入 CPU。 这是通过 AWP 命令识别 CPU 中可从 HTML 页面写入的变量来实现的。 该变量必须通过 PLC 变量名称或块变量名称指定。 可以在一条语句中声明多个变量名称。 要将数据写入 CPU,应使用标准 HTTP POST 命令。

典型用法是:使用与可写入的 CPU 变量对应的文本输入域或选择列表选项来在 HTML 页面中设计表单。 与所有用户定义的页面相同,之后将通过 STEP 7 生成块,从而在STEP 7 程序中包含这些块。 admin 用户随后访问该页面并在输入字段中输入数据或从选择列表中选择选项时,Web 服务器会将输入转换为变量的相应数据类型,并将该值写入CPU 中的变量。 请注意,HTML 输入域和 HTML 选择列表的 name 子句所使用的语法通常也用于 AWP_In_Variable 命令的 name 子句。 通常用单引号将名称括起来,但如果引用数据块,则应将数据块名称用双引号括起来。

有关表单管理的详细信息,请参考 HTML 文档。

语法

<!-- AWP_In_Variable Name='<Varname1>' [Use='<Varname2>'] ... -->

参数

<Varname1> 如果未提供 Use 子句,则 Varname1 表示要写入的变量。 它可以是

STEP 7 程序中的 PLC 变量名称,或者是特定数据块中的变量。

如果提供了 Use 子句,则 Varname1 为 <Varname2> 中引用的变量的备用名称 (页 570)。 它是 HTML 页面中的本地名称。

<Varname2> 如果提供了 Use 子句,则 Varname2 表示要写入的变量。 它可以是

STEP 7 程序中的 PLC 变量名称,或者是特定数据块中的变量。

对于 Name 子句和 Use 子句,必须用单引号将整个名称括起来。 在单引号中,用双引号将 PLC 变量括起来,并用双引号将数据块名称括起来。 数据块名称括在双引号之内,但数据块变量名称不在双引号之内。 请注意,对于数据块变量,应使用块名称,而不是数据块编号。

HTML 输入域的用法示例

<!-- AWP_In_Variable Name='"Target_Level"' -->

<form method="post">

<p>Input Target Level: <input name='"Target_Level"' type="text"

/> </p>

</form>

<!-- AWP_In_Variable Name='"Data_block_1".Braking' -->

<form method="post">

<p>Braking: <input name='"Data_block_1".Braking' type="text" />

%</p>

</form>

<!-- AWP_In_Variable Name='"Braking"' Use='"Data_block_1".Braking' -->

<form method="post">

<p>Braking: <input name='"Braking"' type="text" /> %</p>

</form>

HTML 选择列表的用法示例

<!-- AWP_In_Variable Name='"Data_block_1".ManualOverrideEnable'--

>

<form method="post">

<select name='"Data_block_1".ManualOverrideEnable'>

<option value=:"Data_block_1".ManualOverrideEnable:> </option>

<option value=1>Yes</option>

<option value=0>No</option>

</select><input type="submit" value="Submit setting" /></form>

说明

只有 admin 用户才能将数据写入 CPU。 如果用户未以 admin 用户的身份登录,则会忽略这些命令。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题“处 理包含特殊字符的变量名称 (页 575)”中所述。

        1. 读取特殊变量 Web 服务器可以从 PLC 中读取要存储在 HTTP 响应标头的特殊变量中的值。 例如,您可能要从 PLC 变量中读取路径名,以使用 HEADER:Location 特殊变量将 URL 重新定向到其它位置。
语法

<!-- AWP_Out_Variable Name='<Type>:<Name>' [Use='<Varname>'] -->

参数

<Type> 特殊变量的类型有: HEADER COOKIE_VALUE

COOKIE_EXPIRES

<Name> 要获取所有 HEADER 变量名称的列表,请参考 HTTP 文档。 下面给出了几个示例:

Status: 响应代码

Location: 重定向的路径

Retry-After: 预计服务在多长时间内对请求客户机不可用

对于 COOKIE_VALUE 和 COOKIE_EXPIRES 类型,<Name> 是特定

cookie 的名称。

COOKIE_VALUE:name: 指定的 cookie 的值

COOKIE_EXPIRES:name: 指定的 cookie 的到期时间(以秒为单位) 必须用单引号或双引号将 Name 子句括起来。

如果未指定 Use 子句,则特殊变量名称与 PLC 变量名称相对应。 用单

引号将完整的 Name 子句括起来,用双引号将 PLC 变量括起来。 特殊变量名称和 PLC 变量名称必须完全匹配。

<Varname> 要读入的变量对应的 PLC 变量或数据块变量的名称

必须用单引号将 Varname 括起来。 在单引号中,用双引号将 PLC 变量或数据块名称括起来。 数据块名称括在双引号之内,但数据块变量名称不在双引号之内。 请注意,对于数据块变量,应使用块名称,而不是数

据块编号。

示例

<!-- AWP_Out_Variable Name='"HEADER:Status"' -->

本示例中,HTTP 特殊变量“HEADER:Status”会接收 PLC 变量“HEADER:Status”的值。如果未指定 Use 子句,则 PLC 变量表中的名称必须与特殊变量的名称完全匹配。

<!-- AWP_Out_Variable Name='HEADER:Status' Use='"Status"' -->

本示例中,HTTP 特殊变量“HEADER:Status”会接收 PLC 变量“Status”的值。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题 处理包含特殊字符的变量名称 (页 575)中所述。

写入特殊变量

Web 服务器可以将 HTTP 请求标头中特殊变量的值写入 CPU。 例如,可以将与用户自定义网页相关的 cookie 信息、正在访问页面的用户信息或标题信息存储在 STEP 7 中。

Web 服务器可用于访问指定的特殊变量,您以 admin 用户的身份登录后可以将这些变量写入 CPU。

语法

<!-- AWP_In_Variable Name='<Type>:<Name>' [Use='<Varname>']-->

参数

<Type> 特殊变量的类型有:

HEADER SERVER COOKIE_VALUE

<Name> 上面定义的类型中的特殊变量,如以下示例中所示:

HEADER:Accept:可接受的内容类型

HEADER:User-Agent:有关发起请求的用户代理的信息。

SERVER:current_user_id:当前用户的 id;如果没有用户登录,则该变量为 0

SERVER:current_user_name:当前用户的名称COOKIE_VALUE:<name>:指定的 cookie 的值用单引号将 Name 子句括起来。

如果未指定 Use 子句,则特殊变量名称与 PLC 变量名称相对应。 用单引号将完整的 Name 子句括起来,用双引号将 PLC 变量括起来。 特殊变量名称和 PLC 变量名称必须完全匹配。

要获取所有 HEADER 变量名称的列表,请参考 HTTP 文档。

<Varname> 要写入特殊变量的 STEP 7 程序中的变量名,它可以是 PLC 变量名称或数据块变量。

必须用单引号将 Varname 括起来。 在单引号中,用双引号将 PLC 变量或数据块名称括起来。 数据块名称括在双引号之内,但数据块变量名称不在双引号之内。 请注意,对于数据块变量,应使用块名称,而不是数

据块编号。

示例

<!-- AWP_In_Variable Name='"SERVER:current_user_id"' -->

在本示例中,Web 页面将 HTTP 特殊变量“SERVER:current_user_id”的值写入名称为

“SERVER:current_user_id”的 PLC 变量中。

<!-- AWP_In_Variable Name=SERVER:current_user_id' Use='"my_userid"' -->

在本示例中,Web 页面将 HTTP 特殊变量“SERVER:current_user_id”的值写入名称为

“my_userid”的 PLC 变量中。

说明

只有 admin 用户才能将数据写入 CPU。 如果用户未以 admin 用户的身份登录,则会忽略这些命令。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题“处 理包含特殊字符的变量名称 (页 575)”中所述。

对变量引用使用别名

可以在用户定义的 Web 页面中为 In_Variable 或 Out_Variable 使用别名。 例如,您可以在 HTML 页面中使用不同于 CPU 中的符号名称,也可以使 CPU 中的变量与特殊变量等同。 AWP 的 Use 子句就可以实现这一功能。

语法

<-- AWP_In_Variable Name='<Varname1>' Use='<Varname2>' -->

<-- AWP_Out_Variable Name='<Varname1>' Use='<Varname2>' -->

参数

<Varname1> 必须将别名或特殊变量名称

Varname1 用单引号或双引号括起来。

<Varname2> 要为其分配别名的 PLC 变量的名称。 该变量可以是 PLC 变量、数据块变量或特殊变量。 必须用单引号将 Varname2 括起来。 在单引号中, 用双引号将 PLC 变量、特殊变量或数据块名称括起来。 数据块名称括在双引号之内,但数据块变量名称不在双引号之内。 请注意,对于数据

块变量,应使用块名称,而不是数据块编号。

示例

<-- AWP_In_Variable Name='SERVER:current_user_id' Use='"Data_Block_10".server_user' -->

本示例中,特殊变量 SERVER:current_user_id 将被写入数据块“Data_Block_10”中的变量

“server_user”。

<-- AWP_Out_Variable Name='Weight' Use='"Data_Block_10".Tank_data.Weight' -->

本示例中,可以在用户定义的 Web 页面的其余部分仅由“Weight”引用数据块结构成员

Data_Block_10.Tank_data.Weight 中的值。

<-- AWP_Out_Variable Name='Weight' Use='"Raw_Milk_Tank_Weight"' -

->

在本示例中,可以在用户定义的 Web 页面的其余部分仅由“Weight”引用 PLC 变量

“Raw_Milk_Tank_Weight”中的值。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题 处理包含特殊字符的变量名称 (页 575)中所述。

定义枚举类型

可以使用 AWP 命令在用户定义的页面中定义枚举类型并分配元素。

语法

<!-- AWP_Enum_Def Name='<Enum type name>' Values='<Value>,

<Value>,... ' -->

参数

<Enum type name> 枚举类型的名称,用单引号或双引号括起来。
<Value> <constant>:<name> constant 表示枚举类型分配的数字值。 总数不受限制。

name 是分配给枚举元素的值。

请注意,应将整个枚举值分配字符串用单引号括起来,而将每个单独的枚举类型元素分配用双引号括起来。 对于用户定义的 Web 页面,枚举类型定义在全局范围内有效。如果已在 语言文件夹 (页 594)中创建用户定义的 Web 页面,则对于语言文件夹中的所有页面, 枚举类型定义在全局范围内有效。

示例

<!-- AWP_Enum_Def Name='AlarmEnum' Values='0:"No alarms", 1:"Tank is full", 2:"Tank is empty"' -->

        1. 通过枚举类型引用 CPU 变量

可以将 CPU 中的变量分配给枚举类型。 在执行读操作 (页 564)或 写操作 (页 565)时, 可在用户定义的 Web 页面中的其它位置使用该变量。 在读操作中,Web 服务器将用相应的枚举文本值替换从 CPU 中读取的数字值。 在写操作中,Web 服务器将在向 CPU 写入值之前用与文本对应的枚举整型值来替换文本值。

语法

<!-- AWP_Enum_Ref Name='<Varname>' Enum="<EnumType>" -->

参数

<Varname> 与枚举类型相关联的 PLC 变量或数据块变量的名称,或 PLC 变量的别名 (页 570)(如已声明)。

必须用单引号将 Varname 括起来。 在单引号中,用双引号将 PLC 变量或数据块名称括起来。 请注意,对于数据块变量,应使用块名称,而不是数据块编号。 数据块名称括在双引号之内,但数据块变量名称不在双

引号之内。

<EnumType> 枚举类型的名称,必须用单引号或双引号括起来。

枚举类型引用的适用范围为当前片段。

声明示例

<!-- AWP_Enum_Ref Name='"Alarm"' Enum="AlarmEnum" -->

变量读取的用法示例

<!-- AWP_Enum_Def Name='AlarmEnum' Values='0:"No alarms", 1:"Tank is full", 2:"Tank is empty"' -->

<!-- AWP_Enum_Ref Name='"Alarm"' Enum="AlarmEnum" -->

...

<p>The current value of "Alarm" is :="Alarm":</p>

如果 CPU 中“Alarm”的值为 2,则 HTML 页面会显示“The current value of "Alarm" is Tank is empty”,这是因为 枚举类型定义 (页 571)将文本字符串“Tank is empty”分配给了数字值 2。

变量写入的用法示例

<!-- AWP_Enum_Def Name='AlarmEnum' Values='0:"No alarms", 1:"Tank is full", 2:"Tank is empty"' -->

<!-- AWP_In_Variable Name='"Alarm"' -->

<!-- AWP_Enum_Ref Name='"Alarm"' Enum='AlarmEnum' -->

...

<form method="POST">

<p><input type="hidden" name='"Alarm"' value="Tank is full"

/></p>

<p><input type="submit" value='Set Tank is full' /><p>

</form>

由于 枚举类型定义 (页 571)将“Tank is full”分配给了数字值 1,因此,值 1 被写入 CPU

中的 PLC 变量“Alarm”。

请注意,AWP_In_Variable 声明中的 Name 子句必须与 AWP_Enum_Ref 声明中的

Name 子句完全对应。

在变量写入过程中使用别名的用法示例

<!-- AWP_Enum_Def Name='AlarmEnum' Values='0:"No alarms", 1:"Tank is full", 2:"Tank is empty"' -->

<!-- AWP_In_Variable Name='"Alarm"' Use='"Data_block_4".Motor1.Alarm'-->

<!-- AWP_Enum_Ref Name='"Alarm"' Enum='AlarmEnum' -->

...

<form method="POST">

<p><input type="hidden" name='"Alarm"' value="Tank is full"

/></p>

<p><input type="submit" value='Set Tank is full' /><p>

</form>

由于 枚举类型定义 (页 571)将“Tank is full”分配给了数字值 1,因此,值 1 被写入 CPU

中与数据块“Data_Block_4”的 PLC 变量“Motor1.Alarm”对应的别名“Alarm”。

如果变量名称或数据块名称包含特殊字符,则必须使用附加引号或转义字符,如主题 处理包含特殊字符的变量名称 (页 575)中所述。

创建片段

单击 Web 服务器的“CPU 属性”(CPU Properties) 中的“生成块”(Generate blocks) 时, STEP 7 会将用户定义的 Web 页面转换和存储为控制 DB 和片段 DB。 可以为特定页面或特定页面部分建立特殊片段。 可以使用 AWP 命令“Start_Fragment”通过名称和编号来标识这些片段。 执行 AWP_Start_Fragment 命令之后,页面中的所有内容都属于该片段,直到再发出 AWP_Start_Command 或到达文件结尾。

语法

<!-- AWP_Start_Fragment Name='<Name>' [Type=<Type>][ID=<id>] -->

参数

<Name> 文本字符串: 片段 DB 的名称

片段名称必须以字母或下划线开头,并由字母、数字和下划线组成。 片段名称是以下形式的正则表达式:

[a-zA-Z_][a-zA-Z_0-9]*

<Type> “manual”或“automatic”

manual: STEP 7 程序必须请求该片段并可相应地做出响应。 必须使用

STEP 7 和控制 DB 变量来控制片段的操作。

automatic: Web 服务器自动处理片段。

如果未指定类型参数,则默认设置为“automatic”。

<id> 整型标识号。 如果未指定 ID 参数,则 Web 服务器会默认分配一个数字。 对于手动片段,应将 ID 设为较小的数字。 ID 是 STEP 7 程序控制

手动片段的方法。

<模式> “可见”或“隐藏”

可见: 片段的内容将显示在用户定义的 Web 页面上。

隐藏: 片段的内容将不会显示在用户定义的 Web 页面上。如果未指定类型参数,则默认设置为“可见”(visible)。

手动片段

如果为用户定义的 Web 页面或页面部分创建手动片段,则 STEP 7 程序必须控制片段的发送时间。 手动控制时,STEP 7 程序必须在控制 DB 中为用户定义的页面设置相应的参数,然后针对修改的控制 DB 调用 WWW 指令。 要了解控制 DB 的结构以及如何处理各个页面和片段,请参见主题 高级用户定义 Web 页面控制 (页 597)。

导入片段

可以根据部分 HTML 代码创建指定的片段,然后将该片段导入用户定义的 Web 页面集的其它位置。 例如,有一个包含起始页面的用户定义的 Web 页面集,还有几个可通过该起始页面中的链接访问的其它 HTML 页面。 假定每个单独的页面都要在页面上显示公司徽标。 那么,您可以 创建片段 (页 573),用来加载公司徽标的图像。 每个单独的 HTML 页

面都可以导入该片段以显示公司徽标。 您可以使用 AWP Import_Fragment 命令来执行该操作。 片段的 HTML 代码只存在于一个片段中,但您可以根据需要将该片段 DB 多次导入所选的众多 Web 页面中。

语法

<!-- AWP_Import_Fragment Name='<Name>' -->

参数

<Name> 文本字符串: 要导入的片段 DB 的名称

示例

用来创建显示图像的片段的 HTML 代码摘录:

<!-- AWP_Start_Fragment Name='My_company_logo' --><p><img src="company_logo.jpg"></p>

导入了显示徽标图像的片段的其它 .html 文件中的 HTML 代码摘录:

<!-- AWP_Import_Fragment Name='My_company_logo' -->

这两个 .html 文件(一个文件创建片段,另一个文件导入片段)都位于您 在 STEP 7 中组态用户定义的页面 (页 577)时所定义的文件夹结构中。

组合定义

声明要在用户定义的 Web 页面中使用的变量时,可以将变量声明与 变量的别名 (页 570)

组合在一起。 还可以在一条语句中声明多个 In_Variable 以及多个 Out_Variable。

示例

<!-- AWP_In_Variable Name='"Level'", Name='"Weight"', Name='"Temp"' -->

<--! AWP_Out_Variable Name='HEADER:Status', Use='"Status"', Name='HEADER:Location', Use="Location", Name='COOKIE_VALUE:name', Use="my_cookie" -->

<!-- AWP_In_Variable Name='Alarm' Use='"Data_block_10".Alarm' -->

        1. 处理包含特殊字符的变量名称

在用户定义的 Web 页面中指定变量名称时,如果变量名称中包含具有特殊含义的字符, 则需要特别注意。

读取变量

可以使用以下语法 读取变量 (页 564):

:=<Varname>:

在读取变量时下列规则适用:

    • 对于 PLC 变量表中的变量名称,应将变量名称用双引号括起来。
    • 对于作为数据块变量的变量名称,应将该数据块名称用双引号括起来。 变量在引号外。
    • 对于直接 I/O 地址、存储器地址或别名等变量名称,请勿使用引号将读取变量括起来。
    • 对于包含反斜杠的变量名称或数据块变量名称,应在反斜杠前面再加一个反斜杠。
    • 如果变量名称或数据块变量名称包含冒号、小于号、大于号或 & 号,则为读取的变量定义不含特殊字符的别名,并通过该别名读取变量。 在 Use 子句的变量名称中,在冒号前加上反斜杠。

表格 11- 1 读取变量示例

数据块名称 变量名称 读取命令
不适用 ABC:DEF <!--AWP_Out_Variable Name='special_tag' Use ='"ABC:DEF"' -->

:=special_tag:

不适用 T\ :="T\\":
不适用 A \B 'C :D <!--AWP_Out_Variable Name='another_special_tag' Use='"A \\B

\'C :D"' -->

:=another_special_tag:

不适用 a<b <!--AWP_Out_Variable Name='a_less_than_b' Use='"a<b"' -->

:=a_less_than_b:

Data_block_1 Tag_1 :="Data_block_1".Tag_1:
Data_block_1 ABC:DEF <!-- AWP_Out_Variable Name='special_tag' Use='"Data_block_1".ABC\:DEF'-->

:=special_tag:

DB A' B C D$ E Tag :="DB A' B C D$ E".Tag:
DB:DB Tag:Tag <!--AWP_Out_Variable Name='my_tag' Use

='"DB:DB".Tag\:Tag' -->

:=my_tag:

Name 和 Use 子句

AWP 命令 AWP_In_Variable、AWP_Out_Variable、AWP_Enum_Def、

AWP_Enum_Ref、AWP_Start_Fragment 和 AWP_Import_Fragment 含有 Name 子句。

<input> 和 <select> 等 HTML 表单命令也含有 name 子句。 AWP_In_Variable 和

AWP_Out_Variable 还可以含有 Use 子句。 对于所有命令,在特殊字符处理方面 Name

和 Use 子句的语法相同:

      • 为 Name 或 Use 子句提供的文本必须用单引号括起来。 如果括起来的名称是 PLC 变量或数据块名称,则应使用单引号将整个子句括起来。
      • 在 Name 或 Use 子句中,数据块名称和 PLC 变量名称必须用双引号括起来。
      • 如果变量名称或数据块名称包含单引号字符或反斜杠,应使用反斜杠将该字符转义。反斜杠在 AWP 命令编译器中是转义字符。

表格 11- 2 Name 子句示例

数据块名称 变量名称 Name 子句可选形式
不适用 ABC'DEF Name='"ABC\'DEF"'
不适用 A \B 'C :D Name='"A \\B \'C :D"'
Data_block_1 Tag_1 Name='"Data_block_1".Tag_1'
Data_block_1 ABC'DEF Name='"Data_block_1".ABC\'DEF'
Data_block_1 A \B 'C :D Name='"Data_block_1".A \\B \'C :D'
DB A' B C D$ E Tag Name='"DB A\' B C D$ E".Tag'

Use 子句遵从 Name 子句的约定。说明

无论在 HTML 页面中使用什么字符,都应将 HTML 页面的字符集设置为 UTF-8 并在编辑器中使用 UTF-8 字符编码对其进行保存。

组态用户定义 Web 页面的使用

要通过 STEP 7 组态用户定义的 Web 页面,请执行以下步骤:

  1. 在设备组态视图中选择 CPU。
  2. S7-1200的Web 服务器  编程手册-36 在巡视窗口中显示该 CPU 的“Web server”属性。
  3. 如果尚未选择,则选中“Enable Web server”复选框。
  4. 选择“仅允许使用 HTTPS 访问”(Permit access only with HTTPS) 确保 Web 服务器使用加密的通信,并提高 Web 可访问 CPU 的安全性。
  5. 输入或浏览到 PC 上保存 HTML 默认页面(起始页面)的文件夹的名称。
  6. 输入该默认页面的名称。
  7. 为应用程序提供名称(可选)。 应用程序名称用于对 Web 页面进一步分类或分组。如果应用程序名称存在,URL 将以以下格式出现: http://ww.xx.yy.zz/awp/<应用程序名称>/<页面名称>.html。
  8. 指定用以检查是否存在 AWP 命令的文件扩展名。 默认情况下,STEP 7 分析扩展名为 .htm、.html 或 .js 的文件。 如果还有其它文件扩展名,请将其附上。
  9. 保留默认的 Web DB 编号,或输入适合的编号。 这是控制 Web 页面显示的控制 DB

的 DB 编号。

  1. 保留默认的片段 DB 起始编号,或输入适合的编号。 这是首个包含 Web 页面的片段

DB。

生成程序块

单击“生成块”(Generate blocks) 按钮时,STEP 7 会基于指定的 HTML 源目录下的 HTML 页面生成数据块,以及一个用于 Web 页面操作的控制数据块。 可以根据应用的需要设置这些属性 (页 579)。 STEP 7 还会生成一组片段数据块,以保存所有 HTML 页面的显

示。 在您生成数据块时,STEP 7 会更新属性,以显示控制数据块编号和首个片段数据块编号。 生成该数据块之后,用户定义的 Web 页面就会成为 STEP 7 程序的一部分。 与这些页面对应的块会出现在项目导航树中“程序块”(Program blocks) 下“系统块”(System blocks) 文件夹中的“Web 服务器”(Web server) 文件夹中。

删除程序块

要删除先前生成的数据块,请单击“Delete data blocks”按钮。 STEP 7 将从项目中删除与用户定义的 Web 页面相对应的控制数据块和所有片段数据块。

针对用户定义 Web 页面编写 WWW 指令

STEP 7 用户程序必须包含并执行 WWW 指令,以便能够通过标准 Web 页面访问用户定义 Web 页面。 该控制数据块是 WWW 指令的输入参数,指定如片段数据块中所表示的页面内容、状态以及控制信息。 在组态用户定义 Web 页面 (页 577)时单击“Create

blocks”按钮后,STEP 7 便会创建控制数据块。

编写 WWW 指令

要通过标准 Web 页面访问用户定义的 Web 页面,STEP 7 程序必须执行 WWW 指令。您可能希望用户定义的 Web 页面仅在应用程序要求和首选项指定的一些情况下可用。 在这种情况下,程序逻辑可控制何时调用 WWW 指令。

表格 11- 3 WWW 指令

LAD/FBD SCL 说明
S7-1200的Web 服务器  编程手册-37 ret_val := WWW( ctrl_db:=_uint_in_); 提供从标准 Web 页面访问用户定义的

Web 页面的权限

必须提供控制数据块输入参数 (CTRL_DB),该参数对应于控制 DB 的整数 DB 编号。 为用户定义的 Web 页面创建块后,可在 CPU 的“Web 服务器”(Web Server) 属性中找到此控制 DB 块编号(称为 Web DB 编号)。 输入整数 DB 编号作为 WWW 指令的

CTRL_DB 参数。 返回值 (RET_VAL) 包含函数结果。 请注意,WWW 指令异步执行,

RET_VAL 输出的初始值可能为 0,但这不能说明后来不会发生错误。 程序会检查控制

DB 的状态,以确定应用程序是否已成功启动,或者通过随后对 WWW 的调用来检查

RET_VAL。

表格 11- 4 返回值

RET_VAL 说明
0 无错误
16#00yx x: 相关位声称的请求处于等待状态:

x=1: 请求 0

x=2: 请求 1

x=4: 请求 2

x=8: 请求 3

可以对 x 值进行逻辑或运算,以说明多个请求处于等待状态。 例如,如果 x = 6,则说明请求 1 和请求 2 处于等待状态。

y: 0: 没有错误;1: 存在错误,并且已在控制 DB 中置位“last_error”

16#803a 未装载控制 DB。
16#8081 控制 DB 的类型、格式或版本错误。
16#80C1 没有资源可用于初始化 Web 应用程序。
控制 DB 的使用

单击“生成块”(Generate blocks) 后,STEP 7 将创建控制数据块,并在用户定义的 Web 页面属性中显示控制 DB 编号。 您可以在项目导航树中的“程序块”(Program blocks) 文件夹下找到该控制 DB。

通常情况下,STEP 7 程序会直接使用“生成块”(Generate blocks) 过程中创建的控制

DB,而不进行任何处理。 但是,STEP 7 用户程序可以在控制 DB 中设置全局命令,以禁用 Web 服务器或随后重新启用 Web 服务器。 对于 创建为手动片段 DB (页 577) 的用户定义页面,STEP 7 用户程序必须通过控制 DB 中的请求表来控制这些页面的特性。 有关这些高级任务的信息,请参见主题 高级用户定义 Web 页面控制 (页 597)。

将程序块下载到 CPU

生成用户定义的 Web 页面块后,它们与所有其它程序块一样成为 STEP 7 程序的一部分。 可以按照正常过程将这些程序块下载到 CPU。 注意,只能在 CPU 处于 STOP 模式时下载用户定义的网页程序块。

通过 PC 访问用户定义 Web 页面

用户可以通过 标准 Web 页面 (页 543)访问用户定义 Web 页面。 标准 Web 页面的左侧菜单中显示一个“用户页面”(User Pages) 链接,该页面中显示一些到其它页面的链接。 单击“用户页面”(User Pages) 链接后,Web 浏览器将转到提供默认页面的入口的页面。 在用户定义内容区域中,导航视特定页面的设计情况而定。

Web 服务器在标准 Web 页面显示画面的框架内显示用户定义页面内容。 即,顶部的标题框和左侧的登录和导航框都仍在固定位置。

S7-1200的Web 服务器  编程手册-38 S7-1200的Web 服务器  编程手册-39 S7-1200的Web 服务器  编程手册-40

2

1

① 到用户定义 Web 页面的默认页面的链接

② 用户定义 Web 页面的内容区域

特定于用户定义 Web 页面的限制

标准 Web 页面的限制 (页 601)也适用于用户定义 Web 页面。 此外,用户定义 Web 页面会有一些特殊考虑。

装载存储器空间

单击“生成块”(Generate blocks) 之后,用户定义的 Web 页面就会成为数据块,这一过程需要用到装载存储器空间。 如果安装了存储卡,用户定义 Web 页面的外部装载存储器空间最大容量即为存储卡的容量。

如果未安装存储卡,这些块就会占用内部装载存储器空间,根据 CPU 型号的不同而会存在限制。

可以在 STEP 7 中通过“在线和诊断”工具检查已用装载存储器空间量和可用装载存储器空间量。还可以查看 STEP 7 基于用户定义 Web 页面生成的各个块的属性,并查看装载存储器使用量。

说明

如果需要减少用户定义 Web 页面所需空间,则减少图片的使用(如果适用)。

用户定义 Web 页面示例

用于监控风力发电机的 Web 页面

可以考虑将用于远程监控风力发电机的 Web 页面作为用户定义 Web 页面示例:

S7-1200的Web 服务器  编程手册-41

说明

此示例页面采用的是英语,当然,您在开发自己的 HTML 页面时可以使用任何语言。

说明

在此应用中,风电厂中的每台风力发电机都配备一个 S7-1200 用于控制涡轮机。 在STEP 7 程序中,各风力发电机都有一个数据块,其中包含该风力发电机及其位置的特定数据。

用户定义 Web 页面可用于通过 PC 远程访问涡轮机。 用户可以连接到特定风力发电机的

CPU 的标准 Web 页面并访问用户定义“Remote Wind Turbine Monitor”Web 页面,以查看该涡轮机的数据。 admin 用户还可以通过该 Web 页面将涡轮机置于手动模式,控制涡轮机速度、偏航和桨距变量。 此外,无论涡轮机处于手动还是自动控制模式,admin 用户都可设置制动值。

STEP 7 程序会检查用于替代自动控制的布尔值,如果为真,则涡轮机速度、偏航和桨距将使用用户输入值。 否则,程序将忽略这些值。

使用的文件

此用户定义 Web 页面示例包含三个文件:

          • Wind_turbine.html: 这是实现上面所示显示画面的 HTML 页面,该页面使用 AWP 命令访问控制器数据。
          • Wind_turbine.css: 这是包含该 HTML 页面格式样式的级联样式表。 可以选择是否使用级联样式表,但使用它可以简化 HTML 页面的开发。
          • Wind_turbine.jpg: 这是 HTML 页面使用的背景图片。 当然,可以选择是否在用户定义 Web 页面中使用图片,使用图片会额外占用 CPU 的存储空间。

这些文件没有随安装程序一起提供,但在这里将其作为示例来介绍。

实现

HTML 页面使用 AWP 命令 从 PLC 读取值 (页 564)(用于显示字段),并 将值写入 PLC

(页 565)(用于用户输入的数据)。 此页面还使用 AWP 命令进行 枚举类型定义 (页 571)

和 引用 (页 572)以处理 ON/OFF 设置。

页面的第一部分显示一个标题行,其中包括风力发电机编号和位置。

S7-1200的Web 服务器  编程手册-42

S7-1200的Web 服务器  编程手册-43 页面的下一部分显示风力发电机所处的环境条件。 这些字段由该涡轮机现场的 I/O 提供数据,提供的数据包括风速、风向和当前温度。

S7-1200的Web 服务器  编程手册-44 接下来,页面显示从 S7-1200 读取的涡轮机的功率输出。

以下部分介绍了涡轮机的手动控制,手动控制会替代由 S7-1200 负责的标准的自动控制。各类型如下所述:

手动替代: 启用对涡轮机设置的手动替 S7-1200的Web 服务器  编程手册-45 代。 只有手动替代设置为真时,STEP 7

用户程序才会对涡轮机速度、偏航或桨距使用手动设置。

偏航替代: 启用对偏航设置的手动替代, S7-1200的Web 服务器  编程手册-46 对偏航使用手动设置。 手动替代和偏航替

代都为真时,STEP 7 用户程序才会应用偏航设置。

桨距替代: 启用对叶片桨距的手动替代。 S7-1200的Web 服务器  编程手册-47 手动替代和桨距替代都为真时,STEP 7 用

户程序才会应用叶片桨距设置。

HTML 页面包含一个用于将替代设置传送给控 S7-1200的Web 服务器  编程手册-48 制器的提交按钮。

制动用户输入字段提供手动制动设置百分数。 S7-1200的Web 服务器  编程手册-49 无需启用手动替代,STEP 7 用户程序便会接

受制动值。

此外,HTML 页面还使用 AWP 命令来写入特殊变量 (页 569)(其包含正在访问该页面的用户的用户 ID)到 PLC 变量表中的一个变量。

读取和显示控制器数据

“Remote Wind Turbine Monitor”HTML 页面使用多个 AWP 命令从控制器读取数据(页 564),并将其显示在该页面中。 例如,考虑一下用于显示该示例 Web 页面的下面部分所示功率输出的 HTML 代码:

S7-1200的Web 服务器  编程手册-50

HTML 代码示例

从“Remote Wind Turbine Monitor”HTML 页面中摘录的以下部分在表格行的左侧单元中显示文本“Power Output:”,读取功率输出变量并在该表格行的右侧单元中将其与单位文本

KW 显示在一起。

AWP 命令 :="Data_block_1".PowerOutput: 执行读取操作。 请注意,数据块通过名称而不是通过数据块编号来引用(即,通过“Data_block_1”而不是“DB1”)。

<tr style="height:2%;">

<td>

<p>Power output:</p>

</td>

<td>

<p style="margin-bottom:5px;"> :="Data_block_1".PowerOutput: KW</p>

</td>

</tr>

        1. 使用枚举类型

%“Remote Wind Turbine Monitor”HTML 页面在三种情况下使用枚举类型:HTML 页面显示代表布尔值的“ON”或“OFF”以及用户设置布尔值。 “ON”枚举类型使值为 1,“OFF”枚举类型使值为 0。例如,考虑一下用于在 "Data_block_1".ManualOverrideEnable 值中使用枚举类型读取和写入 Manual Override Enable 设置的 HTML 代码:

S7-1200的Web 服务器  编程手册-51

HTML 代码示例

从“Remote Wind Turbine Monitor”HTML 页面中摘录的以下部分显示如何声明值为“Off”和

“On”(分别代表 0 和 1)的“OverrideStatus”枚举类型,以及随后设置对数据块(名为Data_block_1)中 ManualOverrideEnable 布尔变量的 OverrideStatus 的枚举类型引用。请注意,对于每个 AWP_Enum_Ref 声明,如果 HTML 页面通过枚举类型写入变量,则必须有一个对应的数据块变量或 PLC 变量的 AWP_In_Variable 声明。

<!-- AWP_In_Variable Name='"Data_block_1".ManualOverrideEnable' -

->

<!-- AWP_Enum_Def Name="OverrideStatus" Values='0:"Off",1:"On"' -

->

<!-- AWP_Enum_Ref Name='"Data_block_1".ManualOverrideEnable' Enum="OverrideStatus" -->

其中,HTML 页面在表格单元中包含一个用于显示 ManualOverrideEnable 的当前状态的显示字段。 该页面通常仅使用标准读取变量命令,但由于使用了先前声明和引用的枚举类型,所以该页面显示“Off”或“On”,而不是 0 或 1。

<td style="width:24%; border-top-style: Solid; border-top-width:

2px; border-top-color: #ffffff;">

<p>Manual override: :="Data_block_1".ManualOverrideEnable:</p>

</td>

该 HTML 页面包含一个下拉选择列表,供用户更改 ManualOverrideEnable 的值。 该选择列表在选择列表中显示文本“Yes”和“No”。 使用枚举类型时,“Yes”关联到枚举类型的值

“On”,“No”关联到值“Off”。 选项为空时保持 ManualOverrideEnable 的值不变。

<select name='"Data_block_1".ManualOverrideEnable'>

<option value=':"Data_block_1".ManualOverrideEnable:'> </option>

<option value="On">Yes</option>

<option selected value="Off">No</option>

</select>

选择列表包含在 HTML 页面上的表单中。 当用户单击提交按钮时,该页面将发布表单, 如果用户已选择“Yes”,则会将值“1”写入 Data_block_1 中的布尔型ManualOverrideEnable ;如果用户选择的是“No”,则写入值“0”。

将用户输入写入控制器

“Remote Wind Turbine Monitor”HTML 页面包含多个 用于将数据写入控制器的 AWP 命令

(页 565)。 HTML 页面将 AWP_In_Variables 声明为布尔变量,以便管理员用户可以将风力发电机置于手动控制模式,并且可以启用涡轮机速动的手动替代、偏航替代和/或叶片桨距替代。 该页面还使用 AWP_In_Variables 来让 admin 用户随后为涡轮机速度、偏航、桨距和制动百分数设置浮点值。 该页面使用 HTTP 表单发布命令将AWP_In_Variables 写入控制器。

例如,考虑一下用于手动设置制动值的 HTML 代码:

S7-1200的Web 服务器  编程手册-52

HTML 代码示例

从“Remote Wind Turbine Monitor”HTML 页面中摘录的以下部分首先声明 "Data_block_1" 的 AWP_In_Variable,该变量使 HTML 页面可以写入到数据块 "Data_block_1" 中的任何变量。 该页面的表格行的左侧单元中显示文本“Braking:”。 表格行的右侧单元是一个字段,可接受用户为“Data_block_1”的“Braking”变量输入的值。 此用户输入值在 HTML 表单中,该表单使用 HTTP 方法“POST”将输入的文本数据传送到 CPU。 然后,页面会从控制器读取实际制动值,并在数据输入字段中显示该值。

admin 用户随后可以通过此页面将制动值写入制动控制 CPU 中的数据块。

<!-- AWP_In_Variable Name='"Data_block_1"' -->

...

<tr style="vertical-align: top; height: 2%;">

<td style="width: 22%;"><p>Braking:</p></td>

<td>

<form method="POST">

<p><input name='"Data_block_1".Braking' size="10" type="text">

%</p>

</form>

</td>

</tr>

说明

请注意,如果用户定义的页面具有用于字符串数据类型可写入数据块变量的数据输入字段,则在该字段中输入字符串值时,用户必须用单引号将字符串括起来。

说明

请注意,如果在 AWP_In_Variable 声明中声明整个数据块,例如 <!-- AWP_In_Variable Name='"Data_block_1"' -->,则通过用户定义 Web 页面会写入该数据块内的所有变量。如果要使数据块中的所有变量均为可写入变量,请使用此方法。 而如果仅想通过用户定义 Web 页面写入特定数据块变量,则应在声明中对其进行具体声明,例如 <!-- AWP_In_Variable Name='"Data_block_1".Braking' -->。

写入特殊变量

“Remote Wind Turbine Monitor”Web 页面将特殊变量 SERVER:current_user_id 写入到

CPU 中的 PLC 变量。 在这种情况下,PLC 变量值包含正在访问“Remote Wind Turbine

Monitor”Web 页面的用户的用户 ID。 目前,admin 用户的用户 ID 为 1,所以 PLC 变量值设置为 1。

该特殊变量由 Web 页面写入 PLC,无需用户干预。

HTML 代码示例

<!-- AWP_In_Variable Name="SERVER:current_user_id" Use="User_ID"-

->

        1. 引用: 远程风力发电机监视 Web 页面的 HTML listing

Wind_turbine.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd"><!--

该测试程序将仿真一个 Web 页面,用于监视和控制一个风力发电机

STEP 7 中所需的 PLC 变量和数据块变量:

PLC 变量:

User_ID: Int

数据块:

Data_block_1

Data_Block_1 中 的 变 量 : Location: String TurbineNumber: Int WindSpeed: Real WindDirection: Real Temperature: Real PowerOutput: Real ManualOverrideEnable: Bool TurbineSpeed: Real YawOverride: Bool

Yaw: Real PitchOverride: Bool Pitch: Real Braking: Real

用户自定义的网页中将显示 PLC 数据的当前值,并提供一个选择列表,以便使用枚举类型分配设置 3 个布尔值。 “提交”按钮将提交所选择的布尔值以及用于涡轮机速度、偏航和桨距的数据条目字段。 无需点击“提交”按钮即可设置制动值。

使用该页面时,无需运行实际的 STEP 7 程序。 理论上来说,如果设置了相关布尔值,则 STEP 7 程序将只计算涡轮机速度、偏航和桨距的值。 对 STEP 7 的唯一要求是,通过该页面所生成数据块的 DB 编号调用 WWW 指令。

-->

<!-- AWP_In_Variable Name='"Data_block_1"' -->

<!-- AWP_In_Variable Name='"Data_block_1".ManualOverrideEnable' -

->

<!-- AWP_In_Variable Name='"Data_block_1".PitchOverride' -->

<!-- AWP_In_Variable Name='"Data_block_1".YawOverride' -->

<!-- AWP_In_Variable Name="SERVER:current_user_id" Use="User_ID"-

->

<!-- AWP_Enum_Def Name="OverrideStatus" Values='0:"Off",1:"On"' -

->

<!-- AWP_Enum_Ref Name='"Data_block_1".ManualOverrideEnable' Enum="OverrideStatus" -->

<!-- AWP_Enum_Ref Name='"Data_block_1".PitchOverride' Enum="OverrideStatus" -->

<!-- AWP_Enum_Ref Name='"Data_block_1".YawOverride' Enum="OverrideStatus" -->

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=utf- 8"><link rel="stylesheet" href="Wind_turbine.css">

<title>Remote Wind Turbine Monitor 页面</title>

</head>

<body>

<table style="background-image: url('./Wind_turbine.jpg'); width: 904px; height: 534px;" cellpadding="0" cellspacing="2"><tr style="height: 2%;"><td colspan="2">

<h2>Remote Wind Turbine Monitor: Turbine

#:="Data_block_1".TurbineNumber: :="Data_block_1".Location:</h2>

</td>

<tr style="height: 2%;"><td style="width: 24%;"><p>Wind speed:</p></td>

<td><p> :="Data_block_1".WindSpeed: km/h</p></td>

</tr>

<tr style="height: 2%;">

<td style="width: 24%;"><p>Wind direction:</p></td>

<td><p> :="Data_block_1".WindDirection: deg.</p></td>

</tr>

<tr style="height: 2%;"><td style="width: 24%;"><p>Temperature:</p></td>

<td><p> :="Data_block_1".Temperature: deg. C</p></td>

</tr>

<tr style="height: 2%;">

<td style="width: 24%;"><p>Power output:</p></td>

<td><p style="margin-bottom:5px;"> :="Data_block_1".PowerOutput: KW</p>

</td>

</tr>

<form method="POST" action="">

<tr style="height: 2%;" >

<td style="width=24%; border-top-style: Solid; border-top-width: 2px; border-top-color: #ffffff;">

<p>Manual override: :="Data_block_1".ManualOverrideEnable:</p>

</td>

<td class="Text">Set:

<select name='"Data_block_1".ManualOverrideEnable'>

<option value=':="Data_block_1".ManualOverrideEnable:'> </option>

<option value="On">Yes</option>

<option value="Off">No</option>

</select>

</td>

</tr>

<tr style="vertical-align: top; height: 2%;"><td style="width: 24%;"><p>Turbine speed:</p></td>

<td>

<p style="margin-bottom:5px;"><input name='"Data_block_1".TurbineSpeed' size="10" value=':="Data_block_1".TurbineSpeed:' type="text"> RPM</p>

</td>

</tr>

<tr style="vertical-align: top; height: 2%;">

<td style="width: 24%;">

<p>Yaw override: :="Data_block_1".YawOverride: </p>

</td>

<td class="Text">Set:

<select name='"Data_block_1".YawOverride'>

<option value=':="Data_block_1".YawOverride:'> </option>

<option value="On">Yes</option>

<option value="Off">No</option>

</select>

</td>

</tr>

<tr style="vertical-align: top; height: 2%;">

<td style="width: 24%;">

<p>Turbine yaw:</p>

</td>

<td>

<p style="margin-bottom:5px;"><input name='"Data_block_1".Yaw' size="10" value=':="Data_block_1".Yaw:' type="text"> deg.</p>

</td>

</tr>

<tr style="vertical-align: top; height: 2%;">

<td style="width: 24%;">

<p>Pitch override: :="Data_block_1".PitchOverride: </p>

</td>

<td class="Text">Set:

<select name='"Data_block_1".PitchOverride'>

<option value=':="Data_block_1".PitchOverride:'> </option>

<option value="On">Yes</option>

<option value="Off">No</option>

</select>

</td>

</tr>

<tr style="vertical-align: top; height: 2%;">

<td style="width=24%; border-bottom-style: Solid; border-bottom- width: 2px; border-bottom-color: #ffffff;">

<p>Blade pitch:</p>

</td>

<td>

<p style="margin-bottom:5px;"><input name='"Data_block_1".Pitch' size="10" value=':="Data_block_1".Pitch:' type="text"> deg.</p>

</td>

</tr>

<tr style="height: 2%;">

<td colspan="2"><br>

<input type="submit" value="Submit override settings and values">

</td>

</tr>

</form>

<tr style="vertical-align: top; height: 2%;">

<td style="width: 24%;"><p>Braking:</p></td>

<td>

<form method="POST" action="">

<p> <input name='"Data_block_1".Braking' size="10" value=':="Data_block_1".Braking:' type="text"> %</p>

</form>

</td>

</tr>

<tr><td></td></tr>

</table>

</body>

</html>

Wind_turbine.css

H2 {

font-family: Arial; font-weight: bold; font-size: 14.0pt; color: #FFFFFF; margin-top:0px; margin-bottom:10px;

}

P {

font-family: Arial; font-weight: bold; color: #FFFFFF; font-size: 12.0pt; margin-top:0px; margin-bottom:0px;

}

TD.Text {

font-family: Arial; font-weight: bold; color: #FFFFFF; font-size: 12.0pt; margin-top:0px; margin-bottom:0px;

}

        1. STEP 7 中示例 Web 页面的组态

要包括“Remote Wind Turbine Monitor”HTML 页面并将其作为 S7-1200 的用户定义 Web 页面,需要在 STEP 7 中对 HTML 页面的相关数据进行组态并基于该 HTML 页面创建数据块。

访问控制风力发电机的 S7-1200 的“CPU 属性”(CPU Properties),并在 Web 服务器的用户定义 Web 页面属性中输入组态信息:

S7-1200的Web 服务器  编程手册-53

组态字段
          • “HTML 目录”(HTML directory): 此字段指定计算机上保存默认页面(主页或起始页面)的文件夹的完全限定路径名。 使用“...”按钮可浏览至所需文件夹。
          • “默认 HTML 页面”(Default HTML page): 此字段指定默认页面的文件名或 HTML 应用的主页。 使用“...”按钮可选择所需文件。 在此示例中,WindTurbine.html 是默认

HTML 页面。 Remote Wind Turbine Monitor 示例仅包含一个页面,但在其它用户定义应用中,默认页面可以通过默认页面中的链接调用其它页面。 在 HTML 代码中, 默认页面必须引用与 HTML 源文件夹有关的其它页面。

          • “应用名称”(Application name): 此可选字段包含一个名称,Web 浏览器在显示该页面时会将其显示在地址字段中。 在此示例中,名称为“Remote Wind Turbine

Monitor”,但可以是任何名称。其它字段无需组态。

最终步骤

要按照所组态的方式使用 Remote Wind Turbine Monitor,需要生成块、以生成的控制

DB 的编号为输入参数来 编写 WWW 指令 (页 579)、下载程序块并将 CPU 置于运行模式。

当操作员以后访问控制风力发电机的 S7-1200 的标准 Web 页面时,便可通过导航条上的

“用户页面”(User Pages) 链接访问“Remote Wind Turbine Monitor”Web 页面。 此时,可通过此页面监控风力发电机。

创建多语言用户定义 Web 页面

Web 服务器提供了一些用于提供以下语言形式的用户定义 Web 页面的方法:

  • 德语 (de)
  • 英语 (en)
  • 西班牙语 (es)
  • 法语 (fr)
  • 意大利语 (it)
  • 中文 (zh)

可通过在与各语言对应的 文件夹结构 (页 594)中创建 HTML 页面并 在页面中设置名为

“siemens_automation_language”的特定 cookie (页 595) 来实现。 Web 服务器会响应此

cookie,并切换到相应语言文件夹中的默认页面。

创建文件夹结构

要提供多语言用户定义 Web 页面,请在 HTML 目录下创建一个文件夹结构。 文件夹名称应为特定的两个字母,必须按下面的方式命名:

S7-1200的Web 服务器  编程手册-54 de:德语en: 英语

es: 西班牙语

fr: 法语

it: 意大利语

zh:中文

还可在该目录下创建页面所需的任何其它文件夹,例如,图片文件夹或脚本文件夹。

可以包括语言文件夹的任何一种子集。 不必包括所有六种语言。 在语言文件夹中,创建并设置相应语言形式的 HTML 页面。

设置语言切换

Web 服务器使用名为“siemens_automation_language”的 cookie 来执行语言切换。 此

cookie 在 HTML 页面中定义和设置,Web 服务器解释该 cookie 并相应地使用同名的语言文件夹中的相应语言来显示页面。 HTML 页面必须包含 JavaScript,这样才可将此

cookie 设置为预定义语言标识符之一: “de”、“ed”、“es”、“fr”、“it”或“zh”。

例如,如果 HTML 页面将 cookie 设置为“de”,则 Web 服务器将切换到“de”文件夹并显示具有 STEP 7 组态 (页 597)过程中定义的默认 HTML 页面名称的页面。

示例

下面的示例使用各语言文件夹中名为“langswitch.html”的默认 HTML 页面。 此外,HTML 目录下有一个名为 "script" 的文件夹。 script 文件夹包含一个名为“lang.js”的 JavaScript 文件。 各 langswitch.html 页面使用此 JavaScript 来设置语言

cookie“siemens_automation_language”。

“en”文件夹中的“langswitch.html”的 HTML

HTML 页面的报头将语言设置为英语,将字符集设置为 UTF-8,并设置 JavaScript 文件

lang.js 的路径。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Language" content="en">

<meta http-equiv="Content-Type" content="text/html; charset=utf- 8">

<title>Language switching english page</title>

<script type="text/javascript" src="script/lang.js" ></script>

文件正文使用选择列表供用户在德语和英语之间进行选择。 英语(“en”)是预选的语言。用户更改语言时,该页面将调用具有所选选项值的 DoLocalLanguageChange()

JavaScript 函数。

<!-- Language Selection -->

<table>

<tr>

<td align="right" valign="top" nowrap>

<!-- change language immediately on selection change -->

<select name="Language"

onchange="DoLocalLanguageChange(this)" size="1">

<option value="de" >German</option>

</td>

</tr>

<option value="en" selected >English</option>

</select>

</table><!-- Language Selection End-->

“de”文件夹中的“langswitch.html”的 HTML

除语言被设置为德语外,德语 langswitch.html 页面的报头与英语的相同。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Language" content="de"><meta http- equiv="Content-Type" content="text/html; charset=utf-8">

<title>Sprachumschaltung Deutsche Seite</title>

<script type="text/javascript" src="script/lang.js" ></script>

</head>

除所选语言的默认值为德语(“de”)外,德语页面中的 HTML 与英语页面中的完全相同。

<!-- Language Selection -->

<table>

<tr>

<td align="right" valign="top" nowrap>

<!-- change language immediately on change of the selection -->

<select name="Language"

onchange="DoLocalLanguageChange(this)"

<size="1">

<option value="de" selected >Deutsch</option>

<option value="en" >Englisch</option>

</select>

</td>

</tr>

</table><!-- Language Selection End-->

“script”文件夹中的 JavaScript“lang.js”

函数“DoLocalLanguageChange()”在 lang.js 文件中。 该函数调用“SetLangCookie()”函数,然后重新加载显示该 HTML 页面的窗口。

函数“SetLangCookie()”构造一个分配,将选择列表中的值分配给文档的

“siemens_automation_language”cookie。 该函数还会设置应用程序的路径,以便被切换页面(非请求页面)接收该 cookie 的值。

可以选择在注释部分中,该页面对 cookie 的到期值进行设置。

function DoLocalLanguageChange(oSelect) { SetLangCookie(oSelect.value); top.window.location.reload();

}

function SetLangCookie(value) {

var strval = "siemens_automation_language=";

// 这是 cookie,Web 服务器据此

// 检测所需的语言。

// Web 服务器需要此名称。

strval = strval + value;

strval = strval + "; path=/ ;";

// 设置应用程序路径,否则

// 该路径将被设置为请求页面,

// 此页面将得不到 cookie。

/* OPTIONAL

如果此 cookie 的有效期应长于

当前的浏览器会话,则使用期限设置:

var now = new Date();

var endttime = new Date(now.getTime() + expiration); strval = strval + "; expires=" +

endttime.toGMTString() + ";";

*/

document.cookie = strval;

}

        1. 组态 STEP 7 以使用多语言页面结构

组态多语言用户定义 Web 页面的过程与 组态用户定义 Web 页面 (页 577)的常规过程类似。 为各语言创建文件夹后,将 HTML 目录设置设置为包含各语言文件夹的文件夹。 而不要将 HTML 目录设置为某一个语言文件夹。

选择默认 HTML 页面时,导航到相应的语言文件夹并选择将作为起始页面的 HTML 页面。 随后生成块并将这些块下载到 CPU 时,Web 服务器将显示所组态的语言文件夹中的起始页面。

S7-1200的Web 服务器  编程手册-55 例如,如果此处所显示的文件夹结构为 C:\,则 HTML 目录设置为C:\html,如果要选择英语作为初始页面显示语言,则导航到作为默认 HTML 页面设置的 en\langswitch.html。

高级用户定义 Web 页面控制

为用户定义 Web 页面生成数据块时,STEP 7 会创建一个控制 DB,该控制 DB 用于控制用户定义页面的显示和与该页面的交互。 STEP 7 还会创建一组分别代表各页面的片段

DB。 在正常情况下,不需要知道控制 DB 的结构或处理控制 DB 的方法。

例如,如果要开关 Web 应用程序或处理各手动片段,可使用控制 DB 变量和 WWW 指令来实现。

控制 DB 的结构

控制 DB 是一种全面的数据结构,可以在编写 STEP 7 用户程序时访问。 这里仅介绍了一部分控制数据块变量。

Commandstate 结构

“Commandstate”是包含 Web 服务器的全局命令和全局状态的结构。

“Commandstate”结构中的全局命令

全局命令通常应用于 Web 服务器。 可通过控制 DB 参数取消激活或重启 Web 服务器。

块变量 数据类型 说明
init BOOL 评估控制 DB 并初始化 Web 应用程序
deactivate BOOL 取消激活 Web 应用程序

Commandstate 结构中的全局状态

全局状态通常应用于 Web 服务器,其包含 Web 应用程序的状态信息。

块变量 数据类型 说明
initializing BOOL Web 应用程序正在读取控制 DB
error BOOL 无法初始化 Web 应用程序
deactivating BOOL Web 应用程序正在终止
deactivated BOOL Web 应用程序已终止
initialized BOOL Web 应用程序已初始化

请求表

请求表是包含应用于各片段 DB 的命令和状态的结构数组。 如果通过“手动”类型AWP_Start_Fragment (页 573) 命令创建片段,则 STEP 7 用户程序必须通过控制 DB 控制这些页面。 请求状态为只读,提供当前片段的相关信息。 使用请求命令可控制当前片段。

块变量 数据类型 说明
requesttab ARRAY [ 1 .. 4 ] OF 用于各片段 DB 控制的结构数组。
STRUCT Web 服务器一次最多可处理四个片
段。 Web 服务器处理多个片段或通
过多个浏览器会话处理片段时,特
定片段的数组索引是任意的。
requesttab 结构的结构成员
块变量 数据类型 说明
page_index UINT 当前 Web 页面的编号
fragment_index UINT 当前片段的编号 - 可以设置为其它片段
// 请求命令
continue BOOL 启用发送当前页面/片段,从下一片段开始继续发送
repeat BOOL 启用重新发送当前页面/片段,从同一片段开始继续发送
abort BOOL 关闭 http 连接并且不进行发送
finish BOOL 发送此片段;页面已完成 - 不处理任何其它片段
// 请求状态 请求状态为只读
idle BOOL 空闲,但处于激活状态
waiting BOOL 片段等待被启用
sending BOOL 片段正在发送
aborting BOOL 用户已终止当前请求

操作

只要程序对控制 DB 进行了更改,就必须调用 WWW 指令并将已修改的控制 DB 编号作为该指令的参数。 当 STEP 7 用户程序执行 WWW 指令 (页 579)时,全局命令和请求命令生效。

    1. 用户定义的 Web 页面

STEP 7 用户程序可明确地设置 fragment_index,从而使 Web 服务器通过请求命令处理指定片段。 否则,在 WWW 指令执行时,Web 服务器将处理当前页面的当前片段。

使用 fragment_index 的可能方法包括:

      • 处理当前片段: 保持 fragment_index 不变并设置 continue 命令。
      • 跳过当前片段: 将 fragment_index 设置为 0 并设置 continue 命令。
      • 将当前片段替换为其它片段: 将 fragment_index 设置为新片段 ID 并设置 continue

命令。

要检查全局状态或请求状态是否发生变化,STEP 7 用户程序必须调用 WWW 指令来评估这些状态的当前值。 典型的方法是定期调用 WWW 指令,一直到出现特定状态。

说明

如果 STEP 7 用户程序设置了多条请求命令,则 WWW 指令仅会按优先级执行某一条命令,具体的顺序如下: abort、finish、repeat、continue。 处理结束后,WWW 指令将清除所有请求命令。

示例

下面的示例显示了一个 STEP 7 用户程序,该程序检查在调用 WWW 指令后,ID 为 1 的片段是否进入等待状态。 程序也可以等待其它应用程序特定条件的出现。 然后执行该片段所需的任何操作,例如,设置数据块变量、执行计算或其它应用程序特定任务。 然

后,设置 continue 变量,以便 Web 服务器执行此片段。

S7-1200的Web 服务器  编程手册-56 S7-1200的Web 服务器  编程手册-57

当程序调用使用这一修改控制 DB 的 WWW 指令时,Web 浏览器将显示具有此片段的用户定义 Web 页面。

S7-1200的Web 服务器  编程手册-58

请注意,这是一个简化示例,要检查的片段可以是数组中的四个 requesttab 结构的任意一个。

限制

下列 IT 因素可能会影响 Web 服务器的使用:

      • 通常,必须使用 CPU 的 IP 地址来访问标准 Web 页面或用户定义的 Web 页面。 如果 Web 浏览器不允许直接连接到 IP 地址,请咨询 IT 管理员。 如果本地策略支持DNS,您可以通过指向该地址的 DNS 条目连接到 IP 地址。
      • 防火墙、代理设置和其它网站特定的限制也会限制对 CPU 的访问。 请咨询 IT 管理员来解决这些问题。
      • 标准 Web 页面采用 JavaScript 和 cookie。 如果 Web 浏览器中禁用了 JavaScript 或

cookie,请将其启用。 如果无法启用,某些 功能将受限 (页 602)。 可根据需要来选择是否在用户定义的 Web 页面中使用 JavaScript 和 cookie。 如果使用,则必须在浏览器中将其启用。

https://ww.xx.yy.zz 来访问标准 Web 页面和用户定义的 Web 页面,其中,

“ww.xx.yy.zz”表示 CPU 的 IP 地址。

      • 西门子为 Web 服务器的安全访问提供了安全证书。 可以从标准 Web 页面简介

(页 547)下载安全证书,并 将证书导入 Web 浏览器的 Internet 选项中 (页 603)。 如果选择不导入证书,则每次以 https:// 形式访问 Web 服务器时都会出现安全验证提示。

连接数目

Web 服务器最多支持 30 个活动的 HTTP 连接。 可以各种方式使用这 30 个连接,具体取决于您所使用的 Web 浏览器以及每页不同对象(.css 文件、图像、其它 .html 文件)的数目。 在显示页面时某些连接仍然存在;在初始连接后其它连接将被释放。

例如,如果使用最多支持六个持续连接的 Mozilla Firefox 8,则在 Web 服务器开始丢弃连接前可使用五个浏览器或浏览器选项卡实例。 如果页面未使用所有六个连接,则可使用更多浏览器或浏览器选项卡实例。

同时要知道页面性能会受到活动连接数目的影响。

禁用 JavaScript 时的受限功能

标准 Web 页面使用 HTML、JavaScript 和 cookie 来实现。 如果站点限制使用

JavaScript 和 cookie,请将其启用,以使页面正常运行。 如果无法为 Web 浏览器启用

JavaScript,将无法运行受 JavaScript 控制的功能。

常规

这些页面不会动态更新。 要查看刷新的数据,必须使用 “刷新”(Refresh) 图标 (页 545)手动刷新页面。

“诊断缓冲区”(Diagnostic Buffer) 页面
        • 显示事件详细信息: 使用 JavaScript 时,可在诊断缓冲区中选择一行,以在下面部分查看其详细信息。 如果不使用 JavaScript,必须单击诊断缓冲区条目的事件字段超链接,才能在下面部分查看事件数据。
        • 更改要查看的诊断缓冲区条目的范围: 使用 JavaScript 时,可使用顶部的下拉列表来选择要查看的诊断缓冲区条目的范围,而页面会自动进行更新。 如果不使用

JavaScript,则需使用顶部的下拉列表来选择要查看的诊断缓冲区条目的范围,但

是,之后必须单击“转至”(Go) 链接,才能使用从下拉列表中选择的范围来更新诊断缓冲区页面。

请注意,仅当未启用 JavaScript 时,才能显示“转至”(Go) 和事件字段超链接。 启用

JavaScript 时,不需要使用“转至”(Go) 和事件字段超链接,因此也不会显示它们。

说明

Opera V11.0 浏览器不支持“转到”(Go) 按钮或者超链接诊断条目。 在 Opera V11.0 中, 如果禁用了 JavaScript,则无法查看事件详情和更改范围。

“模块信息”(Module Information) 页面
        • 不能过滤数据。
        • 不能对字段进行排序。
“变量状态”(Variable Status) 页面
        • 输入每个变量之后,必须手动将焦点置于“New variable”行,才能输入新变量。
        • 选择显示格式并不会自动将数据值显示更改为选定的格式。 必须单击“Monitor value”

按钮才能将显示内容刷新为新格式。

Data Logs 页面
  • 无法单击“Recent entries”下的文件名来打开或保存日志文件。 但是,可以用

“Download”图标实现这一功能。

  • Data Logs 页面不会进行刷新。
  • 用于增加或减少近期条目数的“+”按钮和“-”按钮不起作用。
  • 在近期条目数中直接输入数值不会对条目数进行相应的设置。 但在 Mozilla Firefox

中,如果尝试在该字段中输入数值,则画面将转到空白页。 如要恢复“数据日志”(Data

Logs) 显示,则必须在导航面板中重新选择“数据日志”(Data Logs)。 而近期条目字段中的数值保持不变。

请注意,可以退出“数据日志”(Data Logs) 页面,然后重新进入该页面,从而获取最新的

25 个条目。

不允许使用 cookie 时受限的功能

Web 浏览器不允许使用 cookies 时,您无法以“admin”用户名登录。

导入 Siemens 安全证书

可以将 Siemens 安全证书导入 Internet 选项,这样,当您在 Web 浏览器中输入

https://ww.xx.yy.zz(其中“ww.xx.yy.zz”是 CPU 的 IP 地址)时,就不会出现安全验证提示。 如果使用 http:// URL,而不是 https:// URL,则不需要下载并安装该证书。

下载证书

使用 简介页面 (页 547)中的“下载证书”(download certificate) 链接将 Siemens 安全证书下载到 PC 中。 该过程会因所用 Web 浏览器而异:

S7-1200的Web 服务器  编程手册-59

将证书导入 Internet Explorer
  1. 单击“简介”(Introduction) 页面中的“下载证书”(download certificate) 链接。 将弹出“File Download - Security Warning”对话框。
  2. 单击“File Download - Security Warning”对话框中的“Open”打开文件。 将出现

“Certificate”对话框。

  1. 在“Certificate”对话框中,单击“Install Certificate”按钮以启动 Certificate Import

Wizard。

  1. 按照“Certificate Import Wizard”对话框的提示导入证书,并使操作系统自动选择证书存储位置。
将证书导入 Mozilla Firefox
  1. 单击 Intro 页面中的“download certificate”链接。 将弹出“Opening

MiniWebCA_Cer.crt”对话框。

  1. 单击“Opening MiniWebCA_Cer.crt”对话框中的“Save file”。 将出现“Downloads”对话框。
  2. 双击“Downloads”对话框中的“MiniWebCA_Cer.crt”。 如果已多次尝试下载,则会显示多个副本。 只需双击其中一个“MiniWebCA_Cer.crt”条目即可。
  3. 如果提示打开可执行文件,请单击“OK”。
  4. 如果出现“Open File - Security Warning”对话框,请单击“Open”。 将出现“Certificate” 对话框。
  5. 单击“Certificate”对话框中的“Install Certificate”按钮。
  6. 按照“Certificate Import Wizard”对话框的提示导入证书,并使操作系统自动选择证书存储位置。
  7. 如果出现“Security Warning”对话框,请单击“Yes”确认安装证书。
其它浏览器

导入和安装 Siemens 证书的过程与 Web 浏览器相同。

在 Web 浏览器的 Internet 选项中安装了 Siemens 安全证书“S7-Controller Family”之后, 访问 https:// ww.xx.yy.zz 形式的 Web 服务器时不会再出现安全验证提示。

将 CSV 格式的数据日志导入非 USA/UK 版本的 Microsoft Excel 中

数据日志文件采用逗号分隔值 (CSV) 文件格式。 如果系统正在运行 USA 或 UK 版本的

Excel,则可从“数据日志”(Data Logs) 页面直接用 Excel 打开这些文件。 但是,在其它国家/地区,由于逗号经常出现在数字记数法中,因此并未广泛使用这种格式。

11.4 限制

要打开已保存的数据日志文件,请对非 USA/UK 版本的 Excel 执行以下步骤:

  1. 打开 Excel 并创建空白工作簿。
  2. 从“数据 > 导入外部数据”(Data > Import External Data) 菜单中选择“导入数据”(Import

Data) 命令。

  1. 导航到要打开的数据日志文件并将其选中。 将启动“文本导入向导”(Text Import

Wizard)。

  1. 在“文本导入向导”(Text Import Wizard) 中,将“原始数据类型”(Original data type) 的默认选项从“固定宽度”(Fixed width) 改为“带分隔符”(Delimited)。
  2. 单击“下一步”(Next) 按钮。
  3. 在“步骤 2”(Step 2) 对话框中,选中“逗号”(Comma) 复选框,以将分隔符类型从“制表符”(Tab) 改为“逗号”(Comma)。
  4. 单击“下一步”(Next) 按钮。
  5. 在“步骤 3”(Step 3) 对话框中,可根据需要将日期格式从“MDY(月/日/年)”(MDY

(month/day/year)) 更改为其它格式。

  1. 完成“文本导入向导”(Text Import Wizard) 的其余步骤,以导入文件。
weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: