发表于:2013/6/7 11:05:15
#0楼
tonyhwangtel:Word和Int之间的距离
Word和Int作为16位数据类型,存放的数据格式肯定不同的(废话...)。但在实际应用中却真是很麻烦。年前一则应用错误,使朕不得不来吐槽一下。
16位数据从通讯获得,数值从Hx0000到HxFFFF,对应4~20mA。通讯数据作为Word储存到DB没有问题,但是在工程量转换中开始烦恼的数据格式转换了。
首先S7里的整数只有有符号型的,也就是说Int必须是最高位作为正负号。原始数据若要转换到Real浮点型,两条道都是黑,Word->DInt和Int->Real,都会把最高为作为负号处理,这样计算出来的浮点型数据肯定是错误的。
如果问题无法解决,不如退回原点。重新来看通讯来的4~20mA对应的Hx0000~HxFFFF,势必把4mA当作数轴上的0点,所得的数是不会出现负数的。如果工程量有负值,那么可以在浮点运算的时候处理。这样解决的办法自然出现了,果断将原始数据右移一位,这样4~20mA对应Int就成了Hx0000~Hx7FFF,满足S7要求。
(到这里真的是汗一把,因为设备运行中,不能停机。-_-b)
这么做有一点风险,就是将原来16位分辨率的模拟量转成了15位分辨率的。精度上会损失最多万分之三。但4~20mA的模拟量谁又会在乎这万分之三呢。
下面是我的回帖:
原始数据为一个字,例如MW101,令MW100为0,MD100就是一个32位的正数。再将它转换为浮点数,就不会损失精度了。
不能用ITD指令将原始数据转换为双整数,因为原始数据大于16#7FFF时,被视为负数,转换后的双整数的高16位为16#FFFF,还是被视为负数。
“Hx0000到HxFFFF,对应4~20mA”,这个原始的格式就不太友好,如果改为0~27468或0~32000对应4~20mA就要好处理得多。也可能是别的系统通信传来的数据,只好用户自己想办法了。
实际上原始的精度一般不会有16位这样高,楼主的处理方法也是可以的。
[/URL]
Word和Int作为16位数据类型,存放的数据格式肯定不同的(废话...)。但在实际应用中却真是很麻烦。年前一则应用错误,使朕不得不来吐槽一下。
16位数据从通讯获得,数值从Hx0000到HxFFFF,对应4~20mA。通讯数据作为Word储存到DB没有问题,但是在工程量转换中开始烦恼的数据格式转换了。
首先S7里的整数只有有符号型的,也就是说Int必须是最高位作为正负号。原始数据若要转换到Real浮点型,两条道都是黑,Word->DInt和Int->Real,都会把最高为作为负号处理,这样计算出来的浮点型数据肯定是错误的。
如果问题无法解决,不如退回原点。重新来看通讯来的4~20mA对应的Hx0000~HxFFFF,势必把4mA当作数轴上的0点,所得的数是不会出现负数的。如果工程量有负值,那么可以在浮点运算的时候处理。这样解决的办法自然出现了,果断将原始数据右移一位,这样4~20mA对应Int就成了Hx0000~Hx7FFF,满足S7要求。
(到这里真的是汗一把,因为设备运行中,不能停机。-_-b)
这么做有一点风险,就是将原来16位分辨率的模拟量转成了15位分辨率的。精度上会损失最多万分之三。但4~20mA的模拟量谁又会在乎这万分之三呢。
下面是我的回帖:
原始数据为一个字,例如MW101,令MW100为0,MD100就是一个32位的正数。再将它转换为浮点数,就不会损失精度了。
不能用ITD指令将原始数据转换为双整数,因为原始数据大于16#7FFF时,被视为负数,转换后的双整数的高16位为16#FFFF,还是被视为负数。
“Hx0000到HxFFFF,对应4~20mA”,这个原始的格式就不太友好,如果改为0~27468或0~32000对应4~20mA就要好处理得多。也可能是别的系统通信传来的数据,只好用户自己想办法了。
实际上原始的精度一般不会有16位这样高,楼主的处理方法也是可以的。
[/URL]
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/