quote:以下是引用 westcowboy在2014-03-06 21:30:32的发言:quote:以下是引用Sidel_EMH在2014-03-06 16:47:56的发言:quote:以下是引用 westcowboy在2014-03-04 21:11:39的发言:看看这个,能解决楼主的问题了吧。

你好,谢谢回复。其实我的主要问题还是想讨论一下,在各种块都是优化的情况下(如你所说,在这种情况下代码的运行效率高),如何间接调用DB块呢?如你的图片所示,我想知道在那个的功能块中如何来间接调用DB呢,因为是优化的块所以不能使用Peek/pork。而如果使用符号间接寻址,如图所示,DB_any只不过传递了一个Uint,肯定不能完成寻址的功能。
有些朋友说使用矩阵或者AT,这些好像都不能实现利用符号间接寻址DB块的目标。
如果DB不能间接寻址,那么他在使用时的优势还怎么体现呢。
想了想,或许可以这样。如果原需求是在多个DB之间进行间接寻址,比如配方(打个比方不同DB内存着不同的配方),目前由于Peek指令目前尚不支持优化DB,那么我们可以建一个大DB(1500优化的DB可以建很大),将原配方数据结构做成UDT,然后都在这一个DB内创建多个UDT的配方,然后就可以很方便的用索引等指令进行间接寻址了。
是的,如果西门子想要很好的使用DB与符号寻址,那么可能它还需要更强的指令来处理。例如,出现一个类似于open的指令,执行打开DB,打开后就可以直接引用DB内的符号了。西门子底层的东西我不清楚,也许这样做不适合西门子的整个底层代码的执行原理。但是就现在的情况,要想间接符号寻址还是要改变一下编程思路的。