威纶通配方——宏指令_第1页
威纶通配方——宏指令_第2页
威纶通配方——宏指令_第3页
威纶通配方——宏指令_第4页
威纶通配方——宏指令_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/*行号刷新number*/macro_command main()short index,array10     /数组array10是存放行号的数组bool OFF=false,ON=true GetData(index, "本机触摸屏", LW, 9000, 1)/a用于提取索引寄存器的当前值 array0=1+index/70      /索引寄存器的值以700的倍数递增,即以当前页面中占用地址总数为基数array1=array0+1ar

2、ray2=array1+1array3=array2+1array4=array3+1array5=array4+1array6=array5+1array7=array6+1array8=array7+1array9=array8+1SetData(array0, "本机触摸屏", RW, 7800, 10) /RW7800RW7809中存放行号SetData(OFF, "本机触摸屏", LB, 4, 1) /清零宏指令触发位          

3、0;    end macro_command /*新增add*/macro_command main()short name5,temp5,data65short i,var=0,CurtLine=0,index=0,NextLine=0bool OFF=false,flag=false GetData(CurtLine, "本机触摸屏", RW, 8000, 1)       /获取RW8000的值,即保存的行数  GetData(name0

4、, "本机触摸屏", LW, 0, 5)/获取LW0的值,即输入的配方名    GetData(data0, "Panasonic FP", DT, 32700, 65)/获取当前HMI的数据输入值 /判断数据表是否填满,若未填满,则判断是否有重名if CurtLine=100 then       flag=true       SetData(flag, "本机触

5、摸屏", LB, 22, 1)else       /判断是否有重名       for i=0 to 99 step 1                 GetData(temp0, "本机触摸屏", RW, var, 5)/遍历每一行的配方名 &

6、#160;            if name0=temp0 and name1=temp1 and name2=temp2 and name3=temp3 and name4=temp4  then                     

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

8、#160;                      else                   var=var+70/否则开始查询下一行     

9、                    end if                              

10、;    next i        /遍历所有行未找到匹配值,就将配方名和数据保存在数据表中       if flag=false then                var=0     &#

11、160;        var=70*CurtLine    /当前行的索引量              SetData(name0, "本机触摸屏", RW, var, 5)/将LW0中的配方名保存至新地址RW(0+var)中       

12、0;      SetData(data0, "本机触摸屏", RW, 5+var, 65)/将DT32700中连续的65个数据保存在RW(5+var)65个连续的地址中               /下面程序是实现数据表行数增加            if

13、CurtLine<100 then                     NextLine=CurtLine+1                     index=(Ne

14、xtLine/10)*700                          SetData(NextLine, "本机触摸屏", RW, 8000, 1)             

15、60;       SetData(index, "本机触摸屏", LW, 9000, 1)                     flag=true            &#

16、160;        SetData(flag, "本机触摸屏", LB, 4, 1)              end if         end if       end ifFILL(nam

17、e0, 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=

18、0,Data65/数组b80用于获取某一行的存储数据bool ON=true,OFF,flag=false GetData(name0, "本机触摸屏", LW, 0, 5)/获取输入的配方名 /下面程序用于查找与输入的配方名匹配的数据,并将数据下载至PLC中for i=0 to 99 step 1          GetData(temp0, "本机触摸屏", RW, var, 5)    &

19、#160;/查询存储的配方名   if name0=temp0 and name1=temp1 and name2=temp2 and name3=temp3 and name4=temp4  then            flag=true              GetData(D

20、ata0, "本机触摸屏", RW, 5+var, 65)      /获取匹配行的存储数据                  SetData(Data0, "Panasonic FP", DT, 32700, 65)      /将查找到的数据传给下位机 &

21、#160; else             var=var+70 /下一个配方名地址     end if    next i if flag=false then       SetData(ON, "本机触摸屏", LB, 20, 1) end if FILL(name0,

22、 0, 5)SetData(name0, "本机触摸屏", LW, 0, 5)/清空LW0的值,即清空输入的配方名SetData(OFF, "本机触摸屏", LB, 1, 1)/清零宏指令触发位 end macro_command /*删除del*/macro_command main() short i=0,j=0,var=0short MaxLine=0,CurtLine=0,MoveTime=0,index=0,CurtAddress=0,NextAddress=0short c70,name5,clear70,check5bo

23、ol zero=0,ON=true,OFF,flag=false /获取相应操作数FILL(clear0,0,70)GetData(MaxLine, "本机触摸屏", RW, 8000, 1)       /获取数据表大小GetData(name0, "本机触摸屏", LW, 0, 5)/获取LW0的值,即要删除的配方名 /查找要删除的记录,并将其删除for i=0 to MaxLine step 1     

24、60;GetData(check0, "本机触摸屏", RW, var, 5)/查找匹配的配方名   if name0=check0 and name1=check1 and name2=check2 and name3=check3 and name4=check4  then            flag=true /找到后置位标志位     

25、;       CurtLine=i      /记录匹配配方名所在行            CurtAddress=var    /记录匹配配方名的地址            MoveTi

26、me=MaxLine-CurtLine-1   /要移动的次数                        /下面程序执行数据覆盖操作            for j=1 to MoveTime step

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

28、;           GetData(c0, "本机触摸屏", RW, NextAddress, 70) /下一条数据记录覆盖当前记录                   SetData(c0, "本机触摸屏", RW, CurtAddress,

29、70)                   CurtAddress=NextAddress     /移动一次后下一地址变为当前地址            next j      

30、/进行下一次数据覆盖                        /最后一行清零            SetData(clear0, "本机触摸屏", RW, CurtAddress, 70)/所有数据覆盖后,当前地

31、址已经是最后一行起始地址                                          /下面程序实现数据表行数减少     &#

32、160;             MaxLine=MaxLine-1              index=(CurtAddress/700)*700              SetDat

33、a(MaxLine, "本机触摸屏", RW, 8000, 1)              SetData(index, "本机触摸屏", LW, 9000, 1)               SetData(ON, "本机触摸屏", LB, 4, 1) &#

34、160;                     else              var=var+70       end ifnext i    /若找不到匹配的配方记录,则报警提示         

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论