1、/*行号刷新number*/macro_command main()short index,array10 /数组 array10是存放行号的数组bool OFF=false,ON=trueGetData(index, “本机触摸屏“, LW, 9000, 1)/a用于提取索引寄存器的当前值array0=1+index/70 /索引寄存器的值以 700的倍数递增,即以当前页面中占用地址总数为基数array1=array0+1array2=array1+1array3=array2+1array4=array3+1array5=array4+1array6=array5+1array7=arra
2、y6+1array8=array7+1array9=array8+1SetData(array0, “本机触摸屏“, RW, 7800, 10) /RW7800RW7809中存放行号SetData(OFF, “本机触摸屏“, LB, 4, 1) /清零宏指令触发位 end macro_command/*新增add*/macro_command main()short name5,temp5,data65short i,var=0,CurtLine=0,index=0,NextLine=0bool OFF=false,flag=falseGetData(CurtLine, “本机触摸屏“, RW
3、, 8000, 1) /获取 RW8000的值,即保存的行数 GetData(name0, “本机触摸屏“, LW, 0, 5)/获取 LW0的值,即输入的配方名 GetData(data0, “Panasonic FP“, DT, 32700, 65)/获取当前 HMI的数据输入值/判断数据表是否填满,若未填满,则判断是否有重名if CurtLine=100 thenflag=trueSetData(flag, “本机触摸屏“, LB, 22, 1)else/判断是否有重名for i=0 to 99 step 1 GetData(temp0, “本机触摸屏“, RW, var, 5)/遍历每
4、一行的配方名if name0=temp0 and name1=temp1 and name2=temp2 and name3=temp3 and name4=temp4 then flag=trueSetData(flag, “本机触摸屏“, LB, 21, 1)/若有重名则跳出“警告”框,提示该配方已存在 elsevar=var+70/否则开始查询下一行 end if next i/遍历所有行未找到匹配值,就将配方名和数据保存在数据表中if flag=false then var=0var=70*CurtLine /当前行的索引量SetData(name0, “本机触摸屏“, RW, var
5、, 5)/将 LW0中的配方名保存至新地址 RW(0+var)中SetData(data0, “本机触摸屏“, RW, 5+var, 65)/将DT32700中连续的 65个数据保存在 RW(5+var)65个连续的地址中/下面程序是实现数据表行数增加if CurtLine100 thenNextLine=CurtLine+1index=(NextLine/10)*700 SetData(NextLine, “本机触摸屏“, RW, 8000, 1)SetData(index, “本机触摸屏“, LW, 9000, 1)flag=trueSetData(flag, “本机触摸屏“, LB, 4
6、, 1)end if end if end ifFILL(name0, 0, 5)SetData(name0, “本机触摸屏“, LW, 0, 5)/清空 LW0的值,即清空输入的配方名 SetData(OFF, “本机触摸屏“, LB, 0, 1) /清零宏指令触发位 end macro_command/*调用aquire*/macro_command main() short name5,temp5/定义两个数组,name5用于获取输入配方名,temp5用于获取某一行的配方名short i,index,var=0,Data65/数组 b80用于获取某一行的存储数据bool ON=true,
7、OFF,flag=falseGetData(name0, “本机触摸屏“, LW, 0, 5)/获取输入的配方名/下面程序用于查找与输入的配方名匹配的数据,并将数据下载至 PLC中for i=0 to 99 step 1 GetData(temp0, “本机触摸屏“, RW, var, 5) /查询存储的配方名if name0=temp0 and name1=temp1 and name2=temp2 and name3=temp3 and name4=temp4 thenflag=trueGetData(Data0, “本机触摸屏“, RW, 5+var, 65) /获取匹配行的存储数据 S
8、etData(Data0, “Panasonic FP“, DT, 32700, 65) /将查找到的数据传给下位机else var=var+70 /下一个配方名地址 end if next iif flag=false thenSetData(ON, “本机触摸屏“, LB, 20, 1) end ifFILL(name0, 0, 5)SetData(name0, “本机触摸屏“, LW, 0, 5)/清空 LW0的值,即清空输入的配方名SetData(OFF, “本机触摸屏“, LB, 1, 1)/清零宏指令触发位end macro_command/*删除del*/macro_comman
9、d main() short i=0,j=0,var=0short MaxLine=0,CurtLine=0,MoveTime=0,index=0,CurtAddress=0,NextAddress=0short c70,name5,clear70,check5bool zero=0,ON=true,OFF,flag=false/获取相应操作数FILL(clear0,0,70)GetData(MaxLine, “本机触摸屏“, RW, 8000, 1) /获取数据表大小GetData(name0, “本机触摸屏“, LW, 0, 5)/获取 LW0的值,即要删除的配方名/查找要删除的记录,并将
10、其删除for i=0 to MaxLine step 1 GetData(check0, “本机触摸屏“, RW, var, 5)/查找匹配的配方名if name0=check0 and name1=check1 and name2=check2 and name3=check3 and name4=check4 thenflag=true /找到后置位标志位CurtLine=i /记录匹配配方名所在行CurtAddress=var /记录匹配配方名的地址MoveTime=MaxLine-CurtLine-1 /要移动的次数/下面程序执行数据覆盖操作for j=1 to MoveTime st
11、ep 1 NextAddress=CurtAddress+70 /记录下一条数据位置GetData(c0, “本机触摸屏“, RW, NextAddress, 70) /下一条数据记录覆盖当前记录SetData(c0, “本机触摸屏“, RW, CurtAddress, 70)CurtAddress=NextAddress /移动一次后下一地址变为当前地址next j /进行下一次数据覆盖/最后一行清零SetData(clear0, “本机触摸屏“, RW, CurtAddress, 70)/所有数据覆盖后,当前地址已经是最后一行起始地址/下面程序实现数据表行数减少 MaxLine=MaxLi
12、ne-1index=(CurtAddress/700)*700SetData(MaxLine, “本机触摸屏“, RW, 8000, 1)SetData(index, “本机触摸屏“, LW, 9000, 1) SetData(ON, “本机触摸屏“, LB, 4, 1) elsevar=var+70end ifnext i /若找不到匹配的配方记录,则报警提示 if flag=false thenSetData(ON, “本机触摸屏“, LB, 20, 1)end ifFILL(name0, 0, 5)SetData(name0, “本机触摸屏“, LW, 0, 5)/清空 LW0的值,即清
13、空输入的配方名 SetData(zero, “本机触摸屏“, LB, 3, 1) end macro_command/*首页MinPage*/macro_command main()short indexbool ON=trueGetData(index, “本机触摸屏“, LW, 9000, 1)/a用于提取索引寄存器的当前值if index=0 thenSetData(ON, “本机触摸屏“, LB, 23, 1)end ifSetData(ON, “本机触摸屏“, LB, 4, 1) end macro_command/*尾页MaxPage*/macro_command main()sh
14、ort indexbool ON=trueGetData(index, “本机触摸屏“, LW, 9000, 1)if index=6300 thenSetData(ON, “本机触摸屏“, LB, 24, 1)end ifSetData(ON, “本机触摸屏“, LB, 4, 1) end macro_command/*行号初始化Initial*/macro_command main()short array10=1,2,3,4,5,6,7,8,9,10bool OFF=falseSetData(array0, “本机触摸屏“, RW, 7800, 10)SetData(OFF, “本机触摸屏“, LB, 9000, 1)end macro_command