本帖最后由 九月懿诚-刘云胜 于 2022-12-28 16:00 编辑
一、背景
首先说一下这个例程的背景,客户需要的材料进行切割,一段材料需要切割的长度从一米到18米不等,每次需要移动190mm到210mm进行一定的加工,客户这边只输入需要切割的每一段的长度,具体加工多少次,每次加工的间隔长度都需要自己来进行计算。
二、计算方法
我这边的计算方法大概是这样的
1.每次移动的长度在190-210之间,取一个中间值200,用总长度除200,得到大致的次数
2.根据除法完成之后的余数进行判断
2.1 如果余数大于100,那就多加工一次,每次加工的间隔缩短,加工间隔=总切割长度/(大致次数+1)
2.2如果余数小于100,那就还按照之前的次数进行加工,每次的加工间隔延长,加工间隔=总切割长度/大致次数
2.3如果余数等于0,那么直接按照200的间隔进行加工,加工完成后直接进行切割
总之尽量将间隔靠近200。
小提示:在进行if()语句进行判断的时候,等于需要输入两个=,即//if(a==b),只有一个等于号检查不会报错,但是实际运行的过程中触摸屏回报脚本错误!!
三、脚本函数的调用
在数据运算的时候,一开始想直接用+号和-号来进行运算,搞了半天老是给我报错,没办法,就用了内部的函数进行计算,这里主要用到了两个脚本的函数
1.InverseLinearScaling('<变量1>','<变量2>',a,b);
脚本内的解释如下
2.LinearScaling('<变量1>','<变量2>',a,b);
脚本内的解释如下
具体的使用方法是这样的
1.加法:利用第二个函数,a=1,b=数值1,X=数值2,Y=运算结果;
2.乘法:利用第二个函数,a=1,b=乘数2,X=乘数1,Y=运算结果;
3.减法:利用第一个函数,a=1,b=减数,Y=被减数,X=运算结果;
4.除法:利用第一个函数,a=除数,b=0,Y=被除数,X=运算结果;
5.取余:这里我是先用的乘法,将商和除数相乘,再用减法,把被除数减去前面的乘积得到余数;
直接把脚本页面拿出来看看吧
四、心得
之前在写这一部分功能的时候,由于使用H5U的浮点数运算,导致小数点位数很长(可能正好有除不尽的情况),会导致PLC报错,所以就尝试了下用HMI的脚本来写,运算内容不是很多,而且选的是数据输入完成的时候执行一遍脚本,没有连续运算,所以对触摸屏来说应该压力不大,经过测试之后,屏幕上只显示2位小数,到了PLC里面是四位小数,用来做相对位移是没有问题的。
五、说点悄悄话
既然发例程来挣积分了,也得回馈兄弟们一点,搞了个投票,点一下就有两个小水滴和贡献,另外我对H5U的数据运算也不是很精通,关于上面说的小数点位数很多的问题,欢迎大家在我帖子下面指点一下我,优秀的回复我会置顶,并赠送10个积分,有用的回复也有奖励呦,如果有朋友实在舍不得水滴,也可以加我好友,我免费送你,l毕竟来社区最主要的目的还是让自己有所成长。
另外搞点回帖奖励吧,百分之20几率获得六水滴,一共30名额,增加一些浏览和回复,我也想体验一下加精华是个什么感觉。:lol:lol:lol:lo加油!!!!
兄弟们觉得有必要用触摸屏来做这个数据运算吗??
|