技术论坛

 回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

返回主题列表
作者 主题
Rossi84
侠圣

经验值:4138
发帖数:394
精华帖:1
楼主    2018-01-03 23:24:14
主题:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路 精编帖 

请教各位大侠:

           我想实现这么个功能:DB里有很多bool和word的类型的数据,DB块是优化的访问方式,为了作为传输片段,我想把DB块中部分bool型变量和word型变量(bool型变量和word变量不是连续的,是跳跃的)重组到一个新的DB块中,该DB块也是优化的访问方式,如何实现呢,以前在step7中,考虑使用2个地址寄存器stl实现,到了博图,以及DB块存在优化的访问方式,不知道如何实现好些,请大侠们指点方向,帮助扫盲,谢谢!

无法改变之前,努力改变之后
Letham
至圣

经验值:14196
发帖数:2023
精华帖:43
1楼    2018-01-04 08:45:20
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

使用优化块的访问方式 为什么要重组了?
优化块不是没有地址,而是地址隐藏又CPU自己来管理的!已经考虑到最小占用地址空间的问题了!

人生就像一场旅行!
westcowboy
奇侠

经验值:6746
发帖数:833
精华帖:46
2楼    2018-01-04 09:29:44
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

没有地址,它还有名称啊。没有地址就不会写程序了?那搞IT的还不得把我们笑话死。。。

全符号访问是大势所趋,把地址寄存器忘了吧。高级语言里没有地址寄存器这个玩意,复杂的任务和算法照样能完成。

Let's build the automation future!
Rossi84
侠圣

经验值:4138
发帖数:394
精华帖:1
3楼    2018-01-04 09:34:47
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路
感谢版主解答!目前想法是这样的,有些智能dp从站的地址整体映射到优化的db块了,参与控制的数据只是其中的一部分,还不是连续的;同时一些其他db的地址数据(外围的状态信号,以及速度给定等数据)都需要链接到控制的fb块,考虑创建ubt类型的fb管脚,把如上的数据组合到一起,连到管脚,所以就有了优化块中不连续地址移位复制到新的db的想法!还请版主指点!
无法改变之前,努力改变之后
westcowboy
奇侠

经验值:6746
发帖数:833
精华帖:46
5楼    2018-01-04 12:37:07
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

UDT继续用,在S7-1500里,UDT的作用非常广泛,UDT变成了一个可以被CPU识别的特殊的数据类型。

同一个UDT创建的变量(或者结构体,数组)可以直接使用MOVE指令进行赋值。非常方便。

Let's build the automation future!
Letham
至圣

经验值:14196
发帖数:2023
精华帖:43
7楼    2018-01-29 12:53:24
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

我还是有点不解


我想把DB块中部分bool型变量和word型变量(bool型变量和word变量不是连续的,是跳跃的)重组


为什么建这DB的时候,为什么不把BOOL/WORD分别 整合到一起?
第二,没有地址,就不会传了?

A DB1.BOOL1

=DB2.BOOL1

这样就行?

要实现大批量的传输,还是用UDT,STRUCT 等结构化,组织好你的数据块,然后 用MOVE_BLK等指令。


块的优化使用方式,需要你改变习惯,比如使用使用数组,用数组索引寻址。

你的思想还停留在300/400间接寻址的路子上,那么 你直接取消快的优化访问方式,那么, 你用STL的间接寻址好了。



人生就像一场旅行!
Rossi84
侠圣

经验值:4138
发帖数:394
精华帖:1
8楼    2018-02-04 19:45:14
精编帖  主题:回复:请教: 博图S7-1500中,DB块(优化的块访问)数据重组的思路

@Letham,

       版主说的是,从step7转到用博图,从理念上要跟着转变,上面说的把bool,word分别整合到一起的办法,我也想到了,整体来说还是比较便捷的办法,但是没有尝试;

       帖子的思路也是源于构想,目前还是把FB的in管教定义为DB_ANY格式,FB外部链接自己组建的UDT格式的DB数组(优化访问),使用DB_ANY_TO_VARIANT装换到variant,使用MOVE_BLK_VARIANT将源数组元素缓存到FB内部数组,然后解析,通过(#Dest_Temp[#For_Temp].a := #Source_Temp[#For_Temp].a;)源和目标数组元素名称相同的方法赋值,最后把处理好的数组,在按原办法反着处理(#result := MOVE_BLK_VARIANT(SRC := #Dest_Temp, COUNT := #DestinCountOfArray, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #DB_Dest_Var);)

         感觉自己把自己绕进去了,为了在优化访问的前提下实现DB的访问,呵呵!要学习的还太多啊!

无法改变之前,努力改变之后
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。