s7300里想把变量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段,
AM0.0
MOVEMD10DBD0
AM0.1
MOVEMD10DBD4
…
愚公移山一样多写几段
提问者对于答案的评价:
大家的想法对我都挺有帮助的,我是调用OB35来实现的,循环存储20个数据,OB35里程序:
OPNDB10
LMD14
TDBD[MD104]
LMD150
LDW#16#1
+D
TMD150
LMD104
LP#4.0
+D
TMD104
LMD150
LDW#16#15
<I
JCm001
LDW#16#0
TMD150
LDW#16#0
TMD104
m001:NOP0
MD104是地址指针,MD150用来计数,比较复杂,但也实现了目标