威纶通配方——宏指令

  • 格式:doc
  • 大小:54.50 KB
  • 文档页数:9

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/**********************************************************行号刷新——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

flag=true

SetData(flag, "本机触摸屏", LB, 21, 1)//若有重名则跳出“警告”框,提示该配方已存在

else

var=var+70//否则开始查询下一行

end

if

next i

//遍历所有行未找到匹配值,就将配方名和数据保存在数据表中

if flag==false then

var=0

var=70*CurtLine //当前行的索引量

SetData(name[0], "本机触摸屏", RW, var, 5)//将LW0中的配方名保存至新地址RW(0+var)中

SetData(data[0], "本机触摸屏", RW, 5+var, 65)//将DT32700中连续的65个数据保存在RW(5+var)65个连续的地址中

//下面程序是实现数据表行数增加

if CurtLine<100 then

NextLine=CurtLine+1

index=(NextLine/10)*700

SetData(NextLine, "本机触摸屏", RW, 8000, 1)

SetData(index, "本机触摸屏", LW, 9000, 1)

flag=true

SetData(flag, "本机触摸屏", LB, 4, 1)

end if

end if

end if

FILL(name[0], 0, 5)

SetData(name[0], "本机触摸屏", LW, 0, 5)//清空LW0的值,即清空输入的配方名

SetData(OFF, "本机触摸屏", LB, 0, 1) //清零宏指令触发位

end macro_command

/**********************************************************调用——aquire**********************************************************/

macro_command main()

short name[5],temp[5]//定义两个数组,name[5]用于获取输入配方名,temp[5]用于获取某一行的配方名

short i,index,var=0,Data[65]//数组b[80]用于获取某一行的存储数据

bool ON=true,OFF,flag=false

GetData(name[0], "本机触摸屏", LW, 0, 5)//获取输入的配方名

//下面程序用于查找与输入的配方名匹配的数据,并将数据下载至PLC中

for i=0 to 99 step 1

相关主题