CSPM 開放式軟體(CSPM OSS)
CSPM開放式軟體系統(CSPM Open Source Software)的目的是讓二次開發用戶可以從複雜的儀器功能編程中解脫出來,將精力集中在具體的功能擴展上,大幅度降低開發成本、縮短開發週期。
CSPM掃描探針顯微鏡系統(SPM)的架構如下圖:
SPM 開放式軟體系統(CSPM OSS)被劃分為兩個部分:SPM Console和SPM Kernel。
SPM Console軟體負責向用戶提供一個介面,讓用戶輸入各種指令,並將各種儀器的狀態和資訊顯示給用戶。例如,SPM Console軟體上有一個鐳射電源按鈕,用戶可以用滑鼠按下該按鈕,指示儀器打開鐳射電源;SPM Console軟體也可以將顯微鏡所採集到的圖像顯示在電腦螢幕上。
SPM Kernel軟體在用戶介面軟體(SPM Console)和掃描探針顯微鏡(SPM)系統硬體之間架起一道橋樑,SPM Console軟體將用戶的指令發送給SPM Kernel軟體,SPM Kernel軟體對收到的軟體進行解釋,並對SPM硬體進行相應操作,實現用戶指令。同時,SPM Kernel對SPM硬體系統的狀態進行採集和調度,以保證硬體正常運作,並向SPM Console報告各種資訊,讓用戶可以即時瞭解儀器狀態並觀察實驗結果。
系統軟體劃分為兩個層次,可以將複雜的、高要求的、難以理解的硬體流程封裝在SPM Kernel軟體中,用戶不需要全面瞭解系統硬體的技術資訊,就可以快速高效地編寫滿足自己需要的軟體。
一般情況下,SPM Console軟體的源代碼是向用戶開放的,用戶可以對源代碼進行修改和補充,實現新的功能。
SPM Console採用Microsoft Visual C#語言編寫。選擇C#的原因是:C#是一門設計簡單、面向物件、類型安全、靈活相容(.Net框架的支援)的新型面向元件編程語言。其語法風格源自C/C++家族,並融合了Visual Basic的高效和C/C++的靈活性、強大底層控制能力,是Microsoft.Net平臺的主流語言。
SPM Console OSS 1.0軟體是一個開放源代碼的軟體,為用戶提供了一個全面完整的範例。用戶可以對該軟體進行修改和擴充,以滿足自己的特殊要求。
下面舉一個例子,以說明用戶在CSPM OSS上進行二次開發的簡易性。
舉例:開發納米加工程式
本例的目的是對SPM Console進行修改,以滿足在樣品上進行納米加工,刻畫出一個“Z”型的字母來。
其工作原理是,將探針和樣品進行逼近,然後,關閉探針樣品回饋機制,將探針壓向樣品,然後讓探針在樣品上按字母Z的路徑移動,達到在樣品上加工的目的。
探針在樣品上的刻畫路徑如下圖所示:
整個過程為:先將探針移動到點1,沿著線段1-2向點2移動,到達點2後,沿著線段2-3向點3移動,到達點3後,沿線段3-4移動到點4。在移動過程中,探針實際上是在沿線的若干節點上(如圖中黑點所示)停頓一段時間。
欲實現上述功能,使用CSPM OSS平臺,您只需寫20行代碼就可以實現了:
float x0 = -(float)numericScope.Value/2; // 筆劃一起點的X座標
float y0 = -(float)numericScope.Value/2; // 筆劃一起點的Y座標
float x1 = +(float)numericScope.Value/2; // 筆劃三終點的X座標
float y1 = +(float)numericScope.Value/2; // 筆劃二終點的Y座標
// 計算每走一步需要延遲多少毫秒
int delayMS = (int)numericPeriod.Value/(STEP*3);
float volt = (float)numericVolt.Value; // 驅動探針往樣品上壓的電壓
// 將探針移動到'Z'的起點
Machine.SetX0Y0(x0, y0);
// 關閉回饋
Machine.SetDO(DO_FEEDBACK, 0);
// 輸出電壓,將探針往樣品上壓(DA通道10的作用是在掃描器陶瓷管Z方向上疊加一個電壓)
Machine.SetDAVolt(10, volt);
// 移動探針,刻畫第一個筆劃,從點1移動到點2
for (int i=0; i<STEP; i++)
{
Machine.SetX0Y0(x0+(x1-x0)*i/STEP, y0); // 走一步
Thread.Sleep(delayMS); // 延遲
}
// 移動探針,刻畫第二個筆劃,從點2移動到點3
for (int i=0; i<STEP; i++)
{
Machine.SetX0Y0(x1-(x1-x0)*i/STEP, y0+(y1-y0)*i/STEP);
Thread.Sleep(delayMS);
}
// 移動探針,刻畫第三個筆劃,從點3移動到點4
for (int i=0; i<STEP; i++) {
Machine.SetX0Y0(x0+(x1-x0)*i/STEP, y1);
Thread.Sleep(delayMS);
}
// 將DA通道的輸出電壓恢復為0
Machine.SetDAVolt(10, 0);
// 恢復回饋
Machine.SetDO(DO_FEEDBACK, 1);
具備超媒體用戶介面的納米操縱工具
中國科學院瀋陽自動化研究所的研究人員利用CSPM OSS和本原的掃描探針顯微鏡(SPM)系統,結合Phantom操縱杆,構建了一個納米操縱平臺。利用該平臺,用戶可以通過操縱杆,控制探針對樣品進行納米操縱,在操縱過程中,用戶還可以通過操縱杆感知樣品對探針產生的作用力大小和方向,在操縱過程中增加了觸覺感知能力。在CSPM OSS之上,開發人員不需要瞭解SPM的硬體控制細節,甚至不需要瞭解軟體是如何對SPM進行控制的,便可以快速地在本原SPM的基礎上增加硬體和軟體,構建出具備超媒體用戶介面的納米操縱平臺。