leonhuang
级别: 略有小成
精华主题: 0
发帖数量: 59 个
工控威望: 202 点
下载积分: 3933 分
在线时间: 37(小时)
注册时间: 2013-06-27
最后登录: 2023-11-09
查看leonhuang的 主题 / 回贴
楼主  发表于: 2014-04-26 14:39
        本人做一个项目用到了Q64AD智能模块,使有GX works2 软件;智能模块(4~20mA开关设置),(平均处理 50次、参数),(自动刷新数据输出D11)都设好了。测温用PT100,温度输入范围-99.99~199.99 对应PLC:0~4000;我写了个小程序:27度时D11输出是1698;199.99度时D11输出4000;99.99度D11输出0  ;温度是用信号发生器输入的。如果温度是热电阻输入输出4~20mA信号,如何把“0,1698,4000”等PLC中的时实数据转换为实际的温度,并显示在GT2000的触摸屏上!
    我在网络上查了一个公式:Dv=[(Osh-Osl )*(Iv-Isl)/(Ish-Isl)]+Osl
         Dv:换算结果     Osh:换算结果高限  Osl:换算结果低限 Iv:换算对象  Ish:换算对象高限 Isl:换算对象低限
    如我实际温度是27度约等于[199.99-(-99.99)]*(1698-0)/(4000-0)+(-99.99)
    实际温度范围如果有两种,压力有一种,如何实现公式中的数据转换。
    这个公式能否用?我用这个公式写了一段程序,好像存在二进制和实数运算出错的问题!写程序是用二进制浮点运算还是用BIN运算!

如果用GX WORKS2写成FB程序,或结构化程序怎样做!或者最简单的梯形图程序员!请高手指教!
可加我微信leonhuang2326 谢谢!
edwingan47
级别: 略有小成
精华主题: 0
发帖数量: 101 个
工控威望: 236 点
下载积分: 21813 分
在线时间: 216(小时)
注册时间: 2014-03-10
最后登录: 2019-01-27
查看edwingan47的 主题 / 回贴
1楼  发表于: 2014-04-27 12:09
简化你的方程式:
-100~200 对应PLC:0~4000

Dv (*1000) = 300000/4000*D11-100000= 75*D11-100000;
当D11= 1698; Dv(*1000) = 27350 (27.350度)

---> MUL K75 D11 D100
---> DSUB D100 K100000 D20

如果不需小数点, 就除于1000吧
---> DDIV D20 k1000 D22
edwingan47
级别: 略有小成
精华主题: 0
发帖数量: 101 个
工控威望: 236 点
下载积分: 21813 分
在线时间: 216(小时)
注册时间: 2014-03-10
最后登录: 2019-01-27
查看edwingan47的 主题 / 回贴
2楼  发表于: 2014-04-27 12:10
Q PLC 程式:
---> * K75 D11 D100
--->  D- D100 K100000 D20

如果不需小数点, 就除于1000吧
---> D/ D20 k1000 D22