博途的間接尋址和s7-300/400大不一樣。博途中的間接尋址主要用peek/poke指令,peek/poke指令不能用于優(yōu)化的數(shù)據(jù)塊。優(yōu)化數(shù)據(jù)塊可以用數(shù)組類(lèi)尋址。這次的控制任務(wù)是模擬類(lèi)的批量處理,s7-300/400模擬量批量處理很繁瑣。
控制任務(wù)
把數(shù)量不定的模擬量轉(zhuǎn)換成工程量,然后保存到指定的數(shù)據(jù)塊中。這里我們?yōu)榱藴y(cè)試,不讀取piw中的模擬值,而用mw代替。
象這樣的控制任務(wù),我們一般用scl來(lái)寫(xiě)會(huì)比較方便。請(qǐng)看下面的程序。
控制程序



程序簡(jiǎn)單說(shuō)明一下:
lower_bound 讀取 resultarray的下限
upper_bound讀取resultarray的上限
lenofemtpyarray是數(shù)組除去offsetarray偏移量后還剩的空余長(zhǎng)度,如果這個(gè)長(zhǎng)度小于模擬量的數(shù)量,則退出。另外如果arraylowerbound小于下限,也退出。
第19行,scl 中的循環(huán)要注意,開(kāi)始和結(jié)尾都是閉區(qū)間,和c語(yǔ)言等高級(jí)語(yǔ)言不一致。
第20行,peek_word 就是讀取m區(qū)的模擬量。具體用法可以參看手冊(cè)。
第25行,對(duì)數(shù)組的讀寫(xiě),也是間接尋址,在scl中沒(méi)有這種說(shuō)法了。間接尋址等概念都是匯編下的,高級(jí)語(yǔ)言沒(méi)有這種叫法。

最后,模擬量轉(zhuǎn)化為工程量后為100.0 和 54.0,存入數(shù)據(jù)塊。










