用户中心

资讯 > 工业以太网

SIEMENS间接寻址

2007.12.12阅读 5575

  一、引言

  相信大家在使用SIEMENS S7-300 CPU和其它站点进行通信时,可能会遇到把一定的PI区数据依次读入其它存储区域的问题CONTROL ENGINEERING China版权所有,在通信数据量较少时,可以使用L/T指令,但如果数据量很大时,我们则可以使用指针来完成。

  二、工程实例

  在某个项目中要用S7-300读一个PROFIBUS总线上的一个从站(DP/DP Coupler)中的200多个字节的数据,由于数据量较大,本来准备用SFC20(BLKMOV)来读取,可是SFC20不支持PI区。于是准备用指针来读取,请看下面的一段有错误的程序。

  接口和程序如下(本例中用M区来代替PI区):

  接口简介:number:要传递的数据个数;

  start_addr1:源存储区域的起始地址;

  start_addr1:目的存储区域(DB)的起始地址;

  db_mumber:目的数据块编号;

  len_in:以什么单位读取(本例中用WORD为单位读取)

SIEMENS间接寻址如图

 

  FC100:L     #start_addr1  &n

bsp;             //initialize pointer

  T     #pointer1

  L     #start_addr1

  T     #pointer2

  L     #db_number

  T     #db_pointer

  L     #len_in

  T     #len

  OPN   DB [#db_pointer]

  L     #number

  next: T     #buffer                    

  L     MW [#pointer1]

  T     DBW [#pointer2]

  L     #pointer1

  L     #len

  +I   

  T     #pointer1

  L     #pointer2

  L     #len

  +I   

  T     #pointer2

  L     #buffer

  LOOP  next

  BE  

  OB1:  CALL  "loop" //从MW0-MW222依次传5到DB2.DBW0-DB2.DBW222中。(MW500=112)

  number     :=MW500

  start_addr1:=DW#16#0

  start_addr2:=DW#16#0

  db_number  :=W#16#2

  len_in     :     =2

  程序编好后,用WINLC进行模拟,程序下进去后根本不能运行,于是试着将OB121下载到CPUwww.cechina.cn,哎控制工程网版权所有,CPU总算可以运行了,于是在变量表里进行监控控制工程网版权所有,开始几个字节数据都能正常读入,后面数据就读取错误,一气之下把MW500值变为10000,奇怪,数据全部读入正确控制工程网版权所有,难道是LOOP指令用错了,这时去查看CPU诊断信息,这才恍然大悟于是嘴里又说出自己的口头禅(MAKE A BIG MIST

标签:SIEMENS,
版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688