对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?

使用VB脚本可以存储任何数据到操作面板或USB可移动介质。该FAQ解释如何编写相应的脚本。

描述:
为了对文本文件进行保存或读取信息的操作,必须能够访问 Windows CE 的文件系统。通过指定的对象变量进行这种访问。

注意:

  • 只有当WinCC的标准机制(存储数据归档)不能满足应用需求时,才会考虑使用脚本保存数据。
  • 下面涉及到的方法,依赖于操作面板的操作系统和使用的组态软件。关于处理其它配置的信息,请参考本文末尾的注释。

目录:

  • 将信息保存到文本文件或 csv 文件的示例
  • 从文本文件或 csv 文件读取信息的示例
  • 下载源代码和示例工程

在 WinCC flexible 中关于 VBScript 命令的文档
关于 VBScript 的相关信息可以参见 WinCC flexible 帮助系统,位于“目录” 页面下“WinCC flexible 信息系统 > 使用 WinCC flexible > 参考”。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 01

将信息保存到文本文件或 csv 文件的示例
下面的表格说明如何在 WinCC flexible 中,将信息保存到文本文件或 csv 文件。

序号 操作过程
1 创建一个新项目

通过单击“项目 > 新建...”,并选择“Multi Panels > MP 370 12" Touch”操作面板,创建新项目。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 02

2创建变量

  • 通过“项目 > Operator panel_1 > 通讯 > 变量”打开变量编辑器。
  • 按如下名称,添加 4 个内部变量:

序号

变量

数据类型

1 bExtension Bool
2 szMaterial String
3 Pressure Int
4 Temperature Int

表 01 - 变量

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 03

注意:
示例中仅使用了内部变量。可以使用连接控制器的变量。

3 添加对象

  • 添加两个矩形。
  • 组合一个符号 IO 域和三个普通 IO 域。
  • 扩大 WinCC flexible 画面,添加 1 个按钮和 9 个文本域。
  • 如图 04 所示布局所有对象,并输入如下文字:
    “Process values”
    “Pressure:”
    “Temperature:”
    “Material:”
    “Text file:”
    “mbar”
    “°C”

"Settings"
“Extension:”

  • 创建一个文本列表,命名为“Extension”,并包含如下条目:
    0 => “.txt”
    1 => “.csv”

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 04

4建立脚本、文本列表和变量间的关联

  • 创建一个脚本,名称为“Write_data”。为此在项目树中单击“脚本 > 添加脚本”。
  • 连接如下的变量和新创建的脚本到相关对象上:

    变量/脚本 对象 对象用于...
    Pressure IO field Pressure
    Temperature IO field Temperature
    szString_1 IO field Material
    bExtension Symbolic IO field Extension
    Write_data Button Save file

    表 02 - 链接到不同对象

  • 将文本列表“Extension”连接到符号 IO 域。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 05

5创建脚本 - 第一步

  • 添加示例代码到“Write_data”脚本中。

    注意:
    关于不同 VBScript 命令的更多信息,请参见 WinCC flexible 帮助。

源代码的说明:
在 <行 10> 中声明的变量只在脚本内部有效。在 <行 12> 中的变量“bExtension”是一个全局变量,可以在整个 WinCC flexible 项目中使用。使用该变量,可以通过符号 IO 域选择包含文件名称和扩展名的路径。

如果脚本发生运行时错误,那么“On Error Resume Next”语句是必需的。只要发生这种错误,该错误程序的下一条语句能自动执行。

在 <行 24> 中的语句将访问 Windows 文件系统的对象传送到对象变量“f”。如下源代码包含运行时错误处理程序。如果运行时发生错误,将会在消息窗口中输出错误消息并终止脚本的运行。

注意:
如果使用“FileCtl.File”,将不能访问 Windows CE 文件系统。如果在使用其它操作系统的面板上运行该脚本,将会出现运行时错误。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 06

6注意事项
使用创建的“f”对象的“Open”方法,打开由“path”(路径名称)参数指定的文件。如果相关的文件不存在,则如上提到的错误处理程序将执行。

  • file.Open Path name, Mode, [access], [lock], [reclength]

如果文件或路径名称不存在,则如上提到的错误处理程序将执行。

指定的字符串将被“f”对象的“LinePrint”方法写入已打开的文件中。在此,变量值也被传送和保存。

注意:
如果欲为文本字符串保存时间戳,可以使用 Now 函数。

示例:
f.LinePrint( Now & "; material; " & szMaterial & ";")

然后使用“Close”方法关闭该文件。关键字“Nothing” 用于分离对象变量,该变量由“Set”命令分配给该对象。

最后一条语句传输用户自定义的系统消息到 HMI 消息系统。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 07

7启动运行

  • 将 WinCC flexible 工程传输到操作面板并启动运行。

    注意:
    为了调试脚本,启动带脚本调试器的 WinCC flexible 运行系统。

  • 预设不同的数值并输入期望的材料名称。
  • 然后单击“Save data”按钮。
  • 在符号 IO 域选择“.csv”并再次点击按钮。
  • 终止操作面板的运行。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 08

8打开文本文件
如果将两种文本文件都存到存储卡上,那么可以在 PC 上使用读卡器看到这些文件,并使用适当的程序打开。

  • 打开扩展名为“.txt”的文本文件。
  • 然后关闭文件。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 09

  • 可以使用 Microsoft Excel 打开扩展名为“.csv”的文件。
  • 关闭 Excel 程序。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 10

从文本文件或 csv 文件读取信息的示例
如下表格说明如何从文本文件或 csv 文件中读出信息并在 WinCC flexible 中显示。

该示例基于先前的示例。先前示例中的配置在该示例中不是必须的。但是用到的组件仍然适用。

序号 操作过程
1 创建一个新项目 - 可选项
如果使用先前的工程,那么直接进入 步骤 2

  • 通过单击“项目 > 新建...”,并选择“Multi Panels > MP 370 12" Touch”操作面板,创建新项目。
2 连接变量

  • 通过“项目 > Operator Panel_1 > 通讯 > 变量”打开变量编辑器。
  • 添加如下名称的3个内部变量:

    序号

    变量

    数据类型

    1 szString_1 String
    2 Value_1 Int
    3 Value_2 Int

    表 03 - 变量

    注意:
    如果不使用先前的项目,需要添加一个“Bool”变量“bExtension”。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 11

3添加对象

  • 添加一个矩形 - 见图 12。
  • 如果没有,放置一个符号 IO 域和三个普通 IO 域。
  • 扩大 WinCC flexible 画面,添加 1 个按钮和4 个文本域。
  • 如图12 所示布局所有对象并输入如下文字:
    “Value_1:”
    “Value_2:”
    “String_1:”
    “Text file:”
    “Settings” (如果没有)
    “Extension:” (如果没有)
  • 若尚未创建文本列表,则创建一个文本列表,命名为“Extension”,并含有如下条目:
    0 => “.txt”
    1 => “.csv”

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 12

4建立脚本、文本列表和变量间的关联

  • 创建一个脚本,名称为“Read_data”。为此在项目树中单击“脚本 > 添加脚本”。
  • 链接如下变量和新创建的脚本到相关的对象上:

    变量/脚本 对象 对象用于...
    Value_1 IO field Value_1
    Value_2 IO field Value_2
    szString_1 IO field String_1
    bExtension*) Symbolic IO field Extension
    Read_data Button Read data

    表 04 - 链接到不同对象
    *)这些链接仅当没有为存储文件做过配置时是必需的。

  • 将文本列表“Extension”连接到符号 IO 域,若尚未作此操作(也可参见图 05)。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 13

5创建脚本 - 第一步

  • 添加示例代码到“Read_data”脚本中。

    注意:

    关于不同 VBScript 命令的更多信息,请参见 WinCC flexible 帮助

源代码的说明:
脚本中声明的所有变量只在脚本内部有效。使用符号 IO 域,通过在脚本 <行 17> 中的变量“bExtension”,可以选择包含文件名称和扩展名的路径。

如果脚本发生运行时错误,那么“On Error Resume Next”语句是必需的。只要发生这种错误,只要发生这种错误,该错误程序的下一条语句能自动执行。

在 <行 24> 中的语句将访问 Windows 文件系统的对象传送到对象变量“f”。如下源代码包含运行时错误处理程序。如果运行时发生错误,将会在消息窗口中输出错误消息并终止脚本的运行。

注意:
如果使用“FileCtl.File”,将不能访问 Windows CE 文件系统。如果在使用其它操作系统的面板上运行该脚本,将会出现运行时错误。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 14

6创建脚本 - 第二步
使用创建的“f”对象的“Open”方法,打开由“path”(路径名称)参数指定的文件。如果相关的文件不存在,则如上提到的错误处理程序将执行。

  • file.Open Path name, Mode, [access], [lock], [reclength]

如果文件无法打开,则如上提到的错误处理程序将执行,从而安全地终止脚本运行。

使用“Do-While-Loop”语句,通过对象变量“f”的“LineInputString”方法,当循环执行时,可以一行一行地读出文本文件中的内容。一旦到达文本文件末尾循环就被终止。

函数“Split”以指定分隔符来分离从文件中读取的文本行(expression),该分隔符作为第二个可选参数。分离后的内容被传送到一个一维数组。本例中没有使用最后两个参数。

  • Split(Expression[,delimiter[,Number[,compare]]])

因为当保存时,可能包含空字符串(例如,参见图 09),这些字符串通过“Replace”函数来删除。因此,前三个参数必须指定。第一个参数包含字符串 (expression) ,对该字符串执行搜索(SearchCS),搜索到的字符被替换为由参数“ReplaceWith”指定的字符。

  • Replace(Expression, find, replace with [,Start[,Number[,Compare]]])

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 15

7创建脚本 - 第三步
为了保持数据结构,所有数据被传入一个二维数组“HiField”。因此并非该数组中所有的数据都是必需的,所以仅将数组中相关的数据传送到 WinCC flexible 全局变量中。

示例 - HiField (a, b)的结构和内容:

数组

b
0 1 2
a 0 "material" "Steel" ""
1 "pressure" "12" "mbar"
2 "temperature" "56" "°C"

表 05 - 二维数组内容实例

打开的文件在 <行 62> 被关闭。关键字“Nothing” 用于分离对象变量,该变量由“Set”命令分配给该对象。

最后一条语句传输用户自定义的系统消息到 HMI 消息系统。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 16

8启动运行

  • 将 WinCC flexible 项目传送到操作面板并启动运行。

    注意:
    为了调试脚本,启动带脚本调试器的 WinCC flexible 运行系统。

  • 然后点击“Read data”按钮。
  • 在符号 IO 域中选择“.csv”并再次点击按钮。
  • 中止操作面板的运行。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?
图 17

下载源代码和示例工程:

如下下载链接包含示例工程的两个源代码,为PDF 格式的文档。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?Registrierung notwendig wincc_flexible_quellcodes_panel.zip (18,1 KB)

如下下载链接包含上述的示例工程,使用它可以对文本文件保存或读取数据。

对于基于 Windows 的面板,如何使用脚本将信息保存到文本文件或读取出来?Registrierung notwendig read_write_data_from_or_into_a_file_panel.zip (1,7 MB)

更多信息
下列 FAQ 提供了关于使用脚本存取文本文件的更多信息。

  • 使用 WinCC flexible 和 PCs:条目 ID26106418(“WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?”)
  • 使用 WinCC (TIA Portal) 和 基于Windows 的 panels: 条目 ID59604194(“如何使用 SIMATIC WinCC (TIA Portal) 在面板上通过脚本进行向文件中写数据和从文件中读数据的操作?”)
  • 使用 WinCC (TIA Portal) 和 PCs: 条目 ID106501825(“如何在 WinCC (TIA Portal) PC 运行系统中用脚本将信息存储成文件?”)

运行及测试环境:
下表列出了用于创建该条目并校验上述功能所需的组件。

组件 产品版本
PC operating system Microsoft WindowsXP SP2
Standard tools -
Engineering tool -
HMI software WinCC flexible 2005 SP1 HF7
HMI system MP 370 12" Touch

关键字:
保存、装载、写、读、CSV 文件、TXT 文件

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论