373932332
级别: 探索解密
精华主题: 0
发帖数量: 25 个
工控威望: 151 点
下载积分: 666 分
在线时间: 10(小时)
注册时间: 2016-07-17
最后登录: 2023-03-02
查看373932332的 主题 / 回贴
楼主  发表于: 2018-01-12 15:23
图片:
现在用的fx5uPLC,把读卡器里的数据读到D寄存器里,但是数据太大,一个放不了,怎么存放
读取的时候是连着用的四个寄存器ADPRW指令,数据存放到了D100,d101,d102,d103四个里面,
是16位的,但是数值超过D寄存器的最大值,不知道怎么存储才能不带符号,
后面连接的组态王读取数据,然后存储到数据库里,但是组态王里不知道怎么识别符号,纯数字没问题,所以就想把PLC里的这个数值变成不带符号的,
然后就想到,这个符号是因为数值太大溢出所以出现了-号,所以就想D数据寄存器足够大就行了,然后DMOV指令,但是这个指令是把d10,d11两个寄存器送到两个寄存器,有没有把一个D寄存器送到两个寄存器里面的指令,跪求!!大神
梯形图如下
恒头
373932332
级别: 探索解密
精华主题: 0
发帖数量: 25 个
工控威望: 151 点
下载积分: 666 分
在线时间: 10(小时)
注册时间: 2016-07-17
最后登录: 2023-03-02
查看373932332的 主题 / 回贴
1楼  发表于: 2018-01-14 10:42
图片:
引用
引用第1楼fcq417于2018-01-12 17:18发表的  :
"有没有把一个D寄存器送到两个寄存器里面的指令",-----高低字节单独处理,然后处理掉不需要的部分,再传送即可.

plc编程学习可以访问书研自动化网站 www.shuyanzdh.com
plc学习咨询QQ:2252241236

感谢感谢,感谢大神


测试梯形图如下
恒头
373932332
级别: 探索解密
精华主题: 0
发帖数量: 25 个
工控威望: 151 点
下载积分: 666 分
在线时间: 10(小时)
注册时间: 2016-07-17
最后登录: 2023-03-02
查看373932332的 主题 / 回贴
2楼  发表于: 2018-01-14 14:04
有符号16位数,数值范围 -32768~32767 整数。
无符号16位数,数值范围 0~65535 整数。
32位浮点数,数值范围 3.4E-38~3.4E+38 实数。

16位二进制数的范围如下:
0000 0000 0000 0000 ~ 1111 1111 1111 1111
二进制数,不是任何人都懂的.
所以,通常都要换算成,小孩都能明白的十进制.
就是 0~65535.
------------------
把最高位看做+、-号,其余十五位的范围,就是0~32767.
0111 1111 1111 1111=32767
那么,16位二进制表示的有符号整数,就是-32768~+32767.
恒头
373932332
级别: 探索解密
精华主题: 0
发帖数量: 25 个
工控威望: 151 点
下载积分: 666 分
在线时间: 10(小时)
注册时间: 2016-07-17
最后登录: 2023-03-02
查看373932332的 主题 / 回贴
3楼  发表于: 2018-01-14 14:14
1111 1111 1111 1111=65535

FX5U中的指令有  有符号16位数    转成  无符号16位数    指令int2uint
                                 有符号32位数   转成   无符号32位数   指令Dint2udint
                                无符号16位数    转成   有符号32位数   指令uint2int
                               ..........(能想到的都有)

在手册IQ-F fx5编程手册(指令/通用FUN/FB篇)
3cpu模块用指令》7基本指令》7.5数据转换指令


问题终于解决了,看了网上的许多资料,感谢各位前辈,学到了很多,开心
恒头