寄存器寻址问题

我刚学PLC,自己写了一段FC1块,然后在OB1里面带参数调用FC1,输入参数file处给的是db1.dbd6可是为什么模拟一开始,在L P##file 指令那一行,standard显示就是c0,
   当我强制输入信号Enter时,Souce里的数据是传入DB1.DBD24 可是我期望的是将数据传入DBD6     我错在哪里呢?

问题补充:
我的目的是:在Enter的每一个上升沿取Souce(数据类型:Dword)里的数据存入数据块DB1内,
  存放地址是从File(数据类型:Dword)指定的地址开始,
取数据的次数由Length确定,Position是当前取的次数,
  当Position=Length时,输出DN位。
在OB1调用FC1时给出的实参是:

    CALL  FC     1
       Enter   :=L20.0
       Souce   :=MD2
       Length  :=DB1.DBW2
       DN      :=DB1.DBX0.1
       ER      :=DB1.DBX0.0
       File    :=DB1.DBD6
       Position:=DB1.DBW4
请求各位高工再帮我看看:
1.我用FC块来做这段程序合适吗?
2.给定的实参到了FC块内部执行时怎么变成了C0?

图片说明:

寄存器寻址问题   

最佳答案

你没有给出#file的类型,我感觉应该是Pointer吧,在FC中不能直接传递Pointer,要对其进行拆分取出实参的地址。
见附件的写法试试。

1、可以使用FC做,没问题。
2、那是存放输入实参的地址,要对存放地址进行分析后取出实参的地址。

图片说明:

寄存器寻址问题  

提问者对于答案的评价:
按照你的提醒,指针问题已经解决,但是无论Enter使能多少次,Position的值总是在2和3之间跳来跳去,DB1中也只有DB6和DB14中传入了数据。能不能再帮我检查一下,

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

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

相关推荐