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