我PLC程序停止运行原因? 点击:1623 | 回复:9



夕阳醉了

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 18回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2005年9月27日
发表于:2006-04-08 18:56:00
楼主
我在S7-300上编的程序运行一会就自动停机,WINCC中有的数据还显示为星号,是什么原因?
请指教!     另外,有一段间接寻址程序,为何取不出数来?
            1\ L   MW74      
             T   MD76   
             NOP 0
              2:
             OPN  DB8
             L DBD[MD76]
             T   MD80
             NOP  0




ymtq

  • 精华:1帖
  • 求助:0帖
  • 帖子:8帖 | 425回
  • 年度积分:0
  • 历史总积分:874
  • 注册:2005年7月17日
发表于:2006-04-09 10:39:00
1楼
有可能数据益出的错误

小楼

  • 精华:2帖
  • 求助:0帖
  • 帖子:5帖 | 298回
  • 年度积分:0
  • 历史总积分:418
  • 注册:2002年6月13日
发表于:2006-04-09 12:00:00
2楼
对间接寻址理解的不够,
仔细查查手册吧.多看,多做; MW74的值 你如果输入的是整型值 肯定是大错特错,

夕阳醉了

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 18回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2005年9月27日
发表于:2006-04-09 12:26:00
3楼
小楼,能仔细说下该怎么改吗?多谢!!!
我上午试验了程序,就是这里出错的,只要打开这段就停机.
MW74中的值是个4的整数倍,但是已经把它转为MD了啊?
下载了间接寻址,但是没看明白.
请问怎么改? 谢了  

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-04-09 15:21:00
4楼
当T MD76 后虽然整数变成了32位的,但是数据格式并不是byte.bit格式的,不是这个格式的数据是不能作为间接寻址的
你必须这样改
将MD76的数据左移3位后成为byte.bit格式后在进行寻址
假设  MW74的数据为6  送到MD76只是长整形的6,通过对长整形的6作左移3位处理,就成了48,48也就是地址6.0,符合byte.bit格式,可以参加间接寻址,如果你要寻址到5.5,那么这个数就是5*8+5=45

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-04-09 15:25:00
5楼
你应该改为1\ L   MW74  //读入16位INT值      
             T   MD76   //变为32位DINT值
             L MD76   //读入32位DINT值
             SLD 3    //左移3位,使其符合byte.bit格式
             T MD76   //送回,此时MD76的值为byte.bit格式,假设你MW74值为64,现在MD76中的值为8.0
             NOP 0
              2:
             OPN  DB8
             L DBD[MD76]
             T   MD80
             NOP  0

夕阳醉了

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 18回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2005年9月27日
发表于:2006-04-09 15:46:00
6楼
非常感谢!
我去修改程序。

夕阳醉了

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 18回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2005年9月27日
发表于:2006-04-09 16:34:00
7楼
上面所说的是要做一个查询表程序,得到一个整数值n(0,48),放在MW72中.
现在需要把对应着DB8中的第n个存储量(实数型)取出,(共48个,
DBD0-DBD192),如果按照左移三位再返回的话,还要不要把n(0,48)乘以4变为相应的字节数(0,192)呢?

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-04-09 16:45:00
8楼
由于REAL为4个字节的,所以当要去第48个数值时,实际要取的地址就是数据块中第192地址,而4正好就是左移2次,所以可以总共左移5次就可以了。
L MW74   //48
T MD76
L MD76
SLD 5
T MD76

夕阳醉了

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 18回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2005年9月27日
发表于:2006-04-09 19:47:00
9楼
感谢!
下午已经修改运行成功,可以完成查询了,呵呵

热门招聘
相关主题

官方公众号

智造工程师