WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?

VB脚本允许你存储任何数据在操作员面板USB移动介质。这FAQ解释了如何编写这样的脚本。

介绍:
要保存或者读取文本文件中的信息,您需要访问Windows的文件系统。使用基于对象的变量实现访问。

注意:

如果WinCC标准机制(保存的数据档案等)不能满足你应用,只能使用脚本保存数据!
呈现的机制取决于操作面板的操作系统和所使用的配置软件。有关处理其他配置的信息,请参阅条目结尾处的注释。

下面脚本中使用的源代码不能够应用于基于WindowsCE的操作面板,因为使用这些代码是不能访问到Windows CE的文件系统的。
在WindowsCE的操作面板上访问文件可以参考这篇文章:Entry ID: 26107211

内容条目:

WinCC flexible 中有关VB命令的文档
WinCC flexible帮助系统中有关VB脚本的信息在“Contents”标签栏下“WinCC flexible信息系统>使用WinCC flexible >参考”

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 01

保存信息到文本文件或者CSV文件的例子
下表说明了如何从WinCC flexible 保存信息到文本文件或者CSV文件中

No. 步骤
1

创建一个新项目

  • 点击“项目>新建...”,选择"PC > WinCC flexible Runtime"作为操作面板

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 02

2

创建变量

  • 打开变量编辑器"项目 > 设备_1 >通讯> 变量".
  • 按照下面设定添加四个内部变量:

    No.

    变量

    数据类型

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

    表 01 - Tags

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 03

注意:
本样例中只使用了内部变量。当然,您也可以使用与控制器联接的变量

3添加对象

  • 添加两个矩形- 见 图. 03.
  • 添加一个符号IO域和三个普通的IO域。
  • Extend the WinCC flexible picture by adding one button and nine text fields. 增加一个按钮和9个文本域
  • 如图4,设定好所有对象的位置,标注如下文本:
    "Process values"
    "Pressure:"
    "Temperature:"
    "Material:"
    "Text file:"
    "mbar"
    "°C"
    "Properties"
    "Extension:"
  • 创建名为"Extension"的文本列表:
    0 => ".txt"
    1 => ".csv"

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 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 -与不同的对象相连接

  • 将符号IO域与文本列表"Extension"相连接

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 05

5创建脚本 - 第一部分

  • 将给出的样例代码写入脚本 "Write_data"

    注意:
    关于VB脚本更多的信息参见WinCC flexible的帮助

源代码的说明:

在<行10>中声明的变量只有在脚本中才有效。<行13>中的变量"bExtension" 是一个全局变量,在整个WinCC flexible项目范围内都可以使用。通过这个变量,包含文件名称和文件后缀的路径在符号IO域中可以被选择。

需要有“出错时执行”的表达式,在脚本执行出错时调用。一旦有错误发生时,下面就会自动执行出错后的相应程序。

在<行23>的表达式用于将访问Windows文件系统的对象传给对象变量“fso”,其后的代码包括了处理运行出错的相应程序。即发生运行错误时,首先弹出错误提示窗口,然后脚本停止运行。

注意:
如果您使用"Scripting.FileSystemObject"对象,您是不能访问Windows CE的文件系统的。如果该脚本在Windows CE的操作面板上运行,会产生运行错误。

文本文件如果不存在,则用<行32>来创建一个新的文本文件

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 06

6

创建脚本 -第二部分
使用方法 "GetFile",可以用其指向文件路径的参数(filespec).创建"fso"对象实际对应的文件。如果该文件不存在,会有相应的错误处理程序。

  • GetFile(filespec)

<行44>中"OpenAsTextStream"方法用于打开文件读或写。该方法的两个参数是可选的,其中第一个参数规定了输入/输出模式,第二个是要打开文件的格式。

  • OpenAsTextStream([IO Mode[,Format]])

如果文件不能被打开,会有相应的错误处理程序。

"WriteLine"用于将文本和变量数值写入到相应的文件中。然后使用"Close" 方法关闭文件

  • WriteLine([Line sequence])

最后需要使用"Set"命令,通过设置"Nothing",将对象与对象变量分离开。

最后一行是将用户自定义的系统消息传给HMI消息系统。

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 07

7开始运行时

  • 启动WinCC flexible的PC运行项目

    注意:
    启动WinCC flexible运行系统时需启动脚本调试器,以便调试脚本

  • 设置数值和您选择的材料名
  • 然后点击"Save data"按钮
  • 在符号IO域中选择 ".csv" 并再次点击按钮
  • 结束 WinCC flexible 运行时

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 08

8打开文本文件

  • 打开后缀名为 ".txt"的文本文件
  • 然后您可以关闭该文件

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 09

  • 用Excel打开后缀名为".csv"的文件
  • 关闭Excel

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 10

读取文本文件或者CSV文件中信息的例子

下表说明了如何从文本文件或者CSV文件中读取信息。

本例是基于上一个例子。但前一个例子的组态不用在本例中使用,只使用其中的组件。

No. 步骤
1

创建一个- 可选
如果您使用前一个项目,可以直接进入第二步

  • 点击“项目>新建...”来创建新项目,选择"PC > WinCC flexible Runtime"作为操作面板
2 连接变量

  • 打开变量编辑器“项目>设备_1>通讯>变量
  • 按下表添加内部变量

    No.

    变量

    数据类型

    1 szString_1 String
    2 Value_1 Int
    3 Value_2 Int

    表 03 - 变量

    注意:
    如果您不能使用前一个项目,还要添加一个BOOL变量"bExtension"

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 11

3添加对象

  • 添加一个矩形- 见图.12
  • 添加一个符号IO域和三个普通IO域
  • Extend the WinCC flexible picture by adding one button and four text fields. 扩展WinCC flexible 画面,增加一个按钮和四个文本域
  • 所有对象的位置请参考图12,并添加如下文本:
    "Value_1:"
    "Value_2:"
    "String_1:"
    "Text file:"
    "Properties" (如果没有)
    "Extension:" (如果没有)
  • 另外,添加一个文本列表"Extension"
    0 => ".txt"
    1 => ".csv"

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 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域连接对应(见图13)

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 13

5创建脚本- 第一部分

  • 将给出的样例代码写入脚本 "Write_data"

    注意:
    关于VB脚本更多的信息参见WinCC flexible的帮助

源代码的说明:

所有脚本中声明的变量只有在本脚本中才有效。<行17>中的变量"bExtension"可用于选择包含文件名称和文件后缀的路径。

需要有“出错时执行”的表达式,在脚本执行出错时调用。一旦有错误发生时,下面就会自动执行出错后的相应程序。

在<行27>的表达式用于将访问Windows文件系统的对象传给对象变量“fso”,其后的代码包括了处理运行出错的相应程序。即发生运行错误时,首先弹出错误提示窗口,然后脚本停止运行。

注意:

如果您使用"Scripting.FileSystemObject"对象,您是不能访问Windows CE的文件系统的。如果该脚本在Windows CE的操作面板上运行,会产生运行错误。

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 14

6创建脚本 -第二部分

使用方法"OpenTextFile",打开脚本变量"Path" 中指定的文件。该方法中所有其他的参数都是可选的。第一个参数规定了IO模式,第二个参数规定了如果文件不存在时是否创建一个新的文件,最后一个参数规定了要打开文件的格式。

  • OpenTextFile(filename[,iomode[,Create[,Format]]])

如果文件不能被打开,会有相应的错误处理程序来正常结束脚本。

用"Do-While-Loop" 表达式,文本文件会依照对象变量"f" 执行方法 "Readline"来一行一行被读取直到循环结束。 "Split" 函数通过表达式参数分隔读取自文件的文本行,第二的参数分隔符是可选项。分隔之后的内容被传送到一维的数据域。该函数后两个参数本例中没有用到。

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

字符串的保存和清空也需要处理(例如图9),所以使用 "Replace"函数来做清除。为此,需要规定该函数的前三个参数,第一个参数包含字符串(表达式),其中设置要被参数"ReplaceWith"中的字符替换掉的字符串。

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

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
Fig. 15

7创建脚本-第三部分
为了保持数据结构,所有数据都被传送到一个2维的数组"HiField"中。该数组中不是所有的数据都需要,只有相关的数据会从数组传到WinCC flexible的全局变量中。

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

Array

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

表 05 - 二维数组的结构和内容

<行62>用于关闭打开的文件,使用"Set"命令,通过设置"Nothing",将对象与对象变量分离开。

最后一行是将用户自定义的系统消息传给HMI消息系统。

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 16

8开始运行

  • 开始WinCC flexible的运行

    注意:
    启动WinCC flexible运行系统时需启动脚本调试器,以便调试脚本

  • 点击"Read data"按钮
  • 在符号IO域中选择 ".csv" 并再次点击按钮
  • 结束 WinCC flexible 运行时

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?
图. 17

下载源代码和样例工程
下载附件1是PDF文档,包括两段样例程序

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?Registrierung notwendig wincc_flexible_quellcodes_pc.zip (18,1 KB)

附件2是上述的样例工程,用于从文本文件中保存和读取数据。

WinCC flexible的PC项目中怎样使用脚本来保存或者读取文本文件的信息?Registrierung notwendig read_write_data_from_or_into_a_file_pc.zip (1,8 MB)

更多信息
下列 FAQ 提供脚本存储文本文件的更多信息。
WinCC flexible 和基于windows的面板:条目ID26107211(“一个基于windows的面板上如何使用脚本保存和读出文本文件?”)
使用 WinCC(TIA Portal)和基于windows的面板:条目ID59604194(“在SIMATIC WinCC (TIA Portal)怎么能通过脚本对精智面板进行文件读写?)
使用 WinCC (TIA Portal) 和PC:条目ID106501825(“在 PC 运行系统中通过SIMATIC WinCC (TIA Portal)脚本进行文件存储?”)

运行和测试环境:
下表给出了本例使用的组件

Components Product and version designation
PC operating system Microsoft WindowsXP SP2
Standard tools -
Engineering tool -
HMI software WinCC flexible 2005 SP1 HF7
HMI system WinCC flexible PC Runtime

关键词:
保存, 装载, 写入, 读取, CSV 文件, TXT文件

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

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

相关推荐

发表回复

登录后才能评论