本公司原有S7300与S7200主从电台通信,因为原有界面陈旧,外加为适应更大范围自控我更改了组态软件,用的是WINCC,原来是VB一类,现在发现原有电压电流数值均不对,后经检查发现,原有模拟量变送器用的4-20MA的,经试验发现实际在程序中应该使用0-20MA变送器,否则就会出现电压无输入时显示90V,电流无输入时显示20A,而电压一般正常多显示到460,使用0-20m变送器一切正常,但是我也不能更换几十个变送器,而原来组态显示能差不多正常怀疑是在软件上做了更改,WINCC的直接显示,就露出这个问题,有谁明白怎么更改程序的,贴上那段语句,MOVB IB0,VB39
MOVW AIW0,VW12
DIV +333,VD10
MOVW AIW2,VW16
DIV +71 ,VD14
MOVW AIW4,VW20
DIV +256 ,VD18
-I +75VW20
楼主最近还看过
根据你画出的程序,知PLC是S7-200,所用模块为EM235,原有模拟量变送器用的4-20MA的不用换,仍用,只是你编程时用的转换公式不对,你是按0~20ma对应被测量0~最大值,而变送器的输出4~20 ma 对应被测量值0~最大值。应按下面转换公式编程求被测量就行
以你说的电压无输入时显示90V,就是原有模拟量变送器在被测电压=0时输出的电流(4ma),你是按过0 的直线方程计算的: 电压最大值应=450V,对应数字量为32000,直线斜率K=32000÷450=71,故输入4ma 时其数字量=6400,计算电压值=6400÷71=90V.(即你的程序第三条: MOVW AIW2,VW16 DIV +71 ,VD14)
你按上面的公式重新编程就不会产生显示错误:4ma时数字量AIW0=6400,带入公式,所求量程值(电压)=0.
楼主:今日才看此贴,对你5楼提出的要求,用语句表进行编程,见下表:
TITLE=子程序注释
Network 1 // 实数运算
// VD100 :AIW2 VD104: 最大量程(如 电压:450.0V) VD112:中间运算数 VD108:求出的量程值
LD SM0.0
MOVR VD100, VD112
-R 6400.0, VD112
*R VD104, VD112
MOVR VD112, VD108
/R 25600.0, VD108
这是用实数运算,也可用整数运算,用那种运算取决你的计算精度要求。你可以用此程序代替原程序,测测看!
用这段程序:
LD SM0.0
ITD AIW2, VD100 //将整数AIW2转换为双整数VD100
DTR VD100, VD112 //将双整数VD100转换为实数VD112
-R 6400.0, VD112 // VD112 - 6400.0-->VD112
*R 450.0, VD112 // VD112*450.0 -->VD112
MOVR VD112, VD14 // VD112 -->VD14
/R 25600.0, VD14 // VD14 / 25600.0-->VD14
代替你原有的这段程序: MOVW AIW2,VW16
DIV +71 ,VD14 // AIW2 / 71-->VD14 (求电压)