有关step7 V12( PLC 1500) 利用Scl编程的间接寻址DB块内容的问题

分享到:
727
下一篇 >

菜鸟:

*近一段时间正在利用V12 的scl语言编写程序,在使用过程中发现一些问题和疑惑想跟大家分享讨论一下。

我们的程序需要在FC 和FB 中调用DB中的内容,DB中是一些结构体Struct1,struct2....,我现在的做法是声明DB为DB_ANY,同时把DB的属性改为非优化的(优化的数据块不能够直接使用**地址也就不能使用peek指令了),然后再FC或FB中利用peek指令就可以把DB中的内容读进来了。

但是,我觉得作为Portal TIA 1500 一直都主张使用符号优先的编程方法,能不能彻底抛弃利用**地址来间接寻址呢???清大家给些意见

另外。对于变量覆盖的功能,我不知道可以不可以实现我的功能。简单的试过几次,没有成功。希望有用过的朋友给些帮助。

帮助文件太不给力了觉得,许多新定义的概念或专有名字不像以前都有超链接去解释,不好理解,而且例子特别少,我觉得这一点很不好。希望在马上要出来的V13版本中得到改变。

应该是可以全部都用符号名来编程的,只是一直还没有机会试一下。

大虾:

可以用索引访问替代啊 – 例如:  L #my_array[#index]

菜鸟:

通过矩阵引用时可以实现所要的功能,那么这样的话我觉得就没有必要使用DB块了,直接在M区定义就可以了,这就像是AB的编程方式了。我的意思是既然西门子有了DB这样一个数据结构,那么就应该有相应的指令来实现在FC中打开这个DB块,并且使用这个DB块的内容。像在stl中用open指令,然后就可以直接引用块里的符号变量了。

大虾:

要用间接寻址 你还只能用非优化的块 使用PEEK Poke  或者可以用  DB1.dbw[变量] 等方式来访问


用符号名 肯定是用数组传进来为*简单

你也可以把结构变量传进来 例如 Struct1 作为Input  那么你可以在程序里面 访问 #Struct1.A   #Struct1.B   也可以直接用#Struct1:= Struct2  来赋值整个结构变量

斑竹:

应该是可以的。 直接用优化的块。

楼主举个详细的直接点的例子,大家来试试看看有没有办法?


你可能感兴趣: 工控菜鸟园 自动化系统 SCL PLC 首页推荐
无觅相关文章插件,快速提升流量