请仿真仿真这个程序

1、 前几天,一位网友有如下问题。今编制了如下的程序,因出差在外身边无设备,不能实际调试。总之下述程序中刻意不直接应用OPN  DB1或OPN  DB1语句。程序中一些相关的语句参考了:
《关于S7-300和S7-400指针寻址的说明与例程(更新版)》其中第17、第18页:
http://www2.ad.siemens.com.cn/Download/Upload/AS/faq/F0215.pdf
请有设备或有PLCSIM的朋友仿真一下,程序是否可行?请将结果告之即可,谢谢。
2、要仿真的程序:
把DB1里的0至100个连续浮点数分别除以0.65然后依次成批放至DB2的连接200至300个连续浮点数变量里:  注意!0至100个总共为101个,200至300个也是总共为101个。
      L     P#  DB1.DBX0.0          //初始读指针
      LAR1  
      L     P# DB2.DBX0.0            //初始写指针
      LAR2  
      L     101              // 101个双字的循环计数为初值
M001: T     MB    10        //计数值 送入MB 10
      L     D [AR1,P#0.0]   //按读指针指示的地址读数据
      L    0.65 //输入后系统会自动转换为指数形式650000e-002
      / R   //浮点除法
      T     D [AR2,P#200.0]  //按写指针指示的地址写数据
      +AR1  P#4.0            //读指针指向下一数据(双字)地址
      +AR2  P#4.0            //写指针指向下一数据(双字)地址
      L     MB    10        //取循环计数值
      LOOP  M001           //循环计数值如为0则结束循环;如不为0减1后则转向标号为M001的语句,继续循环  
3、上述程序的关键语句参考上传的图片

问题补充:
1、关键是地址参数是否可以写为P#  DB1.DBX0.0,从下述文档中是可以这样写的。请看看截取的图片。
《关于S7-300和S7-400指针寻址的说明与例程(更新版)》其中第17、第18页:
http://www2.ad.siemens.com.cn/Download/Upload/AS/faq/F0215.pdf
2、如果P#  DB1.DBX0.0不能通过编译,那上传的“交叉区域指针常数”中所述的有何用途?请指教,谢谢。

图片说明:

请仿真仿真这个程序    请仿真仿真这个程序    请仿真仿真这个程序    请仿真仿真这个程序   

最佳答案

前面一定要OPN  DB1或OPN  DB2之类的,否则编译错误。

图片说明:

请仿真仿真这个程序  

提问者对于答案的评价:
感谢你的仿真。提出问题的初衷就是讲《关于S7-300和S7-400指针寻址的说明与例程(更新版)》这篇文档中在描述32位指针时列举了P#  DB1.DBX0.0。
就被本问题询问了几位资深的用户精英,均表示这个文档在描述32位指针时例举了P#  DB1.DBX0.0 绝对是不合适的。又反映西门子含有描述不当的文档、手册还有一定数量的。记得前些时候,西门子开展了一次纠错有奖活动。希望西门子及时、彻底地更新常用的手册、文档,以免像我们这样用户中招。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午10:06
下一篇 2018年12月1日 下午10:06

相关推荐