恍然如梦
级别: 探索解密
精华主题: 0
发帖数量: 7 个
工控威望: 102 点
下载积分: 732 分
在线时间: 3(小时)
注册时间: 2017-09-05
最后登录: 2019-02-27
查看恍然如梦的 主题 / 回贴
楼主  发表于: 2017-12-13 15:16
三菱plc-fx 3u的sfwrp与sfrdp怎么样写入与读取32位数据和32位寄存器,如果不能可以用什么别的指令来替代,急需技术大神指点,感谢
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6770 个
工控威望: 38371 点
下载积分: 3262 分
在线时间: 9513(小时)
注册时间: 2006-09-13
最后登录: 2024-11-26
查看cvlsam的 主题 / 回贴
1楼  发表于: 2017-12-13 15:55
我个人认为:对于SFWR来说,将您欲写入的32位数据分为高低字来调用2次SFWR指令,同样对于SFRD指令也是如此处理。

Good Luck~
恍然如梦
级别: 探索解密
精华主题: 0
发帖数量: 7 个
工控威望: 102 点
下载积分: 732 分
在线时间: 3(小时)
注册时间: 2017-09-05
最后登录: 2019-02-27
查看恍然如梦的 主题 / 回贴
2楼  发表于: 2017-12-13 16:26
但是当写入和读取多个数据时就会覆盖第二个16位寄存器,您这个方法行不通
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6770 个
工控威望: 38371 点
下载积分: 3262 分
在线时间: 9513(小时)
注册时间: 2006-09-13
最后登录: 2024-11-26
查看cvlsam的 主题 / 回贴
3楼  发表于: 2017-12-13 16:33
引用
引用第2楼恍然如梦于2017-12-13 16:26发表的  :
但是当写入和读取多个数据时就会覆盖第二个16位寄存器,您这个方法行不通


我无法理解您为何有如此的顾虑?

以D0~D5的数据列为例:当32位数据源 D20,D21时,
D0存放的是队列的长度,当你使用32位数据时,你可以对D0对2求余来判断是否取出了32位数据。

当你将D20写入D1时,D1开始的数据会向左移动,而当你写入D21时,原来存放在D1中的D20的数据不也向左移动,又何以存在覆盖?

Good Luck~
恍然如梦
级别: 探索解密
精华主题: 0
发帖数量: 7 个
工控威望: 102 点
下载积分: 732 分
在线时间: 3(小时)
注册时间: 2017-09-05
最后登录: 2019-02-27
查看恍然如梦的 主题 / 回贴
4楼  发表于: 2017-12-14 16:55
按您说的我试验了一下,当用sfwrp分别写入32位高低位的寄存器时,低位16位寄存器中的数据变为负值(也就是超过16位最大数值后变为负值),高位16位寄存器中的数据为0,不能实现想要的功能,当用该指令写入时又变为16位数据
咗臉ヅ微笑ぺ
非吾所愿,奈何已离去……
级别: 工控侠客
精华主题: 0
发帖数量: 471 个
工控威望: 2130 点
下载积分: 29832 分
在线时间: 588(小时)
注册时间: 2017-04-08
最后登录: 2023-07-25
查看咗臉ヅ微笑ぺ的 主题 / 回贴
5楼  发表于: 2017-12-14 17:30
1楼说的对的,存取的时候就当两个16位数来操作;低位16位寄存器中的数据变为负值是因为本身最高位是1,但并不影响啊,当你取出时当做32位看的时候并不会改变什么
ヅ微笑面对每一天,即使生活并不美好ヅ
恍然如梦
级别: 探索解密
精华主题: 0
发帖数量: 7 个
工控威望: 102 点
下载积分: 732 分
在线时间: 3(小时)
注册时间: 2017-09-05
最后登录: 2019-02-27
查看恍然如梦的 主题 / 回贴
6楼  发表于: 2017-12-15 15:33
是的,是我看错了,理解不到位,两位老师说的都对,多谢帮忙,我明白了,谢谢