qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
楼主  发表于: 2012-12-20 15:16
如题,已知 MW118 中的内容就是数据块DB1中的地址。现在要将这个地址中的数据取出放到MD120中,该怎样操作?【数据块DB1中的数据都是浮点型的】

   OPN   DB     1
      L DBD[MW118    
      T     MD   120
以上编程不能通过,但是用
    OPN   DB     1
      L DBD[MD118]
      T     MD   120
可以通过,但是仿真时CPU是STOP状态,本人刚接触S7-300PLC,小白一个,望各位大佬赐教,谢谢!

夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
1楼  发表于: 2012-12-20 15:51
谢谢指教,不错就是这个错误
   OPN   DB     1
      L     DBD [MD   116]
      T     MD   120
后出现:

夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
2楼  发表于: 2012-12-20 15:52
还要编写OB121程序吗?
夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
3楼  发表于: 2012-12-20 16:08
谢谢指教,现在能正常读取数据了,但是CPU上SF灯还是亮着,对程序运行有影响吗?谢谢!
夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
4楼  发表于: 2012-12-20 16:30

夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
5楼  发表于: 2012-12-20 16:34

夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
6楼  发表于: 2012-12-21 10:01
现在的程序是:  
      L     MD   116
      SLD   3                           //左移3位,形成指针格式,用于间接寻址.
      T     MD   120
      OPN   DB     1
      L     DBD [MD   120]
      T     MD   124
能够读出数据块中对应地址的数据,但是故障依旧,好像是L    DBD[MD  120]这句有问题,望赐教,谢谢!
夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
7楼  发表于: 2012-12-22 12:27
引用
引用第12楼cvlsam于2012-12-21 23:21发表的  :


很明显,地址越界……


谢谢回答,就是这个错误,可是怎么弄才能解决这个问题呢?我弄了好长时间了,望赐教,谢谢!!
夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
8楼  发表于: 2012-12-22 13:59
引用

解决你的程序,那是你的编程错误,增加对数据块长度的检测,然后通过比较指令将你的寻址范围控制在可控范围内……

Regards

首先谢谢指教!
1.数据块长度检测:

2.寻址范围绝对超不过255 一个字节  
是否是因为  
    L     MD   116
      SLD   3                           //左移3位,形成指针格式,用于间接寻址。
   T     MD   120
      OPN   DB     1
      L     DBD [MD   120]
      T     MD   124
中的MD 120 本身是一个32位的数据?而CPU误以为越界了呢?请指教.......谢谢!
夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
9楼  发表于: 2012-12-22 14:03

夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
10楼  发表于: 2012-12-22 15:04
嘿嘿,首先我承认我的水平一般(刚开始学习西门子PLC),的确小白一个,

可是:我确定MD116中的数据不会超过204的

即使MD116中的数据是4,还是不行,但是读取MD124中的数据是正确的,如图:


夜游神
qiaoshougang
级别: 略有小成
精华主题: 0
发帖数量: 266 个
工控威望: 398 点
下载积分: 5180 分
在线时间: 324(小时)
注册时间: 2007-05-18
最后登录: 2024-11-13
查看qiaoshougang的 主题 / 回贴
11楼  发表于: 2012-12-23 09:46
终于成功了:



感谢所有回答问题的人,谢谢指教了。
夜游神