关于ANY指针应用

分享到:
473
下一篇 >


      菜鸟:


上图有几个问题请高手指教:

1,如上图所示,ANY指针指向的应该是一段外部的地址(伺服轴的报文地址),通过这样编程可以访问吗?我记得这样周期通信地址的读取大于2个字应该用SFC14啊!

2,SFC20的使用,我记得看的资料显示,SFC20只能拷贝映像区地址,不能考外部地址啊,难道报文地址不属于外部地址吗?

这个程序是老外提供给我们的模板程序,应该不会错的,而且这个模板好多块都是这样做的,真是有点糊涂了,请各位大侠帮忙指点一下,谢谢了!

斑竹:

楼主这个程序应该有些问题

L 0

T LW[AR1,p#4.0]

按照any的定义这应该是DB number ,难道有DB0?

菜鸟:

ANY指针中的DB号为0,表示不是DB中的地址。从指针*后的双字16#8100 0000可以看出地址区为I。


程序没有问题。为了帮助大家理解,给出了ANY指针的结构图。


程序中ANY的**个字表示数据类型为字节,第2个字表示字节数为12,第3个字表示不是DB,第

4个字表示I区。因为起始地址(iDriveBaseINAddress)是字节地址(图中用16个b表示),需要将它左移3位,相当于乘以8(一个字节8位),作为间接寻址的指针的基础,再用OD指令叠加上指针*高字节的地址区信息16#81。

ANY用的是I区,不是PI区。

假设I区的起始地址(iDriveBaseINAddress)为X,SFC20的输入参数(ANY)的实际地址为P#IX.0 BYTE 12。

当然也可以在调用SFC20时直接写P#IX.0 BYTE 12,不过老外这种模板的优点是通用,灵活。但是要看懂程序的门槛比较高。

如果没有接触过ANY的内部结构,建议找有例程的书来看看(例如《S7-300/400 PLC应用技术》第3版P165)。

斑竹:

调用SFC14主要是保证数据传送的一致性(打包后传送),其实很多场合对一致性的要求每那么高。

菜鸟:

老师说的在理,看问题片面了,自己用any的时候几乎都是DB块,思维定势。谢谢

ANY指针的程序我倒是看明白了,知道它是指向的I地址区的12个字节,我不明白的是它指向的地址区是从站伺服控制器的地址区,这个地址区不是属于外部地址吗?难道可以把它当成映像区的地址使用吗?所以有点糊涂还望老师多指点,谢谢!


你可能感兴趣: 工控菜鸟园 图片 自动化系统 PLC 伺服
无觅相关文章插件,快速提升流量