//Logo Image
作者:謝佩均(2005-03-01);推薦:徐業良(2005-03-01)

行動式遠端監控系統程式軟體架構

本文說明針對凱迪威公司楊梅新設的DVD-R廠房設計之「行動式遠端監控系統」的軟體架構,包括軟體的各項功能規劃、整體流程、程式設計、與測試結果。

1.     行動式遠端監控系統模式規劃

行動式遠端監控系統(如圖1)車體尺寸為46cm(L)×46cm(W)×94cm(H),車身總重12.5kg,平均行走速度為7cm/s,最小迴轉半徑50cm,旋轉角速度為/s,蓄電能力以一般速度行走可維持1.5小時,充電時間為2.5小時。

1. 行動式遠端監控系統外觀

針對凱迪威公司楊梅新設的DVD-R廠房,行動式遠端監控系統規劃有以下三種模式:

(1)   巡邏模式

此模式下行動式遠端監控系統沿著已規劃好的軌道來回巡邏,當行動式遠端監控系統移動到機台LCD控制面板旁邊時會停止前進20秒,且攝影機會轉到LCD面板方向並放大影像,方便遠端使用者觀看LCD面板上的數據,巡邏至軌道盡頭時自動轉向,開始下一回巡邏。

(2)   充電模式

行動式遠端監控系統偵測到自身電力不足時,會自動行走到充電站前方開始充電,在充電的同時攝影機還是繼續作動,左右巡視或輪流轉到機台LCD控制面板上觀看,持續監控廠房機台,直到電池充電完成,才繼續回到巡邏模式。如有需求,遠端使用者亦可命令行動式遠端監控系統停留在充電站,以方便現場人員工作。

(3)   手動模式

需要時遠端使用者能停止巡邏模式,點選想要觀察的機台,驅動行動式遠端監控系統前往指定機台觀看機台情況,或是觀看機台LCD控制面板上的數據。手動模式下遠端使用者可自行選擇恢復為巡邏模式或充電模式,或在停止輸入新指令5分鐘後,行動式遠端監控系統自動恢復為巡邏模式。

為避免影響現場人員工作,行動式遠端監控系統不規劃手動漫遊功能,但仍保留此擴充彈性。

2.     軟體程式規劃

2為本系統概要圖,遠端使用者從網際網路端(PC Client)下達指令後,經過PIC SERVER傳達到行控電腦處理,行控電腦即會依軌道辨識器、AGV行動器、超音波測距等元件回傳的訊息,控制馬達驅動器讓系統前進轉彎或停止、控制警示燈閃爍、控制RC SERVO馬達切換充電端子位置、或調整IP CAM攝影機觀看機台,讓遠端使用者能夠監控工廠中的情況。

2. 系統概要圖

而行控電腦是使用MICROCHIP公司的PIC18F452單晶片為核心,的工作時脈為20MHzEPROM32KbytesOn-Chip RAM1536bytes,使用CCS來編譯。為了要達到如圖2系統行控電腦與各元件的輸入∕輸出訊號,將行控電腦腳位規劃表如圖3所示,PIN_B1~PIN_B7為行控電腦接收軌道辨識器訊號的數位訊號輸入阜,PIN_A0~PIN_A5為行控電腦接收PIC SERVER訊號的數位訊號輸入阜,PIN_D7PIN_D1為控制警示燈閃爍的數位訊號輸出阜,PIN_D6PIN_C0PIN_D0PIN_C1為控制超音波測距的數位訊號輸入∕輸出阜,PIN_D5PIN_D4PIN_C5PIN_D3PIN_D2PIN_C2為控制馬達驅動器的數位訊號輸出阜,PIN_C7PIN_CRS232的數位訊號輸入∕輸出阜,PIN_C3為控制RC SERVO的數位訊號輸出阜,PIN_E0為偵測電壓AN5的類比訊號輸入阜。

3. 行控電腦腳位規劃圖

4為行動式遠端監控系統之系統程式流程圖。程式一開始關閉充電端子與初始化設定值後,會判斷遠端使用者是否有點選所要觀看之機台,如沒有收到指令系統會進入巡邏模式;反之系統會依遠端使用者的點選,進入手動模式驅動行動式遠端監控系統前往指定之機台。

在巡邏模式下,行動式遠端監控系統會控制馬達自動沿軌道來回巡邏。系統內定為正向行走,且隨時利用與行走方向相同的超音波感測器量測是否有障礙物擋在行走的軌道上,如果有,系統會以警示燈閃爍警示,並且讓行動式遠端監控系統停止前進。巡邏模式下,行動式遠端監控系統並隨時辨識軌道上的圖騰,依圖騰辨識程式回傳不同的訊息,達成轉換成反向行走、在每個機台旁停下來讓攝影機觀看環境、或是進入充電模式等不同動作。

而手動模式下,系統也自動依規劃的軌道來回巡邏,不同於巡邏模式的是,系統只會停留在遠端使用者點選的機台旁,觀看機台或是觀看機台LCD控制面版,不會在每台機台旁都停下來,且遠端使用者能夠隨意的控制攝影機,以縮短緊急處裡的時間。而如果遠端使用者5分鐘內都沒有在點選要觀看的機台,系統會自動回到巡邏模式。

4. 行動式遠端監控系統系統程式流程圖

5為主程式程式碼,系統程式需具備行控電腦對應PIC SERVER程式、AGV行動程式(go(),back())、圖騰辨識程式(picture())IP CAM控制程式(cam())、充電切換程式(case(255))、超音波測距與警示燈程式(us1(),us2(),us3())、與馬達控制程式(m_forward(), m_left(), m_right(), m_stop(), m_back(), m_b_left(), m_b_right())7個副程式,與PC Client使用者端的程式。主程式利用pic_PROTO_init()對行控電腦的數位輸入輸出腳位做定義,接著將系統初始定義為正向行走,以及使用door_close()副程式關閉充電端子,而第一個while回圈即是圖4流程圖中的A點,且利用PIN_A0的高低電位判定系統應執行手動模式或是巡邏模式,各副程式將在後文一一說明。

5. 系統主程式程式碼

(1)    超音波測距與警示燈程式

超音波測距與警示燈程式流程如圖6所示。超音波感應器的基本工作原理為,給予超音波測距模組一觸發訊號後發射超音波,當超音波發射到物體而反射回來時,超音波測距模組會輸出一迴響(echo)訊號,使用者可以由觸發訊號和迴響訊號間的時間差,判定物體與超音波發射模組的距離。當時間差小於設定值時,接著會啟動警示燈閃爍,系統並停止前進,等待障礙物離開或是當時間差大於設定值,系統會繼續動作。

6. 超音波測距與警示燈程式流程

7為超音波測距與警示燈程式碼,us()超音波測距副程式中,利用行控電腦的PIN_ D6當作觸發訊號,每次發射超音波訊號10msPIN_C0當作接收訊號,且在觸發的同時利用行控電腦內部的計時程式來計算這兩個訊號的間隔時間,其中程式的wait_for_low_to_high()wait_for_low()兩個小副程式,是讓行控電腦能夠判讀PIN_C0的脈波訊號,而當此時間計數差小於設定值時,執行警示燈閃爍副程式,即是啟動與關閉PIN_D7間隔250ms讓警示燈一閃一滅,並且系統等待警示燈閃爍完畢後才繼續執行後面的程式。

由程式計數推算,觸發訊號啟動發出聲波與接收到訊號的時間差為20msec(程式計數為15),此時實際量測障礙物距離系統約為15cm,而系統閃爍警示燈500ms。而利用示波器量得us1()us2()每次被執行的週期會因障礙物的距離有所不同,當沒有障礙物時約為11ms~15ms,而當有障礙物在軌道上時要將其加上系統等待警示燈閃爍的500ms延長為511ms~515ms

7. 超音波測距與警示燈程式

(2)    AGV行動程式與馬達控制程式

行動式遠端監控系統需要固定在軌道上來回巡邏,且能夠在不同機台旁停下來巡視或是觀看機台LCD控制面版,以及在充電區時進入充電模式,這些沿著軌道行走的動作,都必須倚賴軌道辨識器。軌道辨識器是利用7個光感應器佈置成一H型,光感應器的配置如圖8所示來達成軌道辨識的功能。此7個光感應器是系統一直供電,且每180~200ms對行控電腦做一次訊號更新,讓系統能隨時接收軌道上不同情況的訊號。

8. 7個光感應器佈置成的H型軌道辨識器

而擷取行動式遠端監控系統的前進與轉彎訊號,是利用軌道辨識器上方或下方的3個光感應開關。如圖9所示,利用3個光感應開關排成ㄇ字形的幾何形狀,來迅速反應軌道的位置,當僅有中央感應器感應到軌道時,表示應筆直前進;當左(右)端感應器與中央感應器都感應到軌道時,即表示系統要向左(右)轉。

9. 上方∕下方ㄇ字型行動器光感應開關配置圖

而控制行動式遠端監控系統的前進、轉彎是利用左右兩顆直流馬達驅動差速所達成,而此兩顆馬達分別獨立使用TECEL公司編號D200的馬達驅動器來控制。每個馬達驅動器的控制方法如表1所示,控制訊號總共有三個訊號源,分別是ENIN1IN2三個Port

1. 控制方式對應表(H表高電位,L表低電位,X表沒有給訊號)

EN_Port

IN1_Port

IN2_Port

動作

H

L

L

快速停止

H

L

H

正轉

H

H

L

反轉

H

H

H

快速停止

L

X

X

馬達可自由轉動

要達成上述之功能,系統的AGV行動程式流程如圖10,先由行走方向參數決定使用軌道辨識器上方或下方的ㄇ型光感應開關,如行走方向參數為正向,即利用圖8下方的3個ㄇ型光感應開關(B4, B6, B7)來辨識軌道位置,反之則是用圖8上方3個ㄇ型光感應開關(B1, B2, B4)。光感測器感測到軌道時為高電位,反之是低電位,此光感測器的高低電位即為數位輸入訊號,行控電腦讀入行動器的資料後由AGV行動程式判讀系統所要行走的動作,接著再送出資料到馬達控制程式,控制馬達驅動器讓系統前進、轉彎或停止。

10. AGV行動器與馬達流程圖

11AGV行動程式碼。在正向時(void go())依據光感應開關B4B6B7的高低電位訊號,判斷系統應直行(m_forward)、左轉(m_left)、或右轉(m_right);同理,在反向時(void back())依據光感應開關B1B2B4的高低電位訊號,判斷系統應直行(m_back)、左轉(m_b_left)、或右轉(m_b_right)

而正向前進時馬達控制程式如圖12所示,其中PIN_ C2D2D3即分別是對應一馬達驅動器的EN_PortIN1_PortIN2_Port,而PIN_ C5D4D5分別對應另一組馬達驅動器。例如左轉程式(m_left)中,當PIN_D2D3為低電位即右邊馬達停止,而PIN_D4為高電位、PIN_D5為低電位即是左邊的馬達向行走方向正轉,此兩個馬達一停一動的搭配,就能讓系統向左轉彎。

11. AGV行動程式

12. 正向前進時馬達控制程式

實際測試執行整個程式流程,AGV行動程式每180~200ms被執行一次,也就是光感應器每180~200ms對行控電腦做一次訊號更新,系統平均車速為7cm/s,因此軌道辨識的解析度約為1.4cm。以軌道辨識器的光感應器幾何配置推算,軌道最小的轉向角度約為,且軌道寬度要小於42mm

(3)    圖騰辨識程式

系統的軌道辨識器佈置成H型的7個光感應器,可以讀入軌道上不同幾何圖形的訊號後,利用行控電腦的數位輸入阜接收這長度為8個字元的二進位數據,將此訊號轉換成十進位後,會有256種不同的CASE代碼組合,讓系統針對特定的圖騰(也就是不同的CASE代碼)做相對應的動作,而沒有設定的CASE代碼就維持原本的行走。

13為圖騰辨識程式流程,當行控電腦由軌道辨識器讀入軌道資訊後,由軌道辨識程式判斷後續相對的作動,接著控制馬達驅動器、控制RC SERVO馬達或是控制IP CAM。在巡邏模式下,行控電腦隨時辨識軌道上的圖騰,依軌道辨識器回傳不同的訊息,達成轉換成行走方向(case 7, 193)、在每個機台旁停下來讓攝影機觀看環境(case 85, 143, 213, 211)、或是進入充電模式(case 255)等不同動作。

13. 圖騰判斷程式流程

2H軌道辨識器,感應的圖騰與輸出訊號對照表針對本系統所設計7個不同的圖騰,而不同的圖騰所對應不同CASE的流程如圖14。當系統走到軌道的兩端時,系統會依判定執行CASE 7CASE 193,讓系統更改行走的方向;CASE 85147213211則為本系統設計在機台旁的停止點,系統會配合IP CAM攝影機的動作巡視環境或觀看LCDCASE 255即是系統的充電區,當電池需要充電時,系統會執行充電程式。特別注意所設置圖騰大小尺寸應配合圖8軌道辨識器光感應器之相對位置。

2. H型圖騰辨識器與輸出訊號對照表:

行走狀態

感測器的狀態圖(黑色表示光感應器被遮斷)

8個字元組成之二進位資料器的狀態

CASE 代號 (Dec)

盡頭行走轉換(前行轉後行)

00000111

7

盡頭行走轉換(後行轉前行)

11000001

193

停止 I

01010101

85

停止 II

10010011

147

停止 III

11010101

213

停止 IV

11010011

211

充電區

11111111

255

14. 不同的圖騰所對應不同作動的流程圖

15為圖騰辨識程式碼,由軌道辨識器讀入資訊,當系統走到軌道的兩端盡頭時,系統會依判定執行CASE 7CASE 193,讓系統更改行走方向的定義,接著讓系統執行正向或反向的AGV行走程式,再控制馬達驅動器,達到系統能自動轉向的功能;系統設計在四台機台旁的停止圖騰分別對應是CASE 85147213211,因此當讀入這些資訊時,系統會配合相對位置執行不同的IP CAM控制程式,讓IP CAM攝影機巡視環境或觀看機台的LCD;而系統的充電區即是對應圖騰為CASE 255的資訊,此時系統會執行充電切換程式,讓系統充電,完成充電後再關閉充電端子,讓系統繼續作動。

15. 圖騰辨識程式

(4)    充電切換程式

本系統動力來源是電池,因此規劃本系統在電源不足時,能在充電區充足電力,讓系統持續作動。圖16為本系統充電流程圖,當系統的進入充電區,此時系統會利用行控電腦的類比輸入阜讀入電池電壓,當電壓在設定電壓之下,而且行走方向為正向時,系統即會停止前進,讓行控電腦驅動Futaba公司型號s3003RC SERVO馬達,將充電端子接觸到充電站進行充電,並開始計時,當充電150分鐘後,系統會將充電端子收回、離開充電站,讓系統繼續執行巡邏模式。圖17為充電端子與充電站接點充電示意圖,利用RC SERVO控制轉向角度,讓系統的充電端子能穩固且正確的接觸到充電站接點,進行充電。

16. 系統充流程

17. 充電端子與充電站接點充電示意圖

18為充電切換程式碼,當軌道控制器讀入資訊為CASE 255,系統即會執行power()充電切換程式,首先行控電腦會利用類比輸入AN5讀取電池電壓,當電池電壓不滿設定值(12.4V)且系統為正向行走時,系統會執行充電端子接觸充電站的副程式door_open(),也就是利用PIN_ C3傳送脈衝訊號控制RC_SERVO馬達帶動充電端子,讓充電端子接觸充電站以讓系統進行充電。接著行控電腦會計時150分鐘,當時間到時執行充電端子離開充電站的副程式door_close(),再次利用PIN_ C3送出脈衝訊號將充電端子收回系統本體,而程式也會重新開機,回歸到原點繼續運行。

18. 充電切換程式

(5)    IP CAM控制程式

本系統使用SONY公司編號SNC-RZ3NIP CAM,其Pan/Tilt角度為340/115度,Zoom放大倍率為25倍,可自動對焦。IP CAM控制程式流程如圖19,行控電腦可透過RS232傳送訊號至IP CAMRS232訊號輸入端子,讓IP CAM接收行控電腦的控制訊號訊號,進而控制IP CAM的動作。

19. IP CAM控制程式流程

IP CAM內部有16組記憶位置,可以記憶16組不同的轉動角度及縮放大小,而控制IP CAM設定或呼叫記憶位置的控制碼編寫方式如圖20所示,這些控制碼是由1416進位的字元組成,其中“Set”是設定IP CAM記憶使用者此時設定的旋轉角度及縮放大小,“Recall”是呼叫IP CAM的記憶。本系統直接利用SONY公司IP CAM內建的網頁,設定所要求的記憶位置,再利用行控電腦透過RS 232傳送控制碼,呼叫之前設定的記憶,如圖20當控制碼第10個字元為2時,可搭配第12個字元呼叫IP CAM的記憶位置,讓IP CAM旋轉角度及縮放大小到之前的設定。而第12個字元p值,是記憶編號(memory number),總共是0~F,也就是有16組可以記憶的編號。使用此組控制碼與軌道辨識器的搭配,即可控制IP CAM到達定點拍攝預先設定之畫面。

20. IP CAM內部記憶控制碼

21IP CAM控制程式碼,主要功能在達成透過RS232端子將上述14個字元構成的控制碼依序傳送給IP CAM,呼叫IP CAM中已記憶的旋轉角度及縮放大小。例如圖21(CAM 85)是對應監看機台I的停止位置(CASE 85),當系統正向行走時,傳送IP CAM控制碼呼叫IP CAM0組記憶位置;反向時則呼叫第1組位置,同理CASE 147211213則呼叫其他6組記憶位置。如此即可輕易的讓遠端使用者巡視環境或觀看機台的LCD

21. IP CAM控制程式

(6)    行控電腦對應PIC SERVER程式

在本系統中遠端使用者經由網際網路連線至PIC SERVER,與系統行控電腦溝通。遠端使用者點選機台後會透過網頁下達一組6個位元所組成的指令字串給PIC SERVERdata_from_client的共用記憶體,而利用這個指令字串編碼,即可以將控制訊號傳送給行控電腦。圖22PIC SERVER程式碼,其中data_from_client[1~5]5個共用記憶體位置分別是對應PIC SERVERA1A2A3B2B3輸出訊號,當字元為0(1)時,表輸出訊號為低電位(高電位),而data_from_client[0]這個記憶位置定義如果為A時,才會讀後面5個記憶位置,其功能有如一段字串的旗標,如此可以確保網路下達的命令是正確的。

22. PIC SERVER端程式

PIC SERVER5個二進位輸出訊號,最多可組成32組指令字串與行控電腦溝通,讓遠端使用者在人機介面上有更大的擴充性。圖23PIC SERVER輸出訊號與行控電腦接收訊號的溝通示意圖,PIC SERVER利用其之A1A2A3B2B3輸出訊號,而行控電腦利用PIN_A0PIN_A1PIN_A2PIN_A3PIN_A5接收訊號。如圖23中表所示,本系統目前使用了7組指令,分別是觀看機台I(A11010)、觀看機台II(A10101)、觀看機台III(A10100)、觀看機台IV(A10001)、選擇恢復為巡邏模式(A00000)、選擇強制充電模式(A11100)與停止系統(A10000)

23. PIC SERVER輸出訊號與行控電腦接收訊號的溝通示意圖

24即為行控電腦對應PIC SERVER程式中PIN_ A1PIN_ A2PIN_ A3PIN_ A5接收訊號的判斷程式碼(m_control()),當PIN_ A1PIN_ A3皆為高電位時,系統會依軌道自動行駛到機台I的位置,並停下來讓攝影機觀看機台I的情況或是機台I上的LCD面版,讓遠端使用者透過系統了解機台I的資訊,同理可以對應其他狀態。

24. 行控電腦對應PIC SERVER程式