| 作者 | 主题 |
|---|---|
|
ws0866 侠圣
经验值:3122 发帖数:1089 精华帖:8 |
楼主
主题:EXCEL是个好东东。 客户要求HMI画面要显示所有IO点的注释和状态,如下图, IO少的时候还好,可以一页一页的做出来,但IO多的就比较头痛了,最近做了个改造项目,输入从I0一直用到I90,虽然中间有些空的,但也很多,所以,只能想个偷懒的方法。 第一列地址用8个符号IO域,变量都连接到MW10(Input_bit)上,文本列表要建8个,对应要显示的地址内容;第二列注释用8个符号IO域,变量也都连接到MW10(Input_bit)上,文本列表也要建8个,对应要显示的注释内容,这两列也可以合成一个文本列表,第三列状态用8个圆,做外观动画,分别对应MB12的8个位,在PLC程序中用MW10做寻址,把输入的数据写入到MB12中。 接下来的工作就是做这16个文本列表,每个文本列表里有100行(IB0-IB99),在Excel里做好,再导入到flexible就行了(屏比较老博图不支持了),其实工作都挺简单,就是在做Excel时遇到了些问题,原来的变量表顺序是I0.0、I0.1、I0.2…I1.0、I1.1、I1.2….这样的顺序,但我要的是I0.0、I1.0、I2.0…I0.1、I1.1、I2.1这样的顺序,第一列还好做有规律,一会就做完了,但第二列就麻烦了,把PLC的变量表复制过来一点一点改要很长时间,就又想偷懒的办法,想用VBA处理下,但感觉也比较麻烦,百度了下,Excel里有VLOOKUP命令,功能是按列查找,最终返回该列所需查询序列所对应的值,比如(VLOOKUP(G2,B:D,3,FALSE),就是在第B列到D列里查找G2单元格的内容,返回查找到的单元格后面第三列的内容,这样就可以按地址在原来的符号表中把注释提取出来了,感觉比VBA方便哈,如下图,前四列是在符号表中复制出来的,G列是我要用的顺序,H列是根据G列的内容,从D列取出的注释。J列是把I列和H列和在一起。 剩下的工作就简单了,按照flexible的格式处理,再导入就OK了。 总结:Excel真是个好东东,VLOOKUP用来整理文档的格式很好用,好好学习下能节省好多时间。
好好学习天天向上
|