数据块赋值问题

s7 300里想把变量MD10的值传送到DB10里,MD10的值随时间是变化的,比如在时间1S内把10个MD10值传送给DB10该怎么实现?

问题补充:
MD10一直是变化的,我的意思是将不同时刻的MD10的值传送到DB10

最佳答案

用填表指令,库文件中有FC84,“add-to-table”,这个块库要和FC89“FIFO”先进先出结合起来用,不然填表一次就满了,你第二次就不能再将数据填入表里了。
你可以尝试自己写一个,思路如下:
1,建立数组,0-9,Dint格式;
2,配置定时中断100ms周期;
3,在定时中断块里建立指针加1(双字加32),满10复位指针;
4,将MD10传送到DBD[指针 ]
如果你不会指针,可以在定时中断里这样处理:
1,用一个16位字移位指令,每周期移动一位,移动到第9位时复位到0;
2,写10段,
A M0.0 
 MOVE MD10  DBD0
A M0.1
MOVE  MD10  DBD4

愚公移山一样多写几段

提问者对于答案的评价:
大家的想法对我都挺有帮助的,我是调用OB35来实现的,循环存储20个数据,OB35里程序:
     OPN   DB    10
      L     MD    14
      T     DBD [MD 104]
      L     MD   150
      L     DW#16#1
      +D    
      T     MD   150
      L     MD   104
      L     P#4.0
      +D    
      T     MD   104
      L     MD   150
      L     DW#16#15
      <I    
      JC    m001
      L     DW#16#0
      T     MD   150
      L     DW#16#0
      T     MD   104
m001: NOP   0
MD104是地址指针,MD150用来计数,比较复杂,但也实现了目标

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月24日 上午3:10
下一篇 2017年8月24日 上午3:10

相关推荐