威纶通配方宏指令.docx

上传人:b****5 文档编号:11821933 上传时间:2023-04-03 格式:DOCX 页数:8 大小:18.85KB
下载 相关 举报
威纶通配方宏指令.docx_第1页
第1页 / 共8页
威纶通配方宏指令.docx_第2页
第2页 / 共8页
威纶通配方宏指令.docx_第3页
第3页 / 共8页
威纶通配方宏指令.docx_第4页
第4页 / 共8页
威纶通配方宏指令.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

威纶通配方宏指令.docx

《威纶通配方宏指令.docx》由会员分享,可在线阅读,更多相关《威纶通配方宏指令.docx(8页珍藏版)》请在冰豆网上搜索。

威纶通配方宏指令.docx

威纶通配方宏指令

/**********************************************************行号刷新——number**********************************************************/

macro_commandmain()

shortindex,array[10]     //数组array[10]是存放行号的数组

boolOFF=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)//清零宏指令触发位             

 

endmacro_command

 

/**********************************************************新增——add**********************************************************/

macro_commandmain()

shortname[5],temp[5],data[65]

shorti,var=0,CurtLine=0,index=0,NextLine=0

boolOFF=false,flag=false

 

GetData(CurtLine,"本机触摸屏",RW,8000,1)       //获取RW8000的值,即保存的行数 

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

GetData(data[0],"PanasonicFP",DT,32700,65)//获取当前HMI的数据输入值

 

//判断数据表是否填满,若未填满,则判断是否有重名

ifCurtLine==100then

       flag=true

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

else

       //判断是否有重名

       fori=0to99step1   

              GetData(temp[0],"本机触摸屏",RW,var,5)//遍历每一行的配方名

              ifname[0]==temp[0]andname[1]==temp[1]andname[2]==temp[2]andname[3]==temp[3]andname[4]==temp[4]  then  

                     flag=true

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

              else

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

            endif                           

       nexti

 

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

       ifflag==falsethen  

              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个连续的地址中

  

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

            ifCurtLine<100then

                     NextLine=CurtLine+1

                     index=(NextLine/10)*700     

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

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

                     flag=true

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

              endif  

       endif       

endif

FILL(name[0],0,5)

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

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

endmacro_command

 

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

macro_commandmain()

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

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

boolON=true,OFF,flag=false

 

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

 

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

fori=0to99step1       

   GetData(temp[0],"本机触摸屏",RW,var,5)     //查询存储的配方名

   ifname[0]==temp[0]andname[1]==temp[1]andname[2]==temp[2]andname[3]==temp[3]andname[4]==temp[4]  then

            flag=true

              GetData(Data[0],"本机触摸屏",RW,5+var,65)      //获取匹配行的存储数据   

              SetData(Data[0],"PanasonicFP",DT,32700,65)      //将查找到的数据传给下位机

   else

            var=var+70//下一个配方名地址 

   endif    

nexti

 

ifflag==falsethen

       SetData(ON,"本机触摸屏",LB,20,1)

endif

 

FILL(name[0],0,5)

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

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

 

endmacro_command

 

/**********************************************************删除——del**********************************************************/

macro_commandmain()

shorti=0,j=0,var=0

shortMaxLine=0,CurtLine=0,MoveTime=0,index=0,CurtAddress=0,NextAddress=0

shortc[70],name[5],clear[70],check[5]

boolzero=0,ON=true,OFF,flag=false

 

//获取相应操作数

FILL(clear[0],0,70)

GetData(MaxLine,"本机触摸屏",RW,8000,1)       //获取数据表大小

GetData(name[0],"本机触摸屏",LW,0,5)//获取LW0的值,即要删除的配方名

 

//查找要删除的记录,并将其删除

fori=0toMaxLinestep1   

   GetData(check[0],"本机触摸屏",RW,var,5)//查找匹配的配方名

   ifname[0]==check[0]andname[1]==check[1]andname[2]==check[2]andname[3]==check[3]andname[4]==check[4]  then

            flag=true //找到后置位标志位

            CurtLine=i      //记录匹配配方名所在行

            CurtAddress=var    //记录匹配配方名的地址

            MoveTime=MaxLine-CurtLine-1   //要移动的次数

            

            //下面程序执行数据覆盖操作

            forj=1toMoveTimestep1               

                 NextAddress=CurtAddress+70      //记录下一条数据位置

                 GetData(c[0],"本机触摸屏",RW,NextAddress,70) //下一条数据记录覆盖当前记录

                   SetData(c[0],"本机触摸屏",RW,CurtAddress,70)

                   CurtAddress=NextAddress     //移动一次后下一地址变为当前地址

            nextj      //进行下一次数据覆盖

            

            //最后一行清零

            SetData(clear[0],"本机触摸屏",RW,CurtAddress,70)//所有数据覆盖后,当前地址已经是最后一行起始地址

                           

              //下面程序实现数据表行数减少    

              MaxLine=MaxLine-1

              index=(CurtAddress/700)*700

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

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

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

               

       else

              var=var+70

       endif

nexti   

 

//若找不到匹配的配方记录,则报警提示           

ifflag==falsethen

       SetData(ON,"本机触摸屏",LB,20,1)

endif

 

FILL(name[0],0,5)

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

SetData(zero,"本机触摸屏",LB,3,1)    

endmacro_command

 

/**********************************************************首页——MinPage**********************************************************/

macro_commandmain()

shortindex

boolON=true

GetData(index,"本机触摸屏",LW,9000,1)//a用于提取索引寄存器的当前值

ifindex==0then

       SetData(ON,"本机触摸屏",LB,23,1)

endif

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

endmacro_command

 

/**********************************************************尾页——MaxPage**********************************************************/

macro_commandmain()

shortindex

boolON=true

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

ifindex==6300then

       SetData(ON,"本机触摸屏",LB,24,1)

endif

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

endmacro_command

 

/**********************************************************行号初始化——Initial**********************************************************/

macro_commandmain()

shortarray[10]={1,2,3,4,5,6,7,8,9,10}

boolOFF=false

SetData(array[0],"本机触摸屏",RW,7800,10)

SetData(OFF,"本机触摸屏",LB,9000,1)

endmacro_command

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1