技术论坛

 横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

返回主题列表
作者 主题
winter938
至圣

经验值: 10673
发帖数: 1561
精华帖: 33
楼主    2017-09-06 16:52:11
主题:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

最近手头有了FX1S-14MT的实物,对心头一个有了很久的疑问进行了实测。这个疑问就是当加减运算的结果超过了有符号数表达的范围,结果会是怎样的?PLC系统相应的标志位又是怎样的?实验的结果下面以附件图片给出来了,实验是通过触摸屏在线联机后截图所得。可以看出二者有很大的区别,这个区别对我们编程处理高速计数器的数值时有很大影响,我以前的旧贴中提到过,可惜那时没有FX1S-14MT的实物测试一直心存悬疑,看了三菱的手册也是没看太明白(尤其是那个关于标志位的说明)。




工控爱好者
芳季
至圣

经验值: 66281
发帖数: 14655
精华帖: 100
1楼    2017-09-07 09:09:23
主题:回复:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

200呢,是全数轴循环。最大值加1等于最小值,溢出。正负数轴手尾相连,形成一个大圈。

30呢,是半轴循环。最大值加1等于0,溢出。正负数轴两端向中间0值相连,形成正环和负环。

所以200可以理解40000这个值,而30最大只能32767。

最大值加1等于最小值,这方便机械的运算。

最大值加1等于0,比较接近人的感官。

所以,大量的人认为200高速计数器很大值过零的时候会有意外,然后能可每次复位高计为0重新计算。因为感官认识是这样吧。而30的,很大值过零后产生进位标志之后把结果做相应的加或减最大值就可以了。也是感官认识。

殊不知,200的处理方式更加简单,管都不用管。

yanxiao
至圣

经验值: 26049
发帖数: 11948
精华帖: 43
2楼    2017-09-07 09:36:31
主题:回复:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

当采用补码规则进行加减运算时,无符号数和有符号数的运算法则是相同的,直接就是二进制的运算法则。

当需要解释、显示时,才考虑符号位、溢出进位的意义。


我们可以让200做32位、48位、64位等超长的整数运算,利用普通的加减法配合溢出位处理就可以实现。

winter938
至圣

经验值: 10673
发帖数: 1561
精华帖: 33
3楼    2017-09-07 10:48:29
主题:回复:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

就像VD0高位字是VW0而不是VW2一样,三菱的双字D0却是高位字为D1。这些根本的区别给很多人挖过坑,基本而重要的东西,值得大家花时间弄清楚。相信其它品牌的PLC一样会碰到。顺带提一句:高速计数器200和FX1S过了正的最大值再加计数时都是变为负的最大值,即所谓的循环计数以16进制描述就是0000 0000(0)----7FFF FFFF(正极值),8000 0000(负极值),8000 0001-----FFFF FFFE(-2),FFFF FFFF(-1),0000 0000(0)----如此循环,减计数则循环方向相反。

工控爱好者
winter938
至圣

经验值: 10673
发帖数: 1561
精华帖: 33
7楼    2017-09-14 13:18:56
主题:回复:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

这两天有闲参照那个运算器的模型自己做了一段程序实现字节有符号加减运算,可以实现以字节为单位的多字节加减运算。附件就是这段程序,可以做成库,欢迎有兴趣者测试指正

加减库指令.zip


工控爱好者
winter938
至圣

经验值: 10673
发帖数: 1561
精华帖: 33
9楼    2017-09-15 11:01:53
主题:回复:横向比较s7_200和三菱FX1S-14MT在有符号加减法的表现

对7楼的程序实际运行发现非常耗时,串行计算的机制决定了它快不了,只能做一下改善,以下附件程序减少了子程序调用级数,并使用了JMP和LBL指令跳转实现循环代替系统的FOR-NEXT指令,耗时大概缩短三成。翻阅手册发现子程序中使用L存储器虽增加了程序可移植性但程序执行时间比其他存储器会增加很多。等有闲把L换成V试试看。

加减库指令2.zip


工控爱好者
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。