
http://foundy.blog.163.com/blog/static/26338344201161031053576/
學(xué)習(xí)SIMULINK的人都會擺幾個S-Function概念的招式,認(rèn)為這才是入道者、專業(yè)SIMULINK人士的標(biāo)志,如果按照這個標(biāo)準(zhǔn),那么我覺得自己的SIMULINK仍然不夠?qū)I(yè),不過不要緊,在SIMULINK框架下實現(xiàn)多領(lǐng)域產(chǎn)品設(shè)計的體系,S-Function并不是致命的要素,在某個時期側(cè)重點不同,現(xiàn)在回來再總結(jié)下這個環(huán)節(jié)溫故而知新。
S-Function是SIMULINK提供的一種靈活的幾乎無所不能的機制,拯救那些專業(yè)人士表達(dá)自己聰明才干的夢想,這些人可以鄙視或者不肖一顧那些專業(yè)的SIMULINK工具箱,他們希望自己的思想得到自由流暢的表達(dá),呵呵,這些人中,多數(shù)大腦運轉(zhuǎn)的非??欤谴竽X的指令總是不那么容易傳達(dá)到四肢,這種極端的例子就是霍金先生(SORRY,調(diào)侃了)。但是普通的工程師真的有那么多別具一格、原創(chuàng)、甚至需要保密的勞動成果嗎?所以S-Function在我看來并不是一個SIMULINK初學(xué)者值得花時間的內(nèi)容。在SIMULINK的代碼自動化過程中,可能更現(xiàn)實的內(nèi)容是用SIMULINK的工具集成一些現(xiàn)成的算法,或者集成目標(biāo)底層驅(qū)動程序到SIMULINK實現(xiàn)系統(tǒng)各個系統(tǒng)的裝配,SIMULINK有這樣一類工具自動實現(xiàn)S-Funtion的功能,這樣實現(xiàn)的S-Function,你也無須了解任何關(guān)于TLC(目標(biāo)語言編譯器)的知識,這對減輕SIMULINK學(xué)習(xí)的負(fù)擔(dān)是非常重要的。C代碼、C++代碼是最為優(yōu)秀的程序語言,也有實在太多的通用的勞動成果可以免費得到,所以我們應(yīng)該強調(diào)的代碼重用,而不是用S-function去創(chuàng)新、創(chuàng)新、再創(chuàng)新........哇,簡直是天才,其實更多的時候,我們用剪切與復(fù)制的方法來實現(xiàn)想法也發(fā)現(xiàn)憋得慌。
現(xiàn)在來談?wù)凷-Function的幾個基礎(chǔ)認(rèn)識。用S-Function來實現(xiàn)自己的想法可以有很多種可能,一是用MATLAB的m腳本語言,這種方法就適合哪種一天一個閃光思想的大家,這種方法比較簡單,m腳本也容易看明白思路的骨架。SIMULINK里可以用兩種級別的m腳本實現(xiàn)S-Functon,分別叫做A Level-1 M-file S-function,A Level-2 M-file S-function,在實現(xiàn)M-fileS-function的過程中,SIMULINK是通過一些S-Functon API 和 M-file相互作用的,A Level-2M-file S-function比A Level-1 M-fileS-function有更多的API支持,當(dāng)然還有其他方面的支持差異,采納A Level-1 M-fileS-function的應(yīng)用者沒如果沒有代碼生成的要求,可以這樣做。然而用A Level-2 M-fileS-function的應(yīng)用者如果要做代碼生成,那么就得搞TLC了。對于這樣的操作,A Level-2 M-fileS-function相對容易實現(xiàn),但是TLC有點麻煩。還有一種高級點的S-Functon是A C MEXS-function,這種S-function執(zhí)行速度比A Level-2 M-file S-function要快,這種 C MEXS-function就是比較專業(yè)的人士表演的舞臺了,比如搞復(fù)雜的動態(tài)系統(tǒng)算法,所以以上的方法我認(rèn)為都不適合初學(xué)者。下面談比較容易而高效的兩種辦法,這兩種辦法主導(dǎo)思想都是代碼重用的技術(shù),就是把曾經(jīng)可用,測試好的C代碼集成到SIMULINK里來,使用這既不需要知道S-Function深入知識,也不需要TLC的只是。
這兩個方法就是,一是S-Function Builder,二是Legacy CodeTool,這兩個工具使用起來都相對簡單,給初學(xué)的一個建議就是看看SIMULINK下的最簡單的解釋樣例,比如你可以在MATLAB幫助搜索欄輸入關(guān)鍵詞ExampleUsing S-Functions to Incorporate Legacy CCode來學(xué)習(xí)這個簡單樣例。就把
S-Function Builder,Legacy CodeTool工具基本搞清楚。只有一點值得提醒的是,F(xiàn)unction Builder,Legacy CodeTool兩類工具,各自支持的模塊特征也不一樣,比如Legacy CodeTool打包的C代碼只是表達(dá)系統(tǒng)靜態(tài)特性的代碼(和動態(tài)系統(tǒng)相比),但對一般的代碼重用支持基本是沒問題。更多的各類S-Function的細(xì)節(jié)特點可以查閱SIMULINK用戶指南。
愛華網(wǎng)



