《浮点数运算指令》由会员分享,可在线阅读,更多相关《浮点数运算指令(9页珍藏版)》请在金锄头文库上搜索。
1、有专门的浮点数运算指令的 比如 EADD ESUB EMUL EDIV比如说,我想把DO + 0.1结果放在DO怎么做啊!先把 0.1 放入一个数据寄存器中,再用EADD指令使这个地址的数据寄存器和DO相加,在运算前把DO中的数也转换成 浮点数 FLT 指令有专门的浮点运算指令,但在运算前如不是浮点的寄存器要转换成浮点才可以在GPPW的编辑器内,根本就无法带小数点输入,0.1我输不进去啊!,10+0.1怎么做啊在GPPW的编辑器内,根本就无法带小数点输入,0.1我输不进去啊,,10+0.1怎么做啊用个浮点数除法运算,1除以10就可以得到0.1这结果浮点数的表示方法有个学员问我,他在用S7-30
2、0读取变频器的参数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-
3、1985标准格式的32位实数的格式为1.m乘以2的e次方,式中指 数 e = E +127 为 8 位正整数。尾数的小数部分m为第022位,第2330位为指数e,最高为符号位。在西门子的软件中,一般并不使用二进制格式或十六进制格式的浮点数,而是用十进 制小数来输入或显示浮点数,例如在STEP 7中,50为16位整数,而50.0为浮点数。什么是 plc 中的浮点运算最佳答案说白了,就是小数点运算啦。比如,支持浮点数的PLC对于3除以2的结果为1.5,不支持浮点数的结果为1就这么简单,浮点数只是小数在科学应用的一种表示方法而已了。因为PLC同PC 一样,为二进制运算,因此纯小数的表示方法在电路上无
4、法被应用,所 以搞了个科学计数法(浮点数)。浮点数运算:1/2 结果为 0.5没有浮点数:1/2 结果为 0PLC 小数点问题比如说我有个伺服要 PLC 发一千个脉冲它转三百六十度,现在我要它转动零点一度,也就是 要发三点三三三个脉冲,我要向数据器里面写3.33怎么写,如果我用浮点运算就是把333除去 一百在放到数据器里,我在触摸屏上要求能够直接能够写入 3.33 就不能够进行浮点计算了, 我该用什么,是高手就交流一般在PLC里面是不计算浮点运算的,都是用整数。在屏幕上显示的时候再小数 点向后移动2位可以将整数变换成浮点型,再进行浮点型比较。或者将浮点型变换成整数,但是 浮点变整数的过程会有误
5、差,就是小数点后的数是四舍五入的,所以尽量进行浮 点型比较。整数编程浮点型的过程需要注意,每个浮点型数占用一个双字,即两 个字元件,比如你将浮点数存入DO,那么DO和D1都被占用,此时D1就不能再 被别的数据占用了。PLC可以进行浮点数计算。但是结果可能无法反应出来。因为输出还是会输出整 数的。比如3.3个脉冲。PLC只会输出3个脉冲。PLC 小数点小弟有一问题请教各位高手大哥指点,我在使用台达的DVP-12SCT型PLC做 控制运动。用 TP04G 文本显示器做界面设定。D260 做寄存器设置物体从零点到目标点的距离,假设设定值 80.27PLC每发送1个脉冲步进电机移动0.5MM.我用80
6、.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 D262DMUL
7、 D262K10 D264DDIV D264 K5 D266DINT D266D268把整数值赋予D数据,转成浮点来运算,FLT指令,不然数据会丢失,浮点运算占两个数据要注 意,然后就可以有小数了,结果要整数的再用INT指令转化中间运算可以把值扩大10倍或者 100倍再转化,我用PLC做浮点运算,让D3 0在触摸屏上显示小数,为什么数据出现错误?口_此主题相关图片如下,点击图片看大图:此主题相关图片如下,点击图片看大图:这是触摸屏的软元件选择!把M8002改成M8000。把第一行MOV kl50 DO的这个DO改成其它数据。 因为装触屏之后,PLC和屏之间,D0默认为屏地址。选择数据 32位,
8、选择实数!单此主题相关图片如下,点击图片看大图:0XOOO2卜MOVK150D4150MOVK120D2120FLTD4DIO150150.000FLTD2D20120 120.000DEDIV DIO D20-150.000120.000 1*6厂此主题相关图片如下,点击图片看大图:我已经改成这样了。但还是不行的。是不是用触摸屏的仿真软件不行的?浮点运算的应用 各位大侠 ;小弟现有一工程,需要用到定长,而且要求精确到1mm,并且不适用伺服或者步 进,所以我就想用一般程序里的浮点运算,但是不知道为什么我在适用的过程中发现, 在自由监控中可以任意赋值的寄存器,但是在文本中 就不能任意赋值,就是赋
9、值寄存 器出现乱码,而且用 ECMP 指令进行比较的时候,输入浮点但是指令的=指令不执行。 举例;LDM8000C630 K99999|HSCR C630 D10|DFLT D10 D12|DFLT D4001 D14| |EMUL D14 D12 D16LDM0ECMP D18 D20 M10LDY0 |DAND = D18 D16ZRSTM10 M12|LDY1注释:MIO M12启动正反转 yOyl正反输出D18文本赋值D16通过编码器计数进 行浮点运算值(比较的基数)D18 为32 位寄存器有的文本就不怎么支持浮点数。也有的PLC不支持浮点数。这个东西很难说得清楚了。 一个mm的精度不
10、用浮点数也是可的了。把单位改小一点,不就取消了浮点数了?还有的浮点数是不可以=比较的,浮点数本身是有误差的,可以在精度范围内比较,比如 |a-b|0.0001.三菱 PLC 的浮点运算如何应用啊。指令是什么啊具体要看相关的手册啊,下图是FX3U的例子版主加精华EXPEADDESUBEMULEDIVLOGELOG 10ESQR2进制浮点数乘注运靠2谡制灣点数拦数运算ENEG2迟測浮点数符号购转EADD3132D?进制评点数加法运算ESUBS132D2进制浮点数减法运异EMULS132DEDEV5132D2进制浮点数徐法运异EXPSDLOGESD左址制浮点数白然对数运异LOGICSD2逹別浮点数常
11、汁对教运算ESQRSD2进制汉点数开方运异ENEGDSINTAN2进制汐点数SIN-1运算AC OSMANRADDEG2进制寿点数BIN整数的转换2进制汀点数SIN运算2送副汀点数CO吕运算7址副汀点数TAN远算ASIN2进制许点数COS胡运算2进制许点数7TAN-1运异2逖制汉点数角度,我度的转燥2谡制汀点数弧度-f角度射转垛INTSDSINSDCOSsDTANSDASINSDAC OSsDATANSDRADSDDEGSDPLC 的四舍五入运算方法PLC 的功能足够强大了,却没有四舍五入的功能,一般的应用忽略了就算了,可总有遇到 要用这个功能的时候。网上讨论这个问题的也不少,可见着胡乱解答的
12、也多,有的说用浮点运算、有的说用比较余 数的办法不一而足。基本上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,等于四舍五入结果,