威纶通配方——宏指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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