WinCC flexible的PC项目使用脚本来保存或者读取文本文件的信息 点击:3330 | 回复:0



纵横军团-王道火山

    
  • 精华:2帖
  • 求助:5帖
  • 帖子:86帖 | 1878回
  • 年度积分:0
  • 历史总积分:7858
  • 注册:2012年1月11日
发表于:2012-08-19 23:19:20
楼主

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

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

内容条目:

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


图. 01

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

No.步骤
1

创建一个新项目

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


图. 02

2

创建变量

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

    No.

    变量

    数据类型

    1bExtensionBoolean
    2szMaterialString
    3nPressureInt
    4nTemperatureInt
    表 01 - Tags


图. 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"


图. 04

4组织脚本,文本列表和变量
  • 创建一个脚本,命名为"Write_data"。在项目树中选择"脚本 > 添加脚本"
  • 将下列变量和新创建的脚本和相应的对象相连接
     
    变量/脚本对象对象用于...
    nPressureIO fieldPressure
    nTemperatureIO fieldTemperature
    szString_1IO fieldMaterial
    bExtensionSymbolic IO fieldExtension
    Write_dataButtonSave file
    表 02 - 与不同的对象相连接 
  • 将符号IO域与文本列表"Extension"相连接


图. 05

5创建脚本 - 第一部分
  • 将给出的样例代码写入脚本 "Write_data"

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

源代码的说明:

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

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

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

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

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


图. 06

6

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

  • GetFile(filespec)

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

  • OpenAsTextStream(【IO Mode【,Format】】)

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

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

  • WriteLine(【Line sequence】)

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

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


图. 07

7开始运行时
  • 启动WinCC flexible的PC运行项目

    注意:
    启动WinCC flexible运行系统时需启动脚本调试器,以便调试脚本
     
  • 设置数值和您选择的材料名
  • 然后点击"Save data"按钮
  • 在符号IO域中选择 ".csv" 并再次点击按钮
  • 结束 WinCC flexible 运行时


图. 08

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


图. 09

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


图. 10

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

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

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

No.步骤
1

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

  • 点击“项目>新建...”来创建新项目,选择"PC > WinCC flexible Runtime"作为操作面板
2连接变量
  • 打开变量编辑器“项目>设备_1>通讯>变量
  • 按下表添加内部变量
     

    No.

    变量

    数据类型

    1szString_1String
    2nValue_1Int
    3nValue_2Int
    表 03 - 变量

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


图. 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"


图. 12

4组织脚本,文本列表和变量 
  • 点击"脚本>新建脚本",创建脚本"Read_data".
  • 连接下列变量或脚本到相应对象中:
     
    变量/脚本对象对象用于...
    nValue_1IO fieldValue_1
    nValue_2IO fieldValue_2
    szString_1IO fieldString_1
    bExtension*)Symbolic IO fieldExtension
    Read_dataButtonRead data
    表 04 - 连接相应对象
    *)没有保存文件的配置时才这样连接
     
  • 将文本列表"Extension"和符号IO域连接对应(见图13)


图. 13

5创建脚本 - 第一部分
  • 将给出的样例代码写入脚本 "Write_data"

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

源代码的说明:

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

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

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

注意:

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


图. 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】】】)


Fig. 15

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

例子 - HiField (ab)的结构和内容:

Array

b
012
a0"material""steel"""
1"pressure""12""mbar"
2"temperature""56""°C"
表 05 - 二维数组的结构和内容

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

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


图. 16

8开始运行 
  • 开始WinCC flexible的运行

    注意:
    启动WinCC flexible运行系统时需启动脚本调试器,以便调试脚本
     
  • 点击"Read data"按钮
  • 在符号IO域中选择 ".csv" 并再次点击按钮
  • 结束 WinCC flexible 运行时


图. 17

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

 附件_1: WinCC_flexible_Quellcodes_PC.zip ( 18 KB )

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

 附件_2: Read_Write_data_from_or_into_a_file_PC.zip ( 1793 KB )

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

ComponentsProduct and version designation
PC operating systemMicrosoft Windows XP SP2
Standard tools-
Engineering tool-
HMI softwareWinCC flexible 2005 SP1 HF7
HMI systemWinCC flexible PC Runtime

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



热门招聘
相关主题

官方公众号

智造工程师