当前位置:文档之家› 威纶触摸屏宏指令使用说明

威纶触摸屏宏指令使用说明

威纶触摸屏宏指令使用说明
威纶触摸屏宏指令使用说明

第三十章 宏指令说明 (2)

30.1宏指令的结构 (2)

30.2宏指令的语法 (4)

30.2.1 常量和变量 (4)

30.2.2运算符 (7)

30.3语句 (10)

30.3.1定义语句 (10)

30.3.2赋值语句 (11)

30.3.3逻辑运算语句 (11)

30.3.4 循环语句 (13)

30.3.4其他控制命令 (15)

30.4 子函数 (16)

30.5内置函数功能 (17)

30.5.1 数学运算函数 (18)

30.5.2 数据转换函数 (24)

30.5.3 数据操作函数 (29)

30.5.4 位状态转换 (34)

30.5.5 通讯有关的函数 (37)

30.6 怎样建立和执行宏指令 (52)

30.6.1 怎样建立一个宏指令 (52)

30.6.2 执行宏指令 (57)

30.7 使用宏指令时的注意事项 (58)

30.8 使用自由协议去控制一个设备 (59)

30.9 编译错误提示信息 (67)

30.10 宏指令范例程序 (78)

第三十章宏指令说明

宏指令提供了应用程序之外附加的你所需要的功能。在MT8000人机界面运行时,宏指令可以自动的执行这些命令。它可以担负执行譬如复杂的运算、字符串处理,和使用者与工程之间的交流等功能。本章主要介绍宏指令的语法、如何使用和编程方法等功能。希望通过本章的说明,能够使各位能够快速的掌握EB8000软件提供的强大的宏指令功能。

30.1宏指令的结构

宏指令是由各种语句组成的。这些语句包含常数、变量和各种运算符。这些语句放置在特定的顺序位置以执行后达到一个希望的执行结果。

宏指令的结构一般为以下格式:

全局变量声明-----------------------------------可选

Sub Function Block Declarations(子函数声明) -----------------------------------可选局部变量声明

End Sub(结束子函数)

macro_command main() [主函数] ------------------------------------必须局部变量声明

[各式语句]

end macro_command [结束主函数] ------------------------------------必须

一个宏指令必须有一个且只有一个主函数,用来开始宏指令的执行。格式为:

macro_command函数名称()

end macro_command

变量声明必须放在宏指令语句的前面,否则如果语句放置在变量声明的前面,将会造成宏指令无法编译通过。

局部变量一般用在宏指令主函数或者自定义的子函数中。它的合法性只在指定的函数中有效。

全局变量一般是定义在所有宏指令函数的前面,且它在整个宏指令中均具有有效性。当局部变量和全局变量被定义为相同的名称时,只有局部变量有效。

下面就是一个简单的宏指令,其中就包含了变量声明和功能执行。

macro_command main()

short pressure = 10 // 局部变量声明

SetData(pressure, "Allen-Bradley DF1", N7, 0, 1) // 功能执行

macro_command

end

30.2宏指令的语法

30.2.1 常量和变量

30.2.1.1常量

下面即为一个简单的常量使用的范例。

macro_command main()

short A, B // 声明A和B为短整型变量

A = 1234

B = 0x12 // 1234 和 0x12 即为常量end macro_command

30.2.1.2 变量

变量是一个代表着各种资料的名称。在宏指令中,这些资料可以随着宏指令语句执行的结果改变而改变。

变量的命名规则

1. 必须以英文字母开头

2. 变量名成长度不超过32个字符

3. 系统保留寄存器名称不能作为变量名称。

下面为5种不同的变量类型:

变量声明

变量必须在使用前声明。所以,在宏指令,所有的变量都必须在语句使用前都被声明完成。声明变量时,先定义变量的类型,后面再跟着变量名称。

如下范例:

int a

switch

short b,

float pressure

数组声明

宏指令支持一维数组(下标从0开始)。声明数组变量时,先定义数组变量的类型,变量名称,接着就是该数组变量的个数,变量个数必须放置在“[]”符号中。数组变量的长度为1~4096。一个宏指令中只支持4096个变量。

如下范例:

int a[10]

switch[30]

short b[20],

float pressure[15]

数组的下标最小为0,最大下标为(数组的长度-1)

如下范例:

char data 100] // 数组变量的长度是100

所以: 最小的数组为“data[0]”,最大的数组为“data[99]”,即100-1=99。

变量和数组初始化

有两种方法可以让变量初始化:

1. 使用语句中的赋值语句(=)

如下范例:

a

int

b[3]

float

a = 10

b[0] = 1

2. 声明变量时直接赋值

char a = ‘5’, b = 9

数组变量的声明是一个特殊的情况。一个完整的数组被初始化时,可以在数组变量声明时,将数据放置在波形括号“{}”里面,各数据使用逗号分开。

如下所示:

float data[4] = {11, 22, 33, 44} //这样data[0] = 11, data[1] = 22….

30.2.2运算符

运算符通常被用来指定数据是如何被操作的。在任何一个语句中,运算符左边的变量结果均依据运算符右边的条件而获得。

运算符描述举例

= 赋值运算符pressure = 10

数学运算符描述举例

+ 加 A = B + C

- 减 A = B – C

* 乘 A = B * C

/ 除 A = B / C

% 求余(返回剩余数) A = B % 5

移位和位运算符通常被用来操作字符型变量、短整型变量和双整型变量的位。在一个语句中,这些运算符的优先权是在从该语句的左边到右边依此执行的。即在语句中左边位置的优先执行,依次从左到右执行。

移位运算符描述举例

<< 往左移动指定的位数 A = B << 8

>> 往右移动指定的位数 A = B >> 8

所有运算符的优先权

上述所有运算符的优先权从高到低详细如下所述:

位于圆括号里面的运算符最优先

数学运算符

移位和位运算符

比较运算符

逻辑运算符

赋值运算符

关键词

下面的关键词为宏指令保留使用。这些均不能用来作为变量名称、数组名称或者函数名称等。

+, -, *, /, %, >=, >, <=, <, <>, ==, and, or, xor, not, <<, >>,=, &, |, ^, ~

exit, macro_command, for, to, down, step, next, return, bool, short, int, char, float, void, if, then, else, break, continue, set, sub, end, while, wend, true, false

SQRT, CUBERT, LOG, LOG10, SIN, COS, TAN, COT, SEC, CSC, ASIN, ACOS, ATAN,

BIN2BCD, BCD2BIN, DEC2ASCII, FLOAT2ASCII, HEX2ASCII, ASCII2DEC, ASCII2FLOAT, ASCII2HEX, FILL, RAND, DELAY, SWAPB, SWAPW, LOBYTE, HIBYTE, LOWORD, HIWORD, GETBIT, SETBITON, SETBITOFF, INVBIT, ADDSUM, XORSUM, CRC, INPORT, OUTPORT, POW, GetError, GetData, GetDataEx, SetData, SetDataEx

30.3语句

30.3.1定义语句

这个定义语句包含了变量和数组的声明。正式的格式如下:

类型名称当定义一个名称的类型时

举例:

int A //定义了变量A为双整型格式

类型数组名称[数组长度] 当定义数组名称的类型时

举例:

B[10] 定义了一维数组变量B的长度为10,类型为双整型int

30.3.2赋值语句

赋值语句使用赋值运算符将赋值运算符右边表达式运算的结果放置到运算符左边的变量中。一个运算表达式是由变量、常量和各种运算符组成,执行后产生一个新的数据。

变量 = 表达式

举例

A = 2 这样变量A就被赋值为2

30.3.3逻辑运算语句

逻辑运算语句是根据逻辑(布尔)表达式的结果来执行相应的动作。它的语句如下所示:

单行格式

if < Condition > then

[Statements]

else

[Statements]

end if

举例:

if a = = 2 then

1

=

b

else

b

2

=

end if

区块格式

If then

[Statements]

else if < Condition- n> then

[Statements]

else

[Statements]

end if

举例:

if a = = 2 then

b

1

=

else if a = = 3

=

2

b

else

3

=

b

end if

语法描述:

if 必须用在该语句的开始部分

30.3.4 循环语句

循环语句依据循环条件来反复的执行一个任务。循环语句有两种表达方式。

30.3.4.1 for-next 语句

For-next语句通常用来执行次数固定的循环任务。一个变量用作为任务执行次数的计数器和结束循环任务执行的条件。这个变量为固定执行的次数。语法结构如下:

for [Counter] = to [step ]

[Statements]

next [Counter]

或者

for [Counter] = down [step ] [Statements]

next [Counter]

举例:

for a = 0 to 10 step 2

b = a

a

next

语法描述:

30.3.4.2 while-wend 语句

While-wend语句是用来执行不确定次数的循环任务。设置一个变量用来判断结束循环的条件。当条件为“True”时,该语句将一直循环执行直到条件变为“False”。语法结构如下:while

[Statements]

wend

举例:

while a < 10

a = a + 10

wend

语法描述:

30.3.4其他控制命令

break 用在for-next和while-wend语句中。当遇到此语句时,立即跳转到语句的结束部分。

30.4 子函数

使用子函数可以有效的减少循环命令的代码,子函数必须在使用前被定义,且可以使用任何变量和语句类型。在主函数中,将子函数的参数放置在子函数名称后面的圆括号中,即可调用子函数。子函数被执行后,将执行后的结果返回到主函数需要的赋值语句或者条件中。其语法结构如下:

sub type <函数名称> [(parameters)]

Local variable declarations

[Statements]

[return [value]]

end sub

举例:

sub int Add(int x, int y)

int result

x

+y

result

=

result

return

sub

end

main()

macro_command

int

a = 10,

b = 20, sum

sum = Add(a, b) end macro_command

语法描述:

30.5 内置函数功能

EasyBuilder8000软件宏指令中本身提供了一些内建的函数用来从PLC 获取数据和传输数据到PLC 、数据处理和数学运算等。

30.5.1 数学运算函数

SIN(90, result)// result is 1

source = 30

SIN(source, result)// result is 0.5

end macro_command

语法名称TAN

语法TAN(source, result)

描述三角函数的正切计算。数据来源“source”可以是常数或者变量,但是存放结果的“result”必须为变量。

举例macro_command main()

float source, result

TAN(45, result)// result is 1

source = 60

TAN(source, result)// result is 1.732

end macro_command

函数名称COT

语法COT(source, result)

描述三角函数的余切计算。数据来源“source”可以是常数或者变量,但是存放结果的“result”必须为变量。

举例macro_command main()

float source, result

COT(45, result)// result is 1

source = 60

COT(source, result)// result is 0.5774

威纶触摸屏宏指令使用说明

第三十章 宏指令说明 (2) 30.1宏指令的结构 (2) 30.2宏指令的语法 (4) 30.2.1 常量和变量 (4) 30.2.2运算符 (7) 30.3语句 (10) 30.3.1定义语句 (10) 30.3.2赋值语句 (11) 30.3.3逻辑运算语句 (11) 30.3.4 循环语句 (13) 30.3.4其他控制命令 (15) 30.4 子函数 (16) 30.5内置函数功能 (17) 30.5.1 数学运算函数 (18) 30.5.2 数据转换函数 (24) 30.5.3 数据操作函数 (29) 30.5.4 位状态转换 (34) 30.5.5 通讯有关的函数 (37) 30.6 怎样建立和执行宏指令 (52) 30.6.1 怎样建立一个宏指令 (52) 30.6.2 执行宏指令 (57) 30.7 使用宏指令时的注意事项 (58) 30.8 使用自由协议去控制一个设备 (59) 30.9 编译错误提示信息 (67) 30.10 宏指令范例程序 (78)

第三十章宏指令说明 宏指令提供了应用程序之外附加的你所需要的功能。在MT8000人机界面运行时,宏指令可以自动的执行这些命令。它可以担负执行譬如复杂的运算、字符串处理,和使用者与工程之间的交流等功能。本章主要介绍宏指令的语法、如何使用和编程方法等功能。希望通过本章的说明,能够使各位能够快速的掌握EB8000软件提供的强大的宏指令功能。 30.1宏指令的结构 宏指令是由各种语句组成的。这些语句包含常数、变量和各种运算符。这些语句放置在特定的顺序位置以执行后达到一个希望的执行结果。 宏指令的结构一般为以下格式: 全局变量声明-----------------------------------可选 Sub Function Block Declarations(子函数声明) -----------------------------------可选局部变量声明 End Sub(结束子函数) macro_command main() [主函数] ------------------------------------必须局部变量声明 [各式语句]

威纶触摸屏常见问题解答FAQ

威纶触摸屏常见问题解答FAQ 大家好~以下为在平时业务工作中面对客户常见问题的一些建议解答方式: 1、问:介绍威纶通公司的历史由来, 答:威纶触摸屏是1995年在台湾成立威纶股份公司开始研发生产,04年开始过来大陆设 立公司,现在全国有4间公司,分别为深圳公司、苏州公司、北京公司、武汉公司,并在 全国设有40多个办事处,在海外的美国和韩国都有分公司;根据在国内各类型的大型的 机械展上的统计,我们的屏的占有率是排第一的。 2、问:威纶通与eview的关系, 答:威纶通触摸屏在95年就开始在台湾生产销售,在95至04年这9年之间是给深圳人 机公司贴牌销售,在04年深圳人机开始仿造生产威纶通触摸屏,从那时开始 已经脱离关 系,而且已经认定为仿造;所以在04年开始台湾公司就过来大陆注册了威纶通公司,现 在有威纶通深圳公司,威纶通苏州公司,威纶通北京公司,威纶通武汉公司一共4间公司, 我们产品在HMI市场中的覆盖率接近40%,这也是威纶通金牌人机界面的体现; 3、 MT500系列产品与MT6000/8000系列产品的替换,

答:如果客户询问的是506产品,其中包括506L,506S等,可以使用我们的6056或者 6070替换;如果客户询问的是508产品,其中包括508S,508T等,首先询问客户情况, 如果是新设备生产,可以告知客户该型号已经在09年停产,现在是MT6100I 代替该型号 产品,性价比更好,显示更宽,开孔会略大,并给客户提供产品资料并告知其开孔尺寸, 如果是维修备用,就告知客户该型号在09年已经停产,现在取代它的是 MT6070IH加一 个我们公司配备的外框,需要安装EB8000软件把MT500的程序转换过来就OK;如果客 户询问的是MT510产品,首先问情况客户是MT510C/S/T,其中只有MT510TV5是用 MT6100I可以直接替换,其他包括MT510TV4在内的都需要我们公司配备的外框,这里 面的替换都需要使用EB8000软件把MT500的程序转换过来;如果还有不明白的,可以 打我的电话,或者拨打我们的技术服务专线4008880872,会得到更专业的解答,谢谢~ 4、从哪些方面介绍我们产品MT6000/MT8000的硬件软件功能, 答:主要抓住我们产品的色彩, CPU,内存,内置了隔离保护器以及强大的宏指令功能 等来说; 5、请问触摸屏出现漂移,如果校准触摸屏,

很好的威纶通通讯协议与变频器通讯案例

本文研究的是触摸屏通过MODBUS RTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。Modbus RTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUS RTU通讯协议的报文如图1。 图1 MODBUS RTU 通讯协议的报文功能码如下: 01H 读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H 读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H 读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容; 04H 读取输入寄存器。从执行机构上读取输入寄存器(16位字)的内容; 05H 强置单线圈。写数据到执行机构的线圈(单个位)为“通”(“1”)或 “断”(“0”); 06H 预置单寄存器。写数据到执行机构的单个保持寄存器(16位字); 0FH 强置多线圈。写数据到执行机构的几个连续线圈(单个位)为“通”(“1”) 或“断”(“0”); 10H 预置多寄存器。写数据到执行机构的几个连续的保持寄存器(16位字)。 二、威纶通编程软件介绍: EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有3x_bit,4x_bit,6x_bit,0x_multi_coils等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。 1x:是一个只读的设备类型,相当于读取PLC的输入点。读取位状态的时候发出的功能码为02H。 3x:是一个只读的设备类型,相当于读取PLC的模拟量。读数据的时候,发出的功能码是04H。 4x:是一个可读可写的设备类型,相当于操作PLC的数据寄存器。当读取数据的时候,发出的功能码是03H,当写数据的时候发出的功能码时10H,可写多个寄存器的数据。 5x:该设备类型与4x的设备类型属性是一样的。即发出读写的功能码完全一样,不同之处在于:当为双字时,例如32_bit unsigned格式的数据,使用5x和4x两种设备类型分别读取数据时,高字和低字的位置是颠倒的。例如,使用4x设备类型读到的数据是0x,那么使用5x设备类型读到的数据是0x。

很好的威纶通MODBUSRTU通讯协议与变频器通讯案例

本文研究的是触摸屏通过 MODBUS RTU 通讯协议与变频器通讯实现变频器的控制。 触摸屏 采用威纶通TK6070IP,变频器用汇川 MD380通用系列。通过触摸屏编程软件,编辑控制画 面实现变频器的启动、停止、速度调节、 多段速速度设置,通过宏指令实现工程值与实际值 的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、 自动化系统和所连接的分散的现场设备之间进行信息交换, 如今串 行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技 术,可以节省多至 40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设 备的所有相关信息, 比如输入和输出 数据、参数、 诊断数据。过去使用的现场总线往往是制 造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和 标准化的。这就意味者用户可以以最合理的价格选择最好的产品, 而不用依赖于每个独立的 制造商。Modbus RTU 是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总 线协议,在全世界范围内,Modbus 得到了成功的应用。 应用领域包括生产过程中的自动化、 过程控制和楼宇自控。 MODBUS RTU 通讯协议的报文如图 1 。 或断”(“0” 10H 预置多寄存器。 二、威纶通编程软件介绍: EB8000 软件中 MODBUS 协议的设备类型为 0x 、1x 、3x 、4x 、5x 、6x ,还有 3x_bit , 4x_bit , 6x_bit, 0x_multi_coils 等,下面分别说明这些设备类型在 MODBUS 协议中支持哪些功能码。 0x :是一个可读可写的设备类型,相当于操作 PLC 的输出点。该设备类型读取位状态的时 候,发出的功能码是 01H ,写位状态的时候发出的功能码是 05H 。写多个寄存器时发出的功 能码是0fH 。 1x :是一个只读的设备类型,相当于读取 PLC 的输入点。读取位状态的时候发出的功能码 为 02H 。 3x :是一个只读的设备类型,相当于读取 PLC 的模拟量。读数据的时候,发出的功能码是 04H 。 4x :是一个可读可写的设备类型,相当于操作 PLC 的数据寄存器。当读取数据的时候,发 出的功能码是03H ,当写数据的时候发出的功能码时 10H ,可写多个寄存器的数据。 01H 02H 03H 04H 05H 断” 06H 读取线圈状态。 读取离散量输入。 读取保持寄存器。 读取输入寄存器。 强置单线圈。 (“ 0) 预置单寄存器。 强置多线圈。 从执行机构上读取线圈(单个位)的内容; 从执行机构上读取离散量输入(多个位)的内容; 从执行机构上读取保持寄存器(16位字)的内容; 从执行 机构上读取输入寄存器(16位字)的内容; 写数据到执行机构的线圈(单个位)为 通”(“D”或 写数据到执行机构的单个保持寄存器( 16位字); 通”(“1)” 16位字)。 写数据到执行机构的几个连续的保持寄存器(

触摸屏与伺服驱动器APCM模式编程总结

伺服驱动器APCM模式编程总结 经过一个多月的努力,终于将触摸屏控制伺服驱动器工作于APCM模式的程序做好了。这段时间,在赵老师的指导下,我不断查找资料、上机实验、询问客服等方法,终于将触摸屏控制伺服驱动器工作于APCM模式的不同控制方式下的几个程序做了出来。在这个过程中,我收获了很多的知识,不仅是关于触摸屏与伺服电机的专业知识,更多的是在程序设计中怎样与实践结合,怎样从使用方便的角度去设计程序。我编写的程序包括APCM模式的单次定位方式程序、APCM模式的连续定位方式、APCM模式的连续速度模式和两轴联动的APCM单次绝对位置定位模式,以及内部速度通信调速模式。在这里,我将各个程序的编写方法及宏指令总结如下。 首先说明编写程序及调试所用的主要设备:两台珠海运控PSDA0633A6伺服驱动器及两台BPA6系列60型C60-30伺服电机、一台威纶通MT6070iH触摸屏。 一、APCM模式的连续定位方式 使用APCM模式,需先将51号参数设为5,然后断电再上电,该模式才会有效。伺服驱动器工作在APCM模式的单次定位方式,需在单次定位控制方式页面打开时,设定65号参数为11850(APCM控制字为10111110001010)。屏幕上需设定速度参数设定、伺服ON、伺服OFF、启动、停止、故障处理等6个主要控制键,分别用于切换到速度设定窗口、打开伺服、关闭伺服、启动电机、停止电机和故障处理等。在屏幕上还要设置一个趋势图元件,来形象显示电机的实时速度,同时趋势图元件还可以查看过去某个时刻的速度、观察速度曲线等功能。我在该定位方式的控制控制页面上还添加了伺服准备好、伺服ON、正转、反转、驱动器报警等运行状态显示元件来实时显示伺服驱动器的运行状态。为了根据需要实现电机的正反转,还用到了两个置位开关,位地址都为0x52,但是在这里我将这两个置位开关做成透明的,然后在上面添加两个位地址也为0x52的位状态指示灯,这样在点击正转或反转的按键后,相应的位状态指示灯就会亮,表明正转(反转)设定有效。同时在控制页面上还添加了一个保存参数的按键,用来将设定的参数保存在伺服驱动器里。控制页面上所用的元件的地址都是根据伺服驱动器手册里的Modbus协议分配的地址来设定的。 在做这个连续定位方式的程序过程中,曾经遇到两个问题:第一个问题是,在设定好电机的加减速时间后(运行速度设定为600转),电机从0转开始启动,加速到600转,然后按停止键,电机瞬时停止,可以在趋势图上观察到启动的时候速度曲线是斜线,停止的时候速度曲线是一条竖直线,这说明启动的时候电机按设定的加减速时间启动了,但是停止的时候没按设定的加减速时间停止。如果将电机从0转加速到3000转,可以在趋势图上观察到电机按设定的加减速时间启动了,按下停止键,电机会瞬时停止转动,同时会发生很大的噪声,这时在趋势图上观察到停止的时候速度曲线是一条竖直线。反复分析了这种情况,最后找到了出现这种情况的原因是在电机停止的宏指令里,没有在减速指令后加上一条延时指令来给电机时间减速,而是直接执行停止指令,这样电机刚接收到减速指令,马上就又接收到停止指令,电机来不及减速,转速直接从3000转跌到0转,这样就产生了很大的震动和噪声。后来我在电机停止的宏指令里添加了电机从设定的运行速度减速到启动速度的延时时间,这个问题才得以解决。第二个问题是,我在调试的过程中,发现加减速时间的设定值超过8100mm时,不论设定的加减速时间是多少,电机都在两秒钟左右的时间内加速到运行速度。特别是把加减速

宏指令使用手册

EasyBuilder 500 Macro使用说明 一:文档说明 作者 : 程志刚 时间 : 2003年1月 版权所有 : 台湾威纶科技有限公司 概要 : 此文档为宏指令功能模块的使用文档,说明宏语言的语法,宏语言的使用,宏指令源程序编写的操作方法与操作顺序, 使用文档包含以下几个部分: 宏语言文本说明: 宏语言使用说明 宏指令程序与PLC的通信(包括本地地址LocalBit,LocalWord): 宏指令操作说明 有关宏指令使用的若干说明 编译错误提示 程序示例源程序 二:宏语言文本说明: 1: 常数与变量 a:常量 (1)十进制常量 (2)十六进常数 (3)单引号内的ASCII常量(字符常量) (4) 逻辑常量:True (非零),False(零) b:变量 (a)变量命名 必须以字每开头,其它字符可以是字每或数字,不得超过32个字符的长度 (b) 数据类型 (char) 字符类型 (int) 整数类型 32-bit (short) 短整数类型 16-bit (float) 浮点数类型 (bool ) 逻辑类型 2: 运算符 (1)赋值运算 赋值运算: = (2)算术运算: 加:+ 减:- 乘:*

除:/ 余:mod , (3)关系运算: 小于:< 小于等于:<= 大于:> 大于等于: >= 等于: == 不等于: <> (4)逻辑运算: 逻辑于:And 逻辑或:Or 逻辑Xor 逻辑非:Not (5)位运算: (a)移位运算 左移: << 右移: >> (b)逻辑位运算 位与运算: & 位或运算: | 位异或运算: ^ 位取反运算: ~ 3: 运算符的优先级: 表达式中执行多个操作时,每一部分都按规定的顺序计算,这种运算符间的计算次序,叫运算符的优先级 (1)同一种类运算符的优先顺序(按左到右,依次从高到低) 算术运算符 : ^ ?( * , / ) ? ( mod ) ? ( + , - ) 移位运算: 其出现的优先顺序,按在表达式中出现的次序从左到右进行处理 关系运算符 : 其出现的优先顺序,按在表达式中出现的次序从左到右进行处理 逻辑运算符 : Not ? And ? Or ? Xor, (2) 算术运算优先于位运算 位运算优先于关系运算 逻辑运算优先于赋值运算 4: 数组 (1)数组 : 只支持静态一维数组,形式为: 一维数组 : 数组名[数组的大小] 数组的下标为整数其可取值区间为0 --- 4294967295 下标最小值:零

威纶通配方——宏指令

/**********************************************************行号刷新——number**********************************************************/ macro_command main() short index,array[10] //数组array[10]是存放行号的数组 bool OFF=false,ON=true GetData(index, "本机触摸屏", LW, 9000, 1)//a用于提取索引寄存器的当前值 array[0]=1+index/70 //索引寄存器的值以700的倍数递增,即以当前页面中占用地址总数为基数 array[1]=array[0]+1 array[2]=array[1]+1 array[3]=array[2]+1 array[4]=array[3]+1 array[5]=array[4]+1 array[6]=array[5]+1 array[7]=array[6]+1 array[8]=array[7]+1 array[9]=array[8]+1 SetData(array[0], "本机触摸屏", RW, 7800, 10) //RW7800~RW7809中存放行号 SetData(OFF, "本机触摸屏", LB, 4, 1) //清零宏指令触发位 end macro_command

/**********************************************************新增——add**********************************************************/ macro_command main() short name[5],temp[5],data[65] short i,var=0,CurtLine=0,index=0,NextLine=0 bool OFF=false,flag=false GetData(CurtLine, "本机触摸屏", RW, 8000, 1) //获取RW8000的值,即保存的行数 GetData(name[0], "本机触摸屏", LW, 0, 5)//获取LW0的值,即输入的配方名 GetData(data[0], "Panasonic FP", DT, 32700, 65)//获取当前HMI的数据输入值 //判断数据表是否填满,若未填满,则判断是否有重名 if CurtLine==100 then flag=true SetData(flag, "本机触摸屏", LB, 22, 1) else //判断是否有重名 for i=0 to 99 step 1 GetData(temp[0], "本机触摸屏", RW, var, 5)//遍历每一行的配方名 if name[0]==temp[0] and name[1]==temp[1] and name[2]==temp[2] and name[3]==temp[3] and name[4]==temp[4] then

威纶触摸屏常见问题解答FAQ

大家好!以下为在平时业务工作中面对客户常见问题的一些建议解答方式: 1、问:介绍威纶通公司的历史由来? 答:威纶触摸屏是1995年在台湾成立威纶股份公司开始研发生产,04年开始过来大陆设立公司,现在全国有4间公司,分别为深圳公司、苏州公司、北京公司、武汉公司,并在全国设有40多个办事处,在海外的美国和韩国都有分公司;根据在国内各类型的大型的机械展上的统计,我们的屏的占有率是排第一的。 2、问:威纶通与eview的关系? 答:威纶通触摸屏在95年就开始在台湾生产销售,在95至04年这9年之间是给深圳人机公司贴牌销售,在04年深圳人机开始仿造生产威纶通触摸屏,从那时开始已经脱离关系,而且已经认定为仿造;所以在04年开始台湾公司就过来大陆注册了威纶通公司,现在有威纶通深圳公司,威纶通苏州公司,威纶通北京公司,威纶通武汉公司一共4间公司,我们产品在HMI市场中的覆盖率接近40%,这也是威纶通金牌人机界面的体现; 3、MT500系列产品与MT6000/8000系列产品的替换? 答:如果客户询问的是506产品,其中包括506L,506S等,可以使用我们的6056或者6070替换;如果客户询问的是508产品,其中包括508S,508T等,首先询问客户情况,如果是新设备生产,可以告知客户该型号已经在09年停产,现在是MT6100I代替该型号产品,性价比更好,显示更宽,开孔会略大,并给客户提供产品资料并告知其开孔尺寸,如果是维修备用,就告知客户该型号在09年已经停产,现在取代它的是MT6070IH加一个我们公司配备的外框,需要安装EB8000软件把MT500的程序转换过来就OK;如果客户询问的是MT510产品,首先问情况客户是MT510C/S/T,其中只有MT510TV5是用MT6100I可以直接替换,其他包括MT510TV4在内的都需要我们公司配备的外框,这里面的替换都需要使用EB8000软件把MT500的程序转换过来;如果还有不明白的,可以打我的电话,或者拨打我们的技术服务专线4008880872,会得到更专业的解答,谢谢! 4、从哪些方面介绍我们产品MT6000/MT8000的硬件软件功能? 答:主要抓住我们产品的色彩,CPU,内存,内置了隔离保护器以及强大的宏指令功能等来说; 5、请问触摸屏出现漂移,如果校准触摸屏? 答:我们屏的后面有4个拨码开关,请您把屏后面的拨码开关的第一个拨到ON得位置,然后重启触摸屏,在接下来会在屏的左上角出现一个十字光标,请您用触控笔点十字光标的中心点,接下来会出现4个十字光标,你跟着点完,然后会弹出一个对话框,让您选择YSE或者NO,如果您需要清楚里面的程序,就选择YES,如果您需要保留您之前的程序,就选择NO,这样就完成了一次校准,记住要把刚才拨上去的拨码开关拨回到OFF的位置,如果还有不明白的,可以打我的电话,或者拨打我们的技术服务专线4008880872,会得到更专业的解答,谢谢! 6、请问触摸屏右下角的小箭头有什么作用的呢?它又如何隐藏呢? 答:这个小箭头您点击它后,会出现一个工具栏,其中有一个扳手图标,这个图标打开后,可以设定触摸屏的一些密码,例如系统密码,上传下载密码等,还可以调节触摸屏的亮度等;如果您想隐藏它的话,可以把触摸屏后面的4个拨码开关的第2个拨到ON的位置,然后重启触摸屏就可以了;如果还有不明白的,可以打我的电话,或者拨打我们的技术服务专线4008880872,会得到更专业的解答,谢谢! 7、我安装了USB驱动怎么还是无法下载呢? 答:这里分为2种情况,第一、如果客户是正确安装了USB驱动,下载过程中出现错误,

威纶通触摸屏内部寄存器说明

威纶通触摸屏内部寄存器说明 威纶通触摸屏内部寄存器说明 LB-9000 : 重新开机时状态为Local HMILB ON9000LB-9001 : 重新开机时状态为Local HMILB ON9001LB-9002 : 重新开机时状态为Local HMILB ON9002LB- 9003 : 重新开机时状态为Local HMILB ON9003LB-9004 : 重新开机时状态为Local HMILB ON9004LB-9005 : 重新开机时状态为Local HMILB ON9005LB-9006 : 重新开机时状态为Local HMILB ON9006LB-9007 : 重新开机时状态为Local HMILB ON9007LB-9008 : 重新开机时状态为Local HMILB ON9008LB-9009 : 重新开机时状态为Local HMILB ON9009LB-9010 : 资料下载指示Local HMILB LB-9011 :资料上传指示Local HMILB LB-9012 :资料下载Local HMI/ 上传指示LB LB-9013 :隐藏Local HMI (设ON)/LB 显示 LB-9014 :隐藏Local HMI (设ON)/LB 显示 LB-9015 :隐藏Local HMI (设ON)/LB 显示 LB-9016 :远程Local HMI HMI 连接至本机LB LB-9017 :取消Local HMI PLC 控制元件LB LB-9018 :隐藏Local HMI (设ON)/LB 显示 LB-9019 :取消Local HMI (设ON)/LB 开启 LB-9020 :显示Local HMI (设ON)/LB 隐藏 LB-9021 :重置当前的事件记录Local HMILB ——————————————

威纶通软件应用案例

软件应用问题: 1、程序画面出现无法切换页面现象 问题描述:HMI在快速切换时出现死机现象,无法切换页面; 解决思路:1、客户采用元件—PLC控制—切换基本窗口的功能切换页面;并采用宏命令执行窗口切换; 2、在宏指令中增加delay函数,放慢宏指令的执行速度,因为如果不加延时宏指 令则会执行速度太快,导致page变量在0-102或0-107瞬间变化,从而无法切换 画面。 修改后的宏指令如下图所示: 2、对多个PLC寄存器数据同时递减运算问题 问题描述:对多个地址的寄存器数据递减运算,如PLC的D20—D29,初始值是 9,8,7,6,0,1,2,3,4,5。每触控一次按键就作为减一处理,直到全部为0(不能 为负值)。 解决思路:1、使用功能键触发一个宏指令处理,但出现数值递减后为负(-1,-2,-3......)或跳转到65535的的情况。出现负值的原因是数值显示元件没有选择格式为 16-bit unsigned;出现65535的原因是,宏指令中定义的数据格式是unsigned short短整型变量,范围是0---65535.零减一,溢出,变成65535。 2、加入逻辑判断,修改后的宏指令如下图所示:

3、远程备份事件记录不能成功 问题描述:建立事件远程备份时,使用旧程序成功,新建一个程序不成功。 解决思路:1、检查EB8000系统参数配置和EasyPrinter配置正确。 2、新建程序中,事件登录没有选择保存位置,即只在内存中存在报警记录,故 HMI或U盘中没有可以备份的历史记录,此程序无法备份。将“事件登录”选择 保存位置即可。具体操作如下图所示: 4、EB8000宋体载入问题 问题描述:某客户使用EB8000软件,无法载入宋体。 解决思路:1、检查客户的电脑操作系统,该操作系统为双系统,win7和xp系统,win7系统

威纶通配方——宏指令

威纶通配方——宏指令

/**********************************************************行号刷新——number**********************************************************/ macro_command main() short index,array[10] //数组array[10]是存放行号的数组 bool OFF=false,ON=true GetData(index, "本机触摸屏", LW, 9000, 1)//a用于提取索引寄存器的当前值 array[0]=1+index/70 //索引寄存器的值以700的倍数递增,即以当前页面中占用地址总数为基数 array[1]=array[0]+1 array[2]=array[1]+1 array[3]=array[2]+1 array[4]=array[3]+1 array[5]=array[4]+1 array[6]=array[5]+1 array[7]=array[6]+1 array[8]=array[7]+1 array[9]=array[8]+1 SetData(array[0], "本机触摸屏", RW, 7800, 10) //RW7800~RW7809中存放行号 SetData(OFF, "本机触摸屏", LB, 4, 1) //清零宏指令触发位

end macro_command /**********************************************************新增——add**********************************************************/ macro_command main() short name[5],temp[5],data[65] short i,var=0,CurtLine=0,index=0,NextLine=0 bool OFF=false,flag=false GetData(CurtLine, "本机触摸屏", RW, 8000, 1) //获取RW8000的值,即保存的行数 GetData(name[0], "本机触摸屏", LW, 0, 5)//获取LW0的值,即输入的配方名 GetData(data[0], "Panasonic FP", DT, 32700, 65)//获取当前HMI的数据输入值 //判断数据表是否填满,若未填满,则判断是否有重名 if CurtLine==100 then flag=true SetData(flag, "本机触摸屏", LB, 22, 1) else //判断是否有重名 for i=0 to 99 step 1 GetData(temp[0], "本机触摸屏", RW, var, 5)//遍历每一行的配方名

HMI触摸屏与PLC控制器通信串口设置

二、HMI人机界面地址/宏指令使用情况【威纶通】系统参数设置: 1.威纶通还与TIG控制盒通信,并且还需威纶通与信捷PLC通信, TIG控制盒与信捷PLC都是支持[MODBUS RTU]协议, 【PLC预设站号】直接填写3/23,随便写其中一个站号就行了。 PLC1:COM1 9600 N 8 1 MODBUS RTU PLC预设站号23 只是在访问的时候的地址修改下: 如果访问TIG,地址写成MODBUS RTU 4x 23#100, 如果访问PLC,地址写成MODBUS RTU 4x 3#100, 4x表示就是往PLC写多个D类寄存器。 信捷PLC串口设置 (1)如果只启用基础板上的通信口2或AB端子(RS485),则需要设置串口2。 串口2:9600 N 8 1 MODBUS RTU 站号3 (2)如果只启用扩展板上的AB端子(RS485),则需要先配置BD板,选择【配置BD】点击确定,再进行下载程序。需设置串口3,设置OK后再断电重启。 串口3:9600 N 8 1 MODBUS RTU 站号3 (3)如果基础板AB端子和扩展板上的AB端子(RS485)都启用,那么串口2 和串口3的站号不能相同。串口2和串口3的配置如下: 串口2:9600 N 8 1 MODBUS RTU 站号1 串口3:9600 N 8 1 MODBUS RTU 站号3 2.威纶通还与TIG控制盒通信,并且还需威纶通与其他PLC通信, TIG控制盒支持[MODBUS RTU]协议,而其他PLC支持另外一种协议, 那么威纶通的PLC配置就不能参考上面的,正确配置如下: PLC1: COM1 9600 N 8 1 MODBUS RTU PLC预设站号23 PLC2: COM3 9600 N 8 1 其他PLC协议 PLC预设站号3 需要同时启用威纶通的2个串口,并且PLC预设站号不能相同。 在访问的时候的地址修改下: 如果访问TIG,地址写成MODBUS RTU 4x 100, 如果访问PLC,地址写成其他PLC协议 4x 100, 4x表示就是往PLC写多个D类寄存器。 其他PLC串口设置,根据实际情况设置。

威纶通人机界面宏指令执行机制说明

威纶通人机界面宏指令执行机制说明 2013.06 Q:一般会有多个宏指令同时被触发,那么多个宏指令并发执行的机制是什么,是顺序执行还是如何?如何避免多个宏指令同时执行时发生碰撞冲突?如何排序各个宏指令的周期式执行? A: ●【HMI分时系统】HMI是一个time-slicing分时系统;PLC控制,事件登录各部分独立运作,没有优 先权。HMI会平均把命令丢给COM口的序列,COM依次执行; ●【顺序执行机制】宏指令执行时,依照宏指令编号顺序, 依序检视宏指令是否被触发执行。 ●【不存在碰撞的问题】因PLC的COM port就是一个,不可能同时执行两个MACRO的读写; ●【一执行,余闲置】当某一条宏指令在执行时, 其余的宏指令将处在idle闲置状态; ●【等待时交出执行权】执行中的宏指令,如读写到PLC地址或DELAY动作时, 会将命令发送到 command queue中, 并等待命令执行完成的讯息。而在将命令发出的同时,会将执行权交给下一条等待执行的宏指令; ?如:同一个LB0上升沿触发多个宏指令(macro 0、macro1、macro2......macro7),那么将先执行 macro 0,然后执行macro2,继而是macro3...... ?在执行macro 0时,如果读写到PLC地址或DELAY(dleay_tme)动作,那么会等待回复,并把执行 权交出,先执行macro1; ?Macro1同样如此,如果读写到PLC地址或DELAY(dleay_tme)动作,那么会等待回复,并把执行权 交出,先执行macro3...... ?一直到macro7,然后再从macro0继续,如此反复循环; ●【等待被检视机制】接收到命令完成讯息的宏指令, 也不是立即恢复执行状态, 而是等到下一次被检 视时, 才会恢复执行状态; ●【周期执行方式】如需周期式执行宏指令, 可以利用物件设定触发周期, 或是直接设定宏指令的执行 周期(EB8000 V4.65.06) ●【多个位信号触发同一个宏指令的顺序】宏指令被触发执行后,假使仍处于执行状态,则不再接受 其它触发讯号,因此宏指令在执行状态时,并不会因被触发多次而多次执行。 ●【人为控制】如有需要控制宏指令的执行顺序, 用户可以利用同步与异步的命令来控制; ASYNC_TRIG_MACRO 异步触发宏指令 [Description] This function will trigger the designated MACRO and continue the next instructions. 此函数将触发指定宏指令,并继续执行接下来的接下来的指令; [Usage] ASYNC_TRIG_MACRO(macro_id) // macro_id is a constant or variable [Example] ASYNC_TRIG_MACRO(5) // execute MACRO 5 SYNC_TRIG_MACRO 同步触发宏指令 [Description] This function will trigger the designated MACRO and wait for the end of the execution of this designated MACRO. 此函数将触发指定宏指令,并等待指定宏指令执行完毕; [Usage] SYNC_TRIG_MACRO(macro_id) // macro_id is a constant or variable [Example] SYNC_TRIG_MACRO(5) // execute MACRO 5

关于威纶通宏指令的2份实用案例

关于威纶通宏指令的2份实用案例 威纶通宏指令控制PLC点位断电保持的案例 触摸屏是TK6070iP ,PLC是欧姆龙CP系列 需要达到的目的:触摸屏上的按钮按下时,同时控制PLC上的点动作 EB8000提供了可以掉电保存的寄存器RW和RW_A两种寄存器来实现配方的保存和传送。在此选择了保持寄存器的位地址为RW_Bit 2(具体地址可以自主选择,只要选择的寄存器可以断电保持的就可以); 威纶通的触摸屏无法直接通过屏幕上的按钮控制PLC的实际输入点,需要通过中间变量点(非PLC的实际输入点)来实现控制,在此选择中间变量点CIO_Bit 19.10一、在屏幕新建一个“位状态切换开关”元件,各设置如下

二、为了在测试时便于观察,可以在屏幕上新建两个位状态指示灯

三、因为断电保持的是RW_Bit 2的数据,而CIO_Bit 19.10不能保持,所以需要另外一个宏指令上电时读取RW_Bit 2的数据,并且写入CIO_Bit 19.10。新建一个“位状态设置”元件。(要把此元件放在触摸屏上电开机之后的第一页面中)

这里的位地址不一定要用RW_Bit只要不和其他数据地址冲突就可以使用。 四、宏指令 [ID:000] Macro_0 macro_command main() bool d GetData(d, "Local HMI", RW_Bit, 2, 1) if d==1 then SetData(d, "OMRON CJ/CS/CP", CIO_Bit, 19.10, 1) else if d==0 then SetData(d, "OMRON CJ/CS/CP", CIO_Bit, 19.10, 1)

很好的威纶通MODBUSRTU通讯协议与变频器通讯案例

很好的威纶通 M O D B U S R T U通讯协议与变频器通讯案例 Modified by JEEP on December 26th, 2020.

本文研究的是触摸屏通过MODBUSRTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUSRTU简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。ModbusRTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUSRTU通讯协议的报文如图1。 图1 MODBUSRTU通讯协议的报文功能码如下: 01H读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容;

威纶通触摸屏内部寄存器说明

威纶通触摸屏内部寄存器说明 ------------------------------------------------------------------------------------------------ 威纶通触摸屏内部寄存器说明 LB-9000 : 重新开机时状态为Local HMILB ON9000LB-9001 : 重新开机时状态为Local HMILB ON9001LB-9002 : 重新开机时状态为Local HMILB ON9002LB-9003 : 重新开机时状态为Local HMILB ON9003LB-9004 : 重新开机时状态为Local HMILB ON9004LB-9005 : 重新开机时状态为Local HMILB ON9005LB-9006 : 重新开机时状态为Local HMILB ON9006LB-9007 : 重新开机时状态为Local HMILB ON9007LB-9008 : 重新开机时状态为Local HMILB ON9008LB-9009 : 重新开机时 状态为Local HMILB ON9009LB-9010 : 资料下载指示Local HMILB LB-9011 : 资料上传指示Local HMILB LB-9012 : 资料下载Local HMI/上传指示LB LB-9013 : 隐藏Local HMI (设 ON)/LB显示 LB-9014 : 隐藏Local HMI (设 ON)/LB显示 LB-9015 : 隐藏Local HMI (设 ON)/LB显示 LB-9016 : 远程Local HMI HMI 连接至本机LB LB-9017 : 取消Local HMI PLC 控制元件LB LB-9018 : 隐藏Local HMI (设 ON)/LB显示 LB-9019 : 取消Local HMI (设 ON)/LB开启 LB-9020 : 显示Local HMI (设 ON)/LB隐藏 LB-9021 : 重置当前的事件记录Local HMILB ——————————————————————————————————————

威纶通配方——宏指令

macro_command main() short index,array[10] //数组array[10]是存放行号的数组 bool OFF=false,ON=true GetData(index, "本机触摸屏", LW, 9000, 1)//a用于提取索引寄存器的当前值 array[0]=1+index/70 //索引寄存器的值以700的倍数递增,即以当前页面中占用地址总数为基数 array[1]=array[0]+1 array[2]=array[1]+1 array[3]=array[2]+1 array[4]=array[3]+1 array[5]=array[4]+1 array[6]=array[5]+1 array[7]=array[6]+1 array[8]=array[7]+1 array[9]=array[8]+1 SetData(array[0], "本机触摸屏", RW, 7800, 10) //RW7800~RW7809中存放行号 SetData(OFF, "本机触摸屏", LB, 4, 1) //清零宏指令触发位 end macro_command /**********************************************************新增——add**********************************************************/ macro_command main() short name[5],temp[5],data[65] short i,var=0,CurtLine=0,index=0,NextLine=0 bool OFF=false,flag=false GetData(CurtLine, "本机触摸屏", RW, 8000, 1) //获取RW8000的值,即保存的行数 GetData(name[0], "本机触摸屏", LW, 0, 5)//获取LW0的值,即输入的配方名 GetData(data[0], "Panasonic FP", DT, 32700, 65)//获取当前HMI的数据输入值 //判断数据表是否填满,若未填满,则判断是否有重名 if CurtLine==100 then flag=true SetData(flag, "本机触摸屏", LB, 22, 1) else //判断是否有重名 for i=0 to 99 step 1 GetData(temp[0], "本机触摸屏", RW, var, 5)//遍历每一行的配方名 if name[0]==temp[0] and name[1]==temp[1] and name[2]==temp[2] and name[3]==temp[3] and name[4]==temp[4] then flag=true SetData(flag, "本机触摸屏", LB, 21, 1)//若有重名则跳出“警告”框,提示该配方已存在 else var=var+70//否则开始查询下一行 end if next i

相关主题
文本预览
相关文档 最新文档