威纶通配方宏指令.docx
- 文档编号:27555621
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:9
- 大小:16.35KB
威纶通配方宏指令.docx
《威纶通配方宏指令.docx》由会员分享,可在线阅读,更多相关《威纶通配方宏指令.docx(9页珍藏版)》请在冰豆网上搜索。
威纶通配方宏指令
/**********************************************************行号刷新——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
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 威纶通 配方 指令
![提示](https://static.bdocx.com/images/bang_tan.gif)