DB_Any 作为形参,如何在程序内访问DB块里面的内容

详细问一下,还是没有完全明白。你的意思是不是要用矩阵来解决呢?我举个例子,你帮忙看一下:
一个DB(DB1 符号名字Data_Block1)的内容是两个结构index1、index2,每个结构里有一个布尔一个整数(也许有很多的更复杂的数据类型,这里只是举例子),我们给他们命名为Bool1、Int1,Bool2、Int2。现在我要在一个FC(FC1 符号名Test)中调用这个DB块,FC1有个形参(DB_Para 数据类型为DB_Any)用来传递DB1.现在我要在FC1使用DB中的参数,怎么使用呢???要保证FC和DB是优化的块。
另外只是使用矩阵,在M区建立相应的结构,在FC中调用矩阵中的结构,然后引用变量,这种方法是可以的,这就是AB的解决方案。对于simens来说他有一个DB这样一个特殊的结构,还是想利用DB来传递参数,否则是不就没有必要利用DB了。

最佳答案

对于S7-1500,DB_ANY一般都是在SCL伴随着DB_ANY_TO_VARIANT、GetVariant以及它们的逆指令PutVariant、VARIANT_TO_DB_ANY使用
但是有要求,DB_ANY指向的块必须是UDT建立的块或者数组DB才行,然后用前两个指令读出数据,处理后,再用后两个指令存回DB_ANY,有机会在论坛写个帖子细说,但是思路是这样的

贴个之前的测试指令的截图,仅供参考

程序的作用是连续多个DB块,都是一样的UDT1建立的,都用FC36处理,之后再写回这些DB块

图片说明:

DB_Any 作为形参,如何在程序内访问DB块里面的内容  DB_Any 作为形参,如何在程序内访问DB块里面的内容  

提问者对于答案的评价:
这样操作很复杂,以前的Step7 对DB块的访问和操作多简单呀,还有没有别的办法?

最佳答案作者回复:
很麻烦吗,之前的OPN DB_BLOCK同样要加上数据处理啊,而且主要是指针,现在算是简化了

PS:指令写错了是VariantGet,VariantPut

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月8日
下一篇 2017年6月8日

相关推荐