图片:
图片:
图片:
图片:
写在最前:今日特殊,铭记历史,吾辈自强。
今天受项目启发来做一个触屏查表功能。背景是一个异形容器,我们很容易测得它的液位信号,但是不容易及时得到液体的体积信息。当然它的对应关系我们也是能通过试验获得的,也可以由设计部门给出对应表。
本文重点关注由一个数据查表获得另一个数据的方法,免去了PLC中复杂的运算。因为对应关系可能成百上千条,且无规律。老规矩,先看上面效果图。
接下来跟随小编的脚步,开搞喽~~
第一步,准备两个浮点型变量。一个作为原始数据(类比液位),另一个作为查表数据(类比体积)。其它变量是方便监控查表过程的,辅助变量,可有可无。
第二步,做一个画面,把刚才的变量显示出来。注意第一个浮点数要可输入的,其它显示即可。在下载到真实触屏前,需要加上导入导出按钮,方便把处理好的对应表放到触屏里。应用文件复制脚本,详细请在软件内查看帮助文件,不多介绍了。
第三步,也是最重要的一步,处理数据对应表。它是要导入到触屏里并被我们后续脚本查阅的。详见第一张示例图里右侧的处理后数据,它的有效数据位是5位。例如2.963/11.26/101.5。请自行理解一下。再新建一个文本文档,格式编码是UTF8,最后把数据列(注意只粘贴有效数据)复制到文本文档中保存即可。这样文本文档中每行数据由8个字节组成,5位有效数据+空格+2个字节换行符。当然根据您数据的长短可任意组合长度,但是数据长度要统一,方便后续脚本查阅。
第四步,建立查表逻辑和数据处理。核心脚本如图。我们首先对小于查表第一行的数据赋值0。之后判断数据正常后,取原数据的整数部分进行判断,例如96.3我们就查阅第96行起的8个有效字符。它的查询起始地址偏移量就是96*8-8=760。当然要注意format函数有四舍五入的属性,例如96.7取整就是97。所以查询地址偏移量要做调整。最后思考表格分辨率的问题,刚才举例的数据都不在表格的整行上,那我们就直接查出相邻两行数据,中间线性转换一下就行。这样就保证了数据的连续性。
到这里,所有知识点都已经讲解完毕。欢迎作为同行的看官们多多参与测试并讨论。
写在最后:如果您在看完图文讲解后还无法测试成功或者确实有类似功能需求的,请移步同名公众号文末处赞赏小编一杯奶茶,私聊小编获得原测试文件。