回复:关于300PLC数据存储与查询

百夫长

  • 帖子

    761
  • 精华

    2
  • 被关注

    31

论坛等级:侠圣

注册时间:2015-10-23

钻石 钻石 如何晋级?

发布于 2015-10-26 10:46:34

7楼

展开查看
以下是引用langdidang在2015-10-24 16:30:06的发言 >4楼

恩 目前就是用的这个方案写的,循环存储写了99条,然后查询写了100条,算是实现了当前要求的功能,用堆栈及间接寻址最开始我也考虑过,能写个示例说明下吗?

以下是引用百夫长在2015-10-23 14:22:11的发言 >3楼:做个数组 A1 -A100...

引用3楼详细内容:

做个数组 A1 -A100

A 是需要存储的数据

做个循环实现类似堆栈功能

A99 ->A100

A98 ->A99

A97 ->A98

.

.

.

A3 ->A4

A2 ->A3

A1 ->A2

A ->A1

基本存储功能思路就是这个了


读取的利用间接寻址,就更容易实现了

根据查询的序号 计算出对应数据的地址 



如果 A1对应序号1 

   A2对应序号2...


A1起始地址就是  (1-1)*18*8

A2起始地址就是  (2-1)*18*8

An起始地址就是  (n-1)*18*8

没有用过博图,只用step7,不知道有什么差别


用stl语言实现的思路大概写一下.


建立接口


IN:


read   bit  //读取命令

n      bit  //下一条

p      bit  //上一条



OUT:


rel   bit  //执行状态  1 出错  



IN_OUT


Index  word  //数据地址 要读第几条 1-100


P1   DWORD   //指针地址


********************************************


程序部分


1.判断 index 是否在1-100范围内,如果小于1 或者大于100,输出错误信号,或者index 赋值 1



2.计算数据段的起始地址


P1=(INDEX-1)*18*8


3.读取数据


      OPN   DB100    //打开数据块  假定数据存贮在 DB100  

      L     #P1

      LAR1


      L     DBW [AR1,P#0.0]

      T     DB110.DBW0    //假定数据存贮在 DB160  


      L     DBW [AR1,P#2.0]

      T     DB110.DBW2


      L     DBW [AR1,P#4.0]

      T     DB110.DBW4


      L     DBW [AR1,P#6.0]

      T     DB110.DBW6

..



      L     DBW [AR1,P#16.0]

      T     DB110.DBW16



**********************************************


上面的程序可以通过读取命令  READ为1 后执行


大概就是这个思路.以前做过一个类似功能程序





罢了,罢了.
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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