VB脚本允许你存储任何数据在操作员面板USB移动介质。这FAQ解释了如何编写这样的脚本。
介绍:
要保存或者读取文本文件中的信息,您需要访问Windows的文件系统。使用基于对象的变量实现访问。
注意:
如果WinCC标准机制(保存的数据档案等)不能满足你应用,只能使用脚本保存数据!
呈现的机制取决于操作面板的操作系统和所使用的配置软件。有关处理其他配置的信息,请参阅条目结尾处的注释。
下面脚本中使用的源代码不能够应用于基于WindowsCE的操作面板,因为使用这些代码是不能访问到Windows CE的文件系统的。
在WindowsCE的操作面板上访问文件可以参考这篇文章:Entry ID: 26107211
内容条目:
WinCC flexible 中有关VB命令的文档
WinCC flexible帮助系统中有关VB脚本的信息在“Contents”标签栏下“WinCC flexible信息系统>使用WinCC flexible >参考”
图. 01
保存信息到文本文件或者CSV文件的例子
下表说明了如何从WinCC flexible 保存信息到文本文件或者CSV文件中
No. |
步骤 |
1 |
创建一个新项目
- 点击“项目>新建...”,选择"PC > WinCC flexible Runtime"作为操作面板
图. 02
|
2 | 创建变量
- 打开变量编辑器"项目 > 设备_1 >通讯> 变量".
- 按照下面设定添加四个内部变量:
No.
|
变量 |
数据类型
|
1 |
bExtension |
Boolean |
2 |
szMaterial |
String |
3 |
Pressure |
Int |
4 |
Temperature |
Int |
表 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"。在项目树中选择"脚本 > 添加脚本"
- 将下列变量和新创建的脚本和相应的对象相连接
变量/脚本 |
对象 |
对象用于... |
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"相连接
图. 05
|
5 | 创建脚本 - 第一部分
源代码的说明:
在<行10>中声明的变量只有在脚本中才有效。<行13>中的变量"bExtension" 是一个全局变量,在整个WinCC flexible项目范围内都可以使用。通过这个变量,包含文件名称和文件后缀的路径在符号IO域中可以被选择。
需要有“出错时执行”的表达式,在脚本执行出错时调用。一旦有错误发生时,下面就会自动执行出错后的相应程序。
在<行23>的表达式用于将访问Windows文件系统的对象传给对象变量“fso”,其后的代码包括了处理运行出错的相应程序。即发生运行错误时,首先弹出错误提示窗口,然后脚本停止运行。
注意: 如果您使用"Scripting.FileSystemObject"对象,您是不能访问Windows CE的文件系统的。如果该脚本在Windows CE的操作面板上运行,会产生运行错误。
文本文件如果不存在,则用<行32>来创建一个新的文本文件
图. 06
|
6 | 创建脚本 -第二部分 使用方法 "GetFile",可以用其指向文件路径的参数(filespec).创建"fso"对象实际对应的文件。如果该文件不存在,会有相应的错误处理程序。
<行44>中"OpenAsTextStream"方法用于打开文件读或写。该方法的两个参数是可选的,其中第一个参数规定了输入/输出模式,第二个是要打开文件的格式。
- OpenAsTextStream([IO Mode[,Format]])
如果文件不能被打开,会有相应的错误处理程序。
"WriteLine"用于将文本和变量数值写入到相应的文件中。然后使用"Close" 方法关闭文件
- WriteLine([Line sequence])
最后需要使用"Set"命令,通过设置"Nothing",将对象与对象变量分离开。
最后一行是将用户自定义的系统消息传给HMI消息系统。
图. 07
|
7 | 开始运行时
图. 08
|
8 | 打开文本文件
- 打开后缀名为 ".txt"的文本文件
- 然后您可以关闭该文件
图. 09
- 用Excel打开后缀名为".csv"的文件
- 关闭Excel
图. 10
|
读取文本文件或者CSV文件中信息的例子
下表说明了如何从文本文件或者CSV文件中读取信息。
本例是基于上一个例子。但前一个例子的组态不用在本例中使用,只使用其中的组件。
No. |
步骤 |
1 |
创建一个- 可选 如果您使用前一个项目,可以直接进入第二步
- 点击“项目>新建...”来创建新项目,选择"PC > WinCC flexible Runtime"作为操作面板
|
2 |
连接变量
图. 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 | 组织脚本,文本列表和变量
图. 13
|
5 | 创建脚本- 第一部分
源代码的说明:
所有脚本中声明的变量只有在本脚本中才有效。<行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 (a, b)的结构和内容:
Array
|
b |
0 |
1 |
2 |
a |
0 |
"material" |
"steel" |
"" |
1 |
"pressure" |
"12" |
"mbar" |
2 |
"temperature" |
"56" |
"°C" |
表 05 - 二维数组的结构和内容
<行62>用于关闭打开的文件,使用"Set"命令,通过设置"Nothing",将对象与对象变量分离开。
最后一行是将用户自定义的系统消息传给HMI消息系统。
图. 16
|
8 | 开始运行
图. 17
|
下载源代码和样例工程
下载附件1是PDF文档,包括两段样例程序
wincc_flexible_quellcodes_pc.zip (18,1 KB)
附件2是上述的样例工程,用于从文本文件中保存和读取数据。
read_write_data_from_or_into_a_file_pc.zip (1,8 MB)
更多信息
下列 FAQ 提供脚本存储文本文件的更多信息。
WinCC flexible 和基于windows的面板:条目ID26107211(“一个基于windows的面板上如何使用脚本保存和读出文本文件?”)
使用 WinCC(TIA Portal)和基于windows的面板:条目ID59604194(“在SIMATIC WinCC (TIA Portal)怎么能通过脚本对精智面板进行文件读写?)
使用 WinCC (TIA Portal) 和PC:条目ID106501825(“在 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