有专门的浮点数运算指令的
比如 EADD ESUB EMUL EDIV
浮点数的表示方法
有个学员问我,他在用S7-300读取变频器的参数P1082时(1082=16#43A),PLC 发送的4个字为16#143A 0000 0000 0000,变频器返回的为16#243A 0000 4248 0000。变量的浮点数值为16#42480000,对应的浮点数到底是多少?
在监视用的变量表中,将十六进制双字16#42480000的显示格式改为FLOATING_POINT(浮点数),就可以看到对应的浮点数为50.0。 浮点数又称为实数(REAL ),用32位二进制数表示。浮点数表示为1.m 乘以2的E 次方。其中尾数1.m 和指数E 均为二进制数,E 可能是正数,也可能是负数。 ANSI/IEEE 754-1985标准格式的32位实数的格式为1.m 乘以2的e 次方,式中指数e = E +127为8位正整数。
尾数的小数部分m 为第0~22位,第23~30位为指数e ,最高为符号位。
在西门子的软件中,一般并不使用二进制格式或十六进制格式的浮点数,而是用十进制小数来输入或显示浮点数,例如在STEP 7中,50为16位整数,而50.0为浮点数。
什么是plc 中的浮点运算
最佳答案
说白了,就是小数点运算啦。
比如,支持浮点数的PLC 对于3除以2的结果为1.5,不支持浮点数的结果为1
就这么简单,浮点数只是小数在科学应用的一种表示方法而已了。
因为PLC 同PC 一样,为二进制运算,因此纯小数的表示方法在电路上无法被应用,所以搞了个科学计数法(浮点数)。
浮点数运算:1/2 结果为0.5 没有浮点数:1/2 结果为0
PLC 小数点问题
比如说我有个伺服要PLC 发一千个脉冲它转三百六十度, 现在我要它转动零点一度, 也就是要发三点三三三个脉冲, 我要向数据器里面写3.33怎么写, 如果我用浮点运算就是把333除去一百在放到数据器里, 我在触摸屏上要求能够直接能够写入3.33就不能够进行浮点计算了, 我该用什么, 是高手就交流
一般在PLC 里面是不计算浮点运算的,都是用整数。在屏幕上显示的时候再小数点向后移动2位
可以将整数变换成浮点型,再进行浮点型比较。或者将浮点型变换成整数,但是浮点变整数的过程会有误差,就是小数点后的数是四舍五入的,所以尽量进行浮点型比较。整数编程浮点型的过程需要注意,每个浮点型数占用一个双字,即两个字元件,比如你将浮点数存入D0, 那么D0和D1都被占用32位,此时D1就不能再被别的数据占用了。
PLC 可以进行浮点数计算。但是结果可能无法反应出来。因为输出还是会输出整数的。比如3.3个脉冲。PLC 只会输出3个脉冲。
PLC 小数点
小弟有一问题请教各位高手大哥指点,我在使用台达的DVP-12SCT 型PLC 做控制运动。用TP04G 文本显示器做界面设定。
D260做寄存器设置物体从零点到目标点的距离,假设设定值80.27
PLC 每发送1个脉冲步进电机移动0.5MM. 我用80.27除0.5得出16054。也就是PLC 发送出16054个脉冲步进电机移动80.27MM 的距离,可由于PLC 不能设置K 值为0.5,我把小数化为整数用DDIV 指令D260(8027)除5得出1605.4可PLC 计算结果为1605小数点省掉了,导致我的位置控制不准确。请问用什么方法可以让PLC 的运算能出现小数点 能帮我写个图形吗。谢谢了
最佳答案
PLC 无法辨别小数点,你只能先去掉小数点(相当于乘以100了),然后进行运算,最后再除以100补回来,丢掉后边的数据位,但这样会有偏差,所以你应该考虑用32位运算或者浮点运算,推荐后者
推荐答案
DDIV D260 D262
DMUL D262 K10 D264 DDIV D264 K5 D266 DINT D266 D268
把整数值赋予D 数据, 转成浮点来运算,FLT 指令
, 不然数据会丢失, 浮点运算占两个数据要注
意, 然后就可以有小数了, 结果要整数的再用INT 指令转化. 中间运算可以把值扩大10倍或者100倍再转化,
我用PLC 做浮点运算,让D 30在触摸屏上显示小数,为什么数据出现错误???
_此主题相关图片如下,点击图片看大图:
_此主题相关图片如下,点击图片看大图:
这是
触摸屏的软元件选择!!
把M8002改成M8000。把第一行 MOV k150 D0 的这个D0改成其它数据。 因为装触屏之后,PLC 和屏之间,D0默认为屏地址。
选择数据32位, 选择实数!
_此主题相关图片如下,点击图片看大图:
_此主题相关图片如下,点击图片看大图:
我已经改成这样了。。。但还是不行的。是不是用触摸屏的仿真软件不行的????? 浮点运算的应用 各位大侠 ;
小弟现有一工程,需要用到定长,而且要求精确到1mm ,并且不适用伺服或者步进,所以我就想用一般程序里的浮点运算,但是不知道为什么我在适用的过程中发现,在自由监控中可以任意赋值的寄存器,但是在文本中 就不能任意赋值,就是赋值寄存器出现乱码,而且用ECMP 指令进行比较的时候,输入浮点但是指令的=指令不执行。 举例‘;
LDM8000---------C630 K99999 |
|HSCR C630 D10
|
|DFLT D10 D12 |
|DFLT D4001 D14 |
|EMUL D14 D12 D16
LDM0---------------ECMP D18 D20 M10
LDY0 ---------------|-------DAND = D18 D16-----ZRSTM10 M12 | |
LDY1-----------------
注释:M10 M12 启动正反转 y0y1 正反输出 D18文本赋值 D16通过编码器计数进行浮点运算值(比较的基数) D18为32位寄存器
有的文本就不怎么支持浮点数。也有的PLC 不支持浮点数。这个东西很难说得清楚了。一个mm 的精度不用浮点数也是可的了。把单位改小一点,不就取消了浮点数了?
还有的浮点数是不可以"="比较的, 浮点数本身是有误差的, 可以在精度范围内比较, 比如|a-b|
三菱PLC 的浮点运算如何应用啊。指令是什么啊
具体要看相关的手册啊,下图是FX3U 的例子
版主加精华
PLC 的四舍五入运算方法
PLC 的功能足够强大了,却没有四舍五入的功能,一般的应用忽略了就算了,可总有遇到要用这个功能的时候。
网上讨论这个问题的也不少,可见着胡乱解答的也多,有的说用浮点运算、有的说用比较余数的办法……不一而足。基本上PLC 都没有自带这个函数功能的,浮点运算只是小数位多而已,并没有四舍五入的功能,而且通常浮点运算还会消耗较多的运算时间,为了一处用浮点,就得到处用,或者来回进行转换,麻烦。专门用指令比较就更让人觉得郁闷了。 其实解决的办法很简单,当进行如下运算时:被除数÷除数,若需要四舍五入,可变更算法为:INT((被除数+除数/2)÷除数) ,当然如果用整数运算,就取整就是自然而的了,INT 可以省掉。
当然在实际的使用过程中要复杂一点,比如除数是一个奇数,除2本身就有余数,怎么办? 可以用整数运算,略掉其余数,即INT(除数/2),带入:(被除数+除数/2)÷除数,即可。 此外,如果除数在运算过程中是个常数,可以事先计算好直接使用,如果是变量则需要用整数运算实时的处理了。
例如103/10的计算方法为:(103+5)/10=10.8,INT(10.8)=10,等于四舍五入结果, 例如106/10的计算方法为:(106+5)/10=11.1,INT(11.1)=11,等于四舍五入结果,
有专门的浮点数运算指令的
比如 EADD ESUB EMUL EDIV
浮点数的表示方法
有个学员问我,他在用S7-300读取变频器的参数P1082时(1082=16#43A),PLC 发送的4个字为16#143A 0000 0000 0000,变频器返回的为16#243A 0000 4248 0000。变量的浮点数值为16#42480000,对应的浮点数到底是多少?
在监视用的变量表中,将十六进制双字16#42480000的显示格式改为FLOATING_POINT(浮点数),就可以看到对应的浮点数为50.0。 浮点数又称为实数(REAL ),用32位二进制数表示。浮点数表示为1.m 乘以2的E 次方。其中尾数1.m 和指数E 均为二进制数,E 可能是正数,也可能是负数。 ANSI/IEEE 754-1985标准格式的32位实数的格式为1.m 乘以2的e 次方,式中指数e = E +127为8位正整数。
尾数的小数部分m 为第0~22位,第23~30位为指数e ,最高为符号位。
在西门子的软件中,一般并不使用二进制格式或十六进制格式的浮点数,而是用十进制小数来输入或显示浮点数,例如在STEP 7中,50为16位整数,而50.0为浮点数。
什么是plc 中的浮点运算
最佳答案
说白了,就是小数点运算啦。
比如,支持浮点数的PLC 对于3除以2的结果为1.5,不支持浮点数的结果为1
就这么简单,浮点数只是小数在科学应用的一种表示方法而已了。
因为PLC 同PC 一样,为二进制运算,因此纯小数的表示方法在电路上无法被应用,所以搞了个科学计数法(浮点数)。
浮点数运算:1/2 结果为0.5 没有浮点数:1/2 结果为0
PLC 小数点问题
比如说我有个伺服要PLC 发一千个脉冲它转三百六十度, 现在我要它转动零点一度, 也就是要发三点三三三个脉冲, 我要向数据器里面写3.33怎么写, 如果我用浮点运算就是把333除去一百在放到数据器里, 我在触摸屏上要求能够直接能够写入3.33就不能够进行浮点计算了, 我该用什么, 是高手就交流
一般在PLC 里面是不计算浮点运算的,都是用整数。在屏幕上显示的时候再小数点向后移动2位
可以将整数变换成浮点型,再进行浮点型比较。或者将浮点型变换成整数,但是浮点变整数的过程会有误差,就是小数点后的数是四舍五入的,所以尽量进行浮点型比较。整数编程浮点型的过程需要注意,每个浮点型数占用一个双字,即两个字元件,比如你将浮点数存入D0, 那么D0和D1都被占用32位,此时D1就不能再被别的数据占用了。
PLC 可以进行浮点数计算。但是结果可能无法反应出来。因为输出还是会输出整数的。比如3.3个脉冲。PLC 只会输出3个脉冲。
PLC 小数点
小弟有一问题请教各位高手大哥指点,我在使用台达的DVP-12SCT 型PLC 做控制运动。用TP04G 文本显示器做界面设定。
D260做寄存器设置物体从零点到目标点的距离,假设设定值80.27
PLC 每发送1个脉冲步进电机移动0.5MM. 我用80.27除0.5得出16054。也就是PLC 发送出16054个脉冲步进电机移动80.27MM 的距离,可由于PLC 不能设置K 值为0.5,我把小数化为整数用DDIV 指令D260(8027)除5得出1605.4可PLC 计算结果为1605小数点省掉了,导致我的位置控制不准确。请问用什么方法可以让PLC 的运算能出现小数点 能帮我写个图形吗。谢谢了
最佳答案
PLC 无法辨别小数点,你只能先去掉小数点(相当于乘以100了),然后进行运算,最后再除以100补回来,丢掉后边的数据位,但这样会有偏差,所以你应该考虑用32位运算或者浮点运算,推荐后者
推荐答案
DDIV D260 D262
DMUL D262 K10 D264 DDIV D264 K5 D266 DINT D266 D268
把整数值赋予D 数据, 转成浮点来运算,FLT 指令
, 不然数据会丢失, 浮点运算占两个数据要注
意, 然后就可以有小数了, 结果要整数的再用INT 指令转化. 中间运算可以把值扩大10倍或者100倍再转化,
我用PLC 做浮点运算,让D 30在触摸屏上显示小数,为什么数据出现错误???
_此主题相关图片如下,点击图片看大图:
_此主题相关图片如下,点击图片看大图:
这是
触摸屏的软元件选择!!
把M8002改成M8000。把第一行 MOV k150 D0 的这个D0改成其它数据。 因为装触屏之后,PLC 和屏之间,D0默认为屏地址。
选择数据32位, 选择实数!
_此主题相关图片如下,点击图片看大图:
_此主题相关图片如下,点击图片看大图:
我已经改成这样了。。。但还是不行的。是不是用触摸屏的仿真软件不行的????? 浮点运算的应用 各位大侠 ;
小弟现有一工程,需要用到定长,而且要求精确到1mm ,并且不适用伺服或者步进,所以我就想用一般程序里的浮点运算,但是不知道为什么我在适用的过程中发现,在自由监控中可以任意赋值的寄存器,但是在文本中 就不能任意赋值,就是赋值寄存器出现乱码,而且用ECMP 指令进行比较的时候,输入浮点但是指令的=指令不执行。 举例‘;
LDM8000---------C630 K99999 |
|HSCR C630 D10
|
|DFLT D10 D12 |
|DFLT D4001 D14 |
|EMUL D14 D12 D16
LDM0---------------ECMP D18 D20 M10
LDY0 ---------------|-------DAND = D18 D16-----ZRSTM10 M12 | |
LDY1-----------------
注释:M10 M12 启动正反转 y0y1 正反输出 D18文本赋值 D16通过编码器计数进行浮点运算值(比较的基数) D18为32位寄存器
有的文本就不怎么支持浮点数。也有的PLC 不支持浮点数。这个东西很难说得清楚了。一个mm 的精度不用浮点数也是可的了。把单位改小一点,不就取消了浮点数了?
还有的浮点数是不可以"="比较的, 浮点数本身是有误差的, 可以在精度范围内比较, 比如|a-b|
三菱PLC 的浮点运算如何应用啊。指令是什么啊
具体要看相关的手册啊,下图是FX3U 的例子
版主加精华
PLC 的四舍五入运算方法
PLC 的功能足够强大了,却没有四舍五入的功能,一般的应用忽略了就算了,可总有遇到要用这个功能的时候。
网上讨论这个问题的也不少,可见着胡乱解答的也多,有的说用浮点运算、有的说用比较余数的办法……不一而足。基本上PLC 都没有自带这个函数功能的,浮点运算只是小数位多而已,并没有四舍五入的功能,而且通常浮点运算还会消耗较多的运算时间,为了一处用浮点,就得到处用,或者来回进行转换,麻烦。专门用指令比较就更让人觉得郁闷了。 其实解决的办法很简单,当进行如下运算时:被除数÷除数,若需要四舍五入,可变更算法为:INT((被除数+除数/2)÷除数) ,当然如果用整数运算,就取整就是自然而的了,INT 可以省掉。
当然在实际的使用过程中要复杂一点,比如除数是一个奇数,除2本身就有余数,怎么办? 可以用整数运算,略掉其余数,即INT(除数/2),带入:(被除数+除数/2)÷除数,即可。 此外,如果除数在运算过程中是个常数,可以事先计算好直接使用,如果是变量则需要用整数运算实时的处理了。
例如103/10的计算方法为:(103+5)/10=10.8,INT(10.8)=10,等于四舍五入结果, 例如106/10的计算方法为:(106+5)/10=11.1,INT(11.1)=11,等于四舍五入结果,