ID : 5075
变量的种类和使用注意事项
变量的分类
- 变量分为全局变量和局部变量。
- 局部变量中包括Static变量(Static属性的局部变量)。
- Static变量中包括Public变量(Public属性的局部变量)。
变量的种类 | 局部变量 | 全局变量 | ||
---|---|---|---|---|
Static属性 | ||||
Public属性 | ||||
是否由用户创建? | 是 | 是 | 是 | 否 |
控制器电源为OFF时是否消失? | - | 不消失 | 不消失 | 不消失 |
是否可从其它程序文件访问? | - | - | 可以访问 | 可以访问 |
变量的种类和类型
变量的名称 | 局部变量 | Static变量 | Public变量 | 全局变量 | ||
---|---|---|---|---|---|---|
变量类型 | Integer | ○ | ○ | ○ |
○ | I |
Single | F | |||||
Double | D | |||||
Vector | V | |||||
Position | P | |||||
Joint | J | |||||
Trans | T | |||||
String | ○※1 | ○※1 | ○※1 | S | ||
Variant | × | × | × | |||
Object | × | × | × |
○※1:数据大小最大为255字节。
Static变量的生成、初始化、删除
Static变量(包含Public变量)的生成、初始化、删除如下所示。
变量的生成
Static变量是在最初编译追加了变量的程序文件时生成(确保领域)的。
变量的初始化
如下情况,在编译程序文件时,初始化程序包含的所有Static变量。
- 追加、删除、更改任何一个Static变量时
此处的更改是指更改变量的名称、类型、次数或初始值中的任何一个。在包含的文件中定义的Static变量也是更改对象。 - 更改定义变量的程序文件或文件夹名称时
初始化注意事项
初始化某程序文件的变量时,在参照变量的其它程序文件中可能出现不匹配的情况。可采取以下任一方法避免发生以上情况。
- 强制初始化参照变量的程序文件。由于任何一个Static变量未更改时不能进行初始化,因此,暂时更改其中一个并强制进行初始化,再返回原值。
- 在参照变量的程序文件内,进行编程以检测不匹配并改写值。
请注意发送WINCAPSIII的程序或读入USB的程序时也可能会发生不匹配。
变量的删除
在编译程序文件时从该程序文件中删除变量的记述。删除程序文件时,在编译其它程序文件时进行。
Static变量的应用示例
Static变量(包括Public变量)的特征为即使切断电源也可保持值并可确保数据的独立性,因此,利用该特征可实现下例所示的功能。
应用示例1:输出执行程序的次数
每次执行如下程序时,RunCount逐个计数。
Pro1.pcs
Sub Main
Static RunCount as Integer = 0
PrintDbg "截止到上次的执行次数 = " & RunCount
' ... 执行处理
RunCount = RunCount+1
End Sub
应用示例2:准备并利用用户独自的数据领域
如下程序中通过DataBase.pcs确保100个数据领域,通过Pro1.pcs设定值。
DataBase.pcs
#define DB_MAX 100
Public Count As Integer = 0 '计数器
Public ProductID(DB_MAX) As Integer '选件号
Public ProductName(DB_MAX) As String '选件名
Public ProductPos(DB_MAX) As Position '位置
Sub Main
End Sub
Pro1.pcs
Sub Main
Dim n as integer
GetPublicValue n, "DataBase", "Count"
' 0, "N000", P(100, 120, 400)
SetPublicValue 0, "DataBase", "ProductID", n
SetPublicValue "N000", "DataBase", "ProductName", n
SetPublicValue P(100, 120, 400), "DataBase", "ProductPos", n
' 1, "N001", P(200, 220, 300)
SetPublicValue 1, "DataBase", "ProductID", n
SetPublicValue "N001", "DataBase", "ProductName", n
SetPublicValue P(200, 220, 300), "DataBase", "ProductPos", n
SetPublicValue n+1, "DataBase", "Count"
End Sub
ID : 5075