工控编程吧

标题: 全局脚本的条件判断怎么执行不了呢? [打印本页]

作者: baikhgmv    时间: 2016-9-2 17:54
标题: 全局脚本的条件判断怎么执行不了呢?
全局脚本的条件判断怎么执行不了呢?

我设置了两段折线,当x1<x<x2时用斜率1计算y值,当x2<x<x3时用斜率2计算y值,但用该全局脚本执行的话,发现x不做范围判断只按斜率1计算;如果把else if改为 if,则x只按斜率2计算,求如何解决

#pragma option(mbcs)

float x,x1,x2,y1,y2,y,x3,y3;int a,b;

x=GetTagFloat("FRQTEST_IN");

x1=GetTagFloat("FRQ_POINT1");

x2=GetTagFloat("FRQ_POINT2");

y1=GetTagFloat("PRS_POINT1");

y2=GetTagFloat("PRS_POINT2");

x3=GetTagFloat("FRQ_POINT3");

y3=GetTagFloat("PRS_POINT3");

if  (x1<x<x2)

y=(x-x1)*(y2-y1)/(x2-x1)+y1;

else if  (x2<x<x3)

y=(x-x2)*(y3-y2)/(x3-x2)+y2;

SetTagFloat("PRS_ALR_CAL",y);

return 0;



-----------------------------if  (x1<x<x2)本身就有错误。改成if  ((x1<x) * (x<x2))


-------------------------------那应该是你的范围设置有问题,应当是X1 --- X2 , 与 X2 ------ X3 的范围设置有重叠的部分,刚好X的值在重叠范围内,所以会出现你说的情况。你再仔细检查一下。
--------------------------这个不可能,我单独把设置0<x<2,2<x<4,手动输入x=1和x=3的情况是一样的,就是不判断
--------------谢谢,改了之后好了,但是为什么wincc不提示错误呢?
------------------不能用连续判断,只能是if x1<x  & x<x2
-----------------if 判断有问题啊 c语言和vbs都不支持if(x1<x<x2)

x1<x<x2在c语言里面相当于(x1<x)<x2这个效果吧,只要x1<x,前面结果是1,否者括号里面结果是0,然后x2再和这个结果进行比较

------------------这个问题还没注意过,以后使用长记性了,又学了一点小常识,谢谢








欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4