回复:200Smart子程序类似于背景数据块的实现讨论,。

已锁定

xiatianyun

  • 帖子

    854
  • 精华

    10
  • 被关注

    25

论坛等级:奇侠

注册时间:2020-05-09

白金 白金 如何晋级?

发布于 2021-11-20 23:27:30

2楼

七、DBMalloc数据块分配子程序:


DB_Malloc用在用户子程序开头部分,用于分配DB块和定位DB块。分配块只在第一次扫描到该子程序时才发生,之后的扫描不用重新分配。分配其实是分配最新索引到子程序的索引变量中来。定位也很简单,就是数据块头指针开始的顺序查找。定位单独做成一个子程序,DB_Locata。


八、数据块定位




九、完整的程序就是由这几个子程序组成,DBInit对数据堆进行初始化、DBLocata对数据块进行定位、DBMalloc分配数据块。

比较重要的是:索引决定子程序数据块位置,容量决定数据块字节容量以及下个块的起始地址,每个子程序都需要一个全局索引,这些索引由一个索引资源来分配,这个资源随着子程序的不断被扫描到而不断递增。再次扫描到的子程序不会再次分配数据块,只会定位数据块。

这样,无论能不能按顺序扫描到子程序,子程序都有一个自己的数据块被固定,下次扫描无论是否执行该子程序都不会改变位置。

------------------------------------------

另:其实索引变量不用按照结构中的来,DBIndex1 DBIndex2 ....,可以散落在程序中,这样不用拿纸记住使用到哪个索引变量了。

-----------------------------------------

程序是在 不欲 程序中设计的,还没有和他沟通,就不发程序源码了。(其实是我的程序设计风格太烂)

------------------------

程序的子程序中使用了几个全局变量,这个确实不好,但如果不使用全局变量那么每次调用管理模块都需要输入接口参数,这些接口在整个程序中是不变的,我试了几个子程序测试,发现会有输入错误的时候,所以还是选择使用全局变量,减少管理模块的接口。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9144条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。