quote:以下是引用xkqxwhz在2013-12-28 22:08:32的发言:
谢谢Zane 斑竹老师的回复,这个程序构建了两个指针,这两段程序我倒是看懂了,只是不知道在ANY指针中DB块的编号和开始地址的数字是怎么从IN_OUT传进来的指针PPO中提取的,也就是下边的程序:
L P##PPO //从上一级FB209的静态变量区传过的地址:656
LAR1
L W [AR1,P#0.0]
T #DBNumber //这个数据块地址难道是656?,肯定是不对的,实际为FB209的背景数据块DB101,有点搞不懂了!
L D [AR1,P#2.0]
T #StartAddress
希望老师在指点一下,不胜感激!
从指针结构可看,第0,1字节为DB编号,实参为FB的STAT,所以这里的DB编号即为FB的背景数据块
从图片和所贴程序大致判断,这段程序主要是将传动控制块进行了封装,实现了标准化,这是老德一贯的思维,看似复杂,有很多地方甚至显得多余,但这样标准化后可以重用,减少编程时间,提高可靠性。一般我们的做法是用SFC14,15进行周期性通信,逻辑部分进行读写控制字和状态字,然后计算速度或转矩给定值,这样程序分散,出错率高。看老德的程序很多时候都感觉他们做的很多余,其实这正是他们热衷于标准化的体现