接口管脚定义

OPN   #DB_Numer                   //打开DB 1
      L     P#0.0                       //初始读指针
      LAR1  
      L     #Number                     // 100个字的循环计数为初值
M001: T     #TEMP1                      //计数值 送入MB 10
      L     PIW [AR1,P#0.0]             //按读指针指示的地址读数据
      T     DBW [AR1,P#0.0]             //按写指针指示的地址写数据
      +AR1  P#2.0                       //读指针指向下一数据地址
      L     #TEMP1                      //取循环计数值
      LOOP  M001       
程序如上,想做成功能块,方便调用,但是在初始位定义上遇到了问题,不知道定义什么变量和怎么写程序, L     PIW [AR1,P#0.0] 定义起始位是零,需要的时候可能还要改成 L     PIW [AR1,P#10.0] 或者其它的,这儿管脚应该怎么定义,程序怎么写啊!,谢谢!

最佳答案

楼主,我给你个办法,用32位指针就行。建立一个FC,建一个INT型输入变量StartAdd_PI,作为起始复制地址,再建一个INT变量StartAdd_DB,作为DB块接收的起始地址。

程序里可以这么写:(在你程序的基础上修改)


OPN   #DB_Numer                   //打开DB 1
      L     #StartAdd_PIW
     SLD 3                       //左移三位,变为指针。
      LAR1 
      L #StarAdd_DB
     SLD 3
     LAR2 
      L     #Number                     // 100个字的循环计数为初值
M001: T     #TEMP1                      //计数值 送入MB 10
      L     PIW [AR1,P#0.0]             //按读指针指示的地址读数据
      T     DBW [AR2,P#0.0]             //按写指针指示的地址写数据
      +AR1  P#2.0                       //读指针指向下一数据地址
      +AR2  P#2.0                       //写指针指向下一数据地址
      L     #TEMP1                      //取循环计数值
      LOOP  M001    

楼主,你可以自己模拟一下,应该没有问题。

提问者对于答案的评价:
太感谢了,上次的问题就是你解决的,不过还得请教一下,SLD 3 在这里起到什么样的作用,为什么左移双字就偏移成需要的地址了,还有就是上一个你回答我的问题,为什么会报错,感谢!!!

专家置评

已阅,最佳答案正确。

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

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

相关推荐