文档库 最新最全的文档下载
当前位置:文档库 › WINCC6.0 VBS 使用指令

WINCC6.0 VBS 使用指令

WINCC6.0 VBS 使用指令
WINCC6.0 VBS 使用指令

1、HMIRuntime.Screens(“pictureName”).ScreenItems(“objectName”)

HMIRuntime.Screens(“pictureName”) 指定的是运行的画面。

ScreenItems(“vobjectName”) 锁定操作控件名称

举例:

Sub Onclick (Bybal Item)

Dim Text, V al

Set Text = HMIRuntime.Screens(“pictureName”).ScreenItems(“objectName”)

V al= Text. Text ‘将控件的Text属性赋值给V al,从而完成获取数据的任务。

End Sub

2、HMIRuntime.Tags(“TagName”) 指向建立的通讯变量。

举例:

Sub Onclick (Bybal Item)

Dim object, V al

Set object = HMIRuntime.Tags(“TagName”)

Object.read 先执行read指令读取变量信息。

V al= Object. V alue ‘将控件的V alue属性赋值给V al,从而完成获取数据的任务。

End Sub

1、Dim: 定义变量

例如:Dim Names(9) ' Declare an array with 10 elements.

Dim Names() ' Declare a dynamic array.

Dim MyVar, MyNum ' Declare two variables.

2、HMIRuntime.activescreen.screenitems("")

3、HMIRuntime.Tags("")

4、up1.Read (1)

5、Select Case up1.V alue

Case 1

jifangduan1.backcolor = RGB(0,255,255) //

Case 2

jifangduan1.backcolor = RGB(0,255,0)

Case Else

'jifangduan1.backcolor = RGB(255,0,0)

End Select

6、CreateObject("")

7、button.Read(N)// button 是读取的对象N需要读取的长度

8、button.Write,1

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

第三十章 宏指令说明 (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() [主函数] ------------------------------------必须局部变量声明 [各式语句]

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

本文研究的是触摸屏通过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。

宏指令使用手册

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

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

威纶通触摸屏内部寄存器说明 威纶通触摸屏内部寄存器说明 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)//遍历每一行的配方名

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

威纶通人机界面宏指令执行机制说明 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

相关文档
相关文档 最新文档