如何用數(shù)據(jù)塊中的值做指針
劉玉蓉
發(fā)布于2014-10-21 17:18
135
0
標簽:
準備做60次取樣值的平均值,現(xiàn)在有一個數(shù)據(jù)塊DB160, 從DBW0到DBW118是數(shù)組放60個歷史值,DBD120放總和,DBW124放均值,DBX126放0-59的循環(huán)數(shù)(由60取模而來),每當塊調用一次 讀取DBX126,找出對應的歷史值由總數(shù)減去歷史值,然后加上新從外部取樣讀取的值成為新總數(shù)放入原總數(shù)位置,新讀取值放入原歷史值位置成為歷史值,循環(huán)值加一. 我是次用語句表,小白了 ,看了半天S7-400尋址寫出來的還全是紅字(特別是怎么用循環(huán)值找歷史值),請幫忙寫一個范例,好是有注釋。
佳答案
為了合理并編程方便, 修改一下:
DBD120放總和;
DBD124放平均數(shù)(這樣編程方便);
DBW128放循環(huán)參數(shù)。
1、在FC1中編制下述程序,對有關單元進行初始化:
OPN DB160
L L#0//32位整數(shù)常數(shù)
T DBD120//初始累加和單元
T DBD124//初始累加和單元
L 0
T DBW128//初始平均單元
2、 在FC2中編制 :
OPN DB160//打開數(shù)據(jù)塊
L P#0.0 //初始指針
LAR1
L 60 // 60字的循環(huán)計數(shù)為初值
M001: T DBW128 //計數(shù)值 送入DW126
L DBW [AR1,P#0.0] //按指針指示的地址讀數(shù)據(jù)
ITD //整數(shù)(16 位)轉成雙整數(shù)(32 位)
L DBD120
+D //作為雙整數(shù)(32 位),將累加器1 和累加器2 的內容相加
T DBD120//l進行累加
+AR1 P#2.0 //讀指針指向下一數(shù)據(jù)地址
L DBW128 //取循環(huán)計數(shù)值
LOOP M001 //循環(huán)計數(shù)值如為0則結束循環(huán);如不為0減1后則轉向標號為M001的語句,繼續(xù)循環(huán)。
L DBD120
L L#60// 32位常數(shù)60
/D // 求平均數(shù)
T DBD124//存平均數(shù)
3、根據(jù)實際要求來安排FC1、FC2的調用順序。注意FC1一般只調用一次。