电工知识|如何在PLC里将双字的十六进制数DW#16#D4DB71FB换成无符号的数3571151355

   更新日期:2017-03-25     来源:建材之家    作者:水电之家    浏览:47    评论:0    
核心提示:如何在plc里将双字的十六进制数DW#16#D4DB71FB换成无符号的数3571151355,正是目前PLC自身不能解决的问题,以西门子S7-200为例,该PLC内的存储器存储整数的最小单元为字节,2个字节组成一个字,2个字构成一个双字,双字即为PLC存储整数的最大的存储单元。PLC对字节定义为无符号数,即字节可传递显示16进制数0~FF(即10进制数0~255),而对于字与双子存储器定义为有符

显微镜下的黄龙玉

推荐简介:近些年黄龙玉的价格逐渐攀升,有越来越多的人都开始纷纷收藏黄龙玉,随着求购者需求的增多,市面上也出现了不少假的黄龙玉,那有什么仪器可以对黄龙玉的玉色是自然色,还是增强色进行鉴别呢?严格上来说,颜色没有真假,但是玉皮却有真假,用辅助仪器来判断玉色的手段常见的有三种:1.查尔斯滤色镜,又称祖母绿滤色镜,其分辨颜色有专门的颜色对照表可供参考。2.显微镜,一般用于观察玉石的表面特征,玉石内部接近表面的结构......
水电之家讯:如何在plc里将双字的十六进制数DW#16#D4DB71FB换成无符号的数3571151355,正是目前PLC自身不能解决的问题,以西门子S7-200为例,该PLC内的存储器存储整数的最小单元为字节,2个字节组成一个字,2个字构成一个双字,双字即为PLC存储整数的最大的存储单元。PLC对字节定义为无符号数,即字节可传递显示16进制数0~FF(即10进制数0~255),而对于字与双子存储器定义为有符号数,即:其最高位定义为存储数的符号位,当最高位=0时表示为此数为正数,当最高位=1时表示此数为负数。如将16进制正数“16#9673”送入MW0,MW0的各位值为:1001_0110_0111_0011,由于其最高位M0.7=1,故在监视状态下,MW0显示的不是正数38755,而是负数-26781。见下图:

本来是正数存入存储器里,可是存储器显示的数却变成负数,如对次数进行加减乘除运算,也是按负数进行,这给数据监视及对数据计算整理带来极大的不便。

如何解决字与双字在存储的数其最高位=1时,在监视状态下能显示其正数值而不出现负数值呢?请见以下解析:

1、对于最高位=1的字存储器,要使它不显示负数,可将它传递给双字存储器。用双字存储器显示其存数值即可解决显示正数值而不会显示负值。即:令该字的上一个字存储器=0,如:MW2=16#9763,可令MW0=0,监视MD0双字存储器,其MD0的显示值即为正数值,见下图中的MOV_DW的显示值。

2、对于最高位=1的双字存储器,由于PLC无四字存储器,故不能采用上述1的方法来实现正数显示,但可以采用下面的思路编程来实现:

用二个存储器(一个双字与一个单字)分别显示该数的前后二部分数字:用双字存储器显示该数百位以上的部分数值,用单字存储器显示该书的十位与个位2为数值。将这二个存储器数字串联相接的数字,即为该数转换为10进制数的正数值。举例:一个16进制数转换为10进制数,将转换后的数的百位以上的数字部分送入双子存储器内,其值为:35711513;而转换为10进制数的百位以下的数字部分送入单子存储器内,其值为:55。则该16进制数转换为10进制的数为:3571151355。

编程思路:1、将16进制的双字正数送入MD1,其MD0值=MD1数÷256(即16#100)。再将MD0÷100×256——>VD0,则VD0值即为MD1÷100的整数部分,将它转换为10进制数送入VD0,则VD0就不会显示负值,而且此VD0值的最小单位值1为10进制数的百位数(即=100)。MD0÷100的余数部分加上MD1的最低字节(MB4)值—>MW4,再进行这样整理:MW4-100>0则VD0+1,直到MW4<100为止。此时的VD0值为原MD1数转换为10进制的百位以上的数字部分,而MW4值为原MD1数转换为10进制的百位以下的十位与个位的数字部分。

将双字单元的16进制数转换为无符号的10进制数的程序


下面是将双字的十六进制数DW#16#D4DB71FB送入MD1,按上面程序运行,在监视状态下,转换成无符号的正数(见网络6中的VD0与VW4),


即:MD1=16#D4DB71FB=3571151355

VD0*100+VW4=3571513×100+55=3571151355

对于最高位=0的双字数,带入上程序,运行结果也是正确的,见下图:


即:MD1=16#74DB71FB=1960538619

VD0*100+VW4=19605386×100+19=1960538619

对于最高位=0的数可不用运行上述编程,直接用MD1->VD1,其VD1即可在监控下显示10进制数值,故可将原网络6改为下面2条编程语句(见下图):在最高位=0时,其M1.7=0,故网络6运行,其VD1值即为10进制的转换值。在最高位=1时,其M1.7=1,故网络7运行,其VD0与VW4值串联相接值即为10进制的转换值。

水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
小程序码
 
打赏
 
更多>文章标签:电工
更多>同类水电电工资讯
0相关评论

推荐图文更多...
点击排行更多...
最新视频更多...
推荐产品更多...
老姚之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号-1
(c)2015-2017 BYBC.CN SYSTEM All Rights Reserved
Powered by 电工之家