• 沒有找到結果。

資料通訊設備Î遠端儀器 DTE (data terminal equipment) 母接頭

N/A
N/A
Protected

Academic year: 2022

Share "資料通訊設備Î遠端儀器 DTE (data terminal equipment) 母接頭"

Copied!
48
0
0

加載中.... (立即查看全文)

全文

(1)

CH 12 CH 12 CH 12

RS232

RS232 介面程式控制介面程式控制

(2)

音樂用

高級儀器控制用 一般儀器控制用 工廠儀器控制用

印表機用 網路用

(3)

RS232C

• 電腦中最常用的介面之一。

• RS-232 : Recommend Standard number 232.

• C 表示最新的版本.

• 大多電腦都是符合RS-232C一部份標準.

• 全功能的 RS-232C 規定使用25-pin “D” 接頭,使 用其中的 22 pins.

• 對電腦通訊而言,許多都是不必要的,因此節省 起見,大多數PC只使用一個9pin的公接頭。

• 事實上,只要使用其中3根pin便可達到全雙工 (full duplex)通訊的目的,一根Send,一根 receive,一根ground。

Full duplex:送資料與接收資料同時進行,亦即是 雙向的溝通bi-directional

(4)

DCE and DTE接頭

• RS232定義兩種接頭形式,接腳訊號定義不同 DCE (data communication Equipment)

資料通訊設備Î遠端儀器 DTE (data terminal equipment) 母接頭

資料終端設備Î電腦 公接頭

• DTE與DCE可以直接一對一連接線

• 但同類間連接需要用 Null modem Cable,交換

send與 receive腳位

(5)

http://www.taltech.com/TALtech_web/resources/intro-sc.html#232c

(6)

http://www.taltech.com/TALtech_web/resources/intro-sc.html#232c CD, DSR, DTR, RTS, CTS, RI都是硬體偵測傳輸狀態所需Î很少用 目前大多數只要利用RD與TD傳輸特定字元溝通,即可判斷

傳輸狀況,因此只要用RD, TD, ground 3根線即可

(7)
(8)

資料如何傳輸— start bit

• RS232是屬於序列式的(serial)傳輸資 料,亦即資料是一個 bit一個bit傳的

• 平時, TD與RD是在高電位,一端的TD 是接到另端的 RD,當有資料要傳時,一 端的 TD會先被拉低電位,而另一端的 RD接收到低電位開始接收資料,這個動 作叫做送 Start bit(起始位元)

Common ground

TD RD

(9)

接收資料 -data bits

• Start bit開始之後,兩邊的設備便準備接收接下來的 資料

• 為了溝通起見,兩邊必須有一樣的傳輸速度 (baud rate),並了解接下來有多少data bits要送過來

• Baud rate:紀念法國人Jean Maurice Emile Baudot, 發明用 5bit代碼表示英文字母。表示每秒多少bit的傳 輸動作

• 確定好傳輸速度,接下來要傳多少 bit,也要規定好,

一般是傳 8或7 bit,以8 bit最常用。LSB最小位元先 送。

Start bit

1 00 1 1 1 0 0

(10)

資料檢查 Parity bit

• 序列資料是否傳得正確 ?Î奇偶檢查

• Data bit送完,再附送一個parity bit,讓接收端檢查 資料正確性

• 通常有以下幾種 :

none:不送parity bitÎ最常用

Odd:當data bit有偶數個1時=>送1補成奇數個 Even :當data bit有奇數個1時=>送1補成偶數個

• Mark:永遠送1做parity bit

• Space :永遠送0做parity bit

1 00 1 1 1 0 0 1

Parity bit: none, odd or even?

(11)

Stop Bit

• 停止位元 : 將電位拉高,宣告資料已經傳 輸完畢。

• 因此,最常用的傳輸格式常記為 8-N-1

8: 8 data bit

N: No parity bit

1: 1 start/stop bit(有些設備較慢時用 2bits)

1 00 1 1 1 0 0 1

Stop bit

(12)

Qestion

• 以 8-N-1, 9600 baud傳送資料時,每 秒最多可送多少個 byte?

• 以 7-E-1送則如每秒多少byte?

960byte/s

(13)

防止資料遺失

• 使用 Handshaking(握手)Î可不用

很多型式,其一利用某一根線的高低電位 (如DTR),當一 端準備收資料時先拉高某一線電位,另一端接收到訊息後 才開始送資料。另一種則利用 TD RD線,傳送特殊的byte 當成準備接收資料的代號。

• 使用緩衝區 (buffer)

• 使用中斷 (interrupt)或詢問(polling)

中斷 :有事件發生時執行 Polling:以軟體不斷檢查資料

• 使用 Acknowledgement(確認)

收到資料時,送回一個特殊 byte確認資料收到。

• 錯誤檢查 (error checking)

送 checksum byte給接收端檢查資料正確性 有問題,通知重送資料

通常,我們有不必管這些細節動作 這些都是RS232本身的功能

我們要做的,只是定好通訊方式,開啟port,送資料,接收資料而已

(14)

誰來負責傳輸資料 --UART (Universal Asynchronous

Receiver/Transmitter)

• 通用非同步接收傳送器

• 細部的資料傳輸的工作由 UART電路元 件 (如PC中的16550UART晶片)自動去完 成

• 我們的程式只要負責把通訊規格設好 (如

8-N-1),送收資料即可。

(15)

另一個常用的序列介面 RS485

• RS232連線長度只能50~100呎(17~33m),一個 Comm Port只能接一台

• 為了因應工廠控制所需,因此1993年訂定

RS485,抗雜訊能力提高,距離可達4000呎 Î1333米!

同時可控制32個設備

• 其優點為

1.比RS232便宜,只使用一個+5V電源,

比RS232用的±5V方便

2.網路功能:可長距離、多儀器連結,使用高阻抗 的接收器,甚可接達到256台

3.長距離:可達1333m

4.快速:可達10Mbits/s, RS232只能達

~20Kbits/s

(16)

為何 RS485能長距離通訊?

• RS232採用single ended

(unbalanced)

而 RS485使用differential ended

(balanced)

• RS232

• RS485

長距離時,兩個ground可能電位會有不同Î電流Î影響訊號接收

兩導線是同大小,方向相反電流,所產生電磁感應雜訊可相消除 而且只看電壓差,不受接地影響

T/RAT/RB SG

(17)

RS485接線法 基本上只有三條線 TRA TRB SG

可只使用2線 須加終端電阻

每台機器虛設不同的 位址

終端電阻加在電腦端及 最遠一台機器的一端 需搭配導線的阻抗值 (必須大於75ohm)

一般而言AWG24線使用 100~150ohm即可

(18)

http://www.hw.cz/english/docs/rs485/rs485.html 有些電阻 可能內建 在控制器 AB線不要 亂接一起

(19)

RS232ÎRS485

• 由於 RS232還是PC現有的介面,因此常

使用 RS232到RS485的轉接器,以便利

用 RS232控制RS485儀器

(20)

使用 VB的comm控制項

• VB提供一個Microsoft Comm 6.0 control可以作為RS232控制

• 注意 : 最好使用9pin或25pin全部連線都

使用的連接線,若只用 3線,則有些硬體

通訊規格需要更動

(21)
(22)
(23)
(24)

設定好所需的通訊規格

(25)

通常不用更動(除非有問題)

(26)

Comm控制元件的細節資料

• 按住 toolbox中的comm 再按F1則可出現 help說明

TRY IT!

(27)

開發儀器控制程式步驟

• 閱讀使用手冊

• 了解介面:了解儀器介面

• 建立測試專案:寫一個測試專案程式,專門測試 通訊功能,順便建立簡易的程式庫

• 建立程式庫:程式庫最好能獨立形成一個模組,

而不需要配合form使用

• 建立使用者介面:設計表單配合該模組使用,以 形成方便的使用者介面,該表單與模組最好能 獨立運作,而不依賴外部的變數或物件

• 將使用者介面加入主專案程式:將設計好的表單 及模組加入主專案程式中,便可直接使用

(28)

RS232控制基本動作

• 設定通訊規格

• 開啟 RS232 port

• 送資料出去

• 接收資料回來

• 關閉 RS232 port

(29)

設定通訊規格

--根據手冊Î與儀器設定要同

(30)

開啟 RS232 port

• Comm1.PortOpen=true

• 使用 error checkÎOn error goto

避免錯誤時 (例如沒接線時)程式一直亂try

• 可用 if comm1.portOpen=false then comm1.portOpen=true

endif

確保沒有重新開啟已被開啟的 Port

例如 mouse常使用comm1 port

(31)

送指令出去

• Comm1.output=“PMT-ON”

• 送何指令會有何動作要參考 使用手冊

早期有時指令是ASC code例如 chr(58)+chr(17)+chr(11)

較新的儀器是用看得懂得文字如

“PMT-ON” “800V” “GOTO 500nm”

“READ POSITION”

• 有時還會有加一些檢查碼要跟著指令送

• 基本上手冊應該有清楚的說明

指令在此

(32)

讀資料回來

• 依據儀器設計不同,當一個指令送出去之後,有可能有資料 回傳,也有可能沒有資料回傳。若有資料,則可以讀取回 來。若沒資料回傳而硬讀資料,可能會讀不到資料而卡住數 秒鐘或更久。Î check手冊

• 讀資料 Î s=comm1.Input

• 檢查有無資料 a=comm1.InBufferCount

• 確定資料都讀到

有時電腦速度太快,直接讀 comm1.input會只讀回部份,因 此,一般儀器在送資料時,會送一些可以作為傳輸結束的字 元,例如 CHR(13)甚或”OK”+Chr(13)等

Î必須依照資料傳回規格檢查,以免亂掉

• 例如 :ACTON Spectra pro500 光譜儀下 ”GOTO

300nm”,光譜儀便開始移動光柵,經過數十秒鐘後,到達 定位,才回傳” OK””

一般設計每一個指令都會 傳回資料,例如重覆一下 所送的命令等或送個”OK”等

(33)

Function TTM_resp(ByVal addr) Dim tim, b

reset_timer tim

Dob = b + comm.Input

Loop Until (InStr(b, Chr(3)) <> 0) Or (timer_read(tim) > 3) If b = "" Then

TTM_buffer = "Timeout"

TTM_resp = "Timeout"

Exit Function ElseTTM_buffer = b

TTM_resp = b End If

End Function

例 TTM114控溫器

每次送指令都會回傳資料 因此寫個副程式來抓資料

Reset_Timer var與Timer_read(var)

是hjssub中的副程式,一個是將計時器歸零 一個是傳回歸零後計時器走的時間

Var是可變變數

TTM_bufer是公用變數暫存讀回資料 這是TTM114的特殊字元表示資料傳完了

(34)

關閉 Comm port

• 程式結束時,記得關閉 comm port 以免再開程式時,卡住

• 一般在 VB中,當按停止時,會自動關閉 comm port

• Comm1.PortOpen=false

(35)

開發儀器控制程式步驟

• 閱讀使用手冊

• 了解介面:了解儀器介面

• 建立測試專案:寫一個測試專案程式,專門測試 通訊功能,順便建立簡易的程式庫

• 建立程式庫:程式庫最好能獨立形成一個模組,

而不需要配合form使用

• 建立使用者介面:設計表單配合該模組使用,以 形成方便的使用者介面,該表單與模組最好能 獨立運作,而不依賴外部的變數或物件

• 將使用者介面加入主專案程式:將設計好的表單 及模組加入主專案程式中,便可直接使用

(36)

實例

久德電子 TOHO114

• 控溫器的控制

www.jetec.com.tw

買的時候要指名有無通訊介面 光電半導體製程常用到

溫度控制器

(37)

RS232ÎRS485

• 由於 RS232還是PC現有的介面,因此常

使用 RS232到RS485的轉接器,以便利

用 RS232控制RS485儀器

(38)
(39)

開發儀器控制程式步驟

• 閱讀使用手冊(intruction manual and comm.

manual)

• 了解介面:了解儀器介面 ÎRS485

• 建立測試專案:寫一個測試專案程式,專門測試 通訊功能,順便建立簡易的程式庫

• 建立程式庫:程式庫最好能獨立形成一個模組,

而不需要配合form使用

• 建立使用者介面:設計表單配合該模組使用,以 形成方便的使用者介面,該表單與模組最好能 獨立運作,而不依賴外部的變數或物件

• 將使用者介面加入主專案程式:將設計好的表單 及模組加入主專案程式中,便可直接使用

(40)

了解介面

送指令 要求回傳PV1(溫度)

接收資料格式 收玩資料再以 字串處理抓出 777度

(41)

建立測試專案來開發程式庫

• 為了方便使用,將程式包裝成自己習慣的方式Î程式 庫

• 一般習慣

init_TTM(comm1)

sub TTM_comman(cmd) function TTM_resp()

function TTM_Temp_read () sub TTM_set_temp (T)

sub TTM_set_p sub TTM_set_i sub TTM_set_d

function TTM_read_p function TTM_read_i function TTM_read_d

… close_TTM

直接將comm1物件傳進來

好處是程式庫可以同時控制好幾台機器 壞處是速度會變慢一點

(42)

測試專案程式

(43)

建立程式庫

(44)

建立使用者介面

在介面上輸入溫度設定,則程式便把指令傳給儀器

濺好使用者介面,以後該介面便可以直接加到大的程式去使用!

Me.tag是一個沒用到的屬性 我用來放unit address

因為有好幾台控溫器

Hjssub副程式專門用來叫使用者 輸入一定範圍資料用

最大,最小,預設值

更新資料用

(45)

介面建立好後,並適當將文字輸入框命名 以後別的模咀要設定TTM114溫度,不需呼叫 TTM_set_temp 指令

而只要使用TTM114!setpoint=“100”即可 簡化TTM使用方式

進一步地

若想把你的介面 拿去賣錢

可以把程式包裝成 一個控制項

如何寫控制項 參考MSDN說明

如何建立屬性、事件 並設計成控制項等

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconcreatingactivexcontrol.asp

寫控制項的demo說明在此

(46)

將使用者介面加入主專案程式

• 把一系列的使用者介面加進到專案程式可形成一個大程式

• 寫程式的時候除非有錯誤否則盡量不要改到使用者介面程式,因

為可能不只一個專案程式用到該介面

(47)

成為整合程式設計快手

• 建立自己的程式庫及 使用者介面

• 需要時直接組合起來

• 稍加修改Î OK!

• 經驗累積 !!

(48)

期末專案

• 下次交要寫的期末程式

• 直接討論程式如何設計

• 若沒有Î直接指定

• Topics

1.介紹如何設計控制元件 2.網頁字典(新聞)程式

3.參考文獻資料庫整理程式

4.利用印表機或game port做控制示範 5.RS232Î電源供應器ÎAAO(多孔矽) 6.RS232->RS485Î控溫器

Î奈米製程成長光電材料

7.如何用電腦設計便宜的optical chopper 8.光導量測系統

9.其他IdeaÎ討論

參考文獻

相關文件

ƒ 提供 Connection Oriented (連結導向) 並達成End-to- End (兩端通訊端點對端點) Process-to-Process (程序對 程序)、Reliable Data Delivery

™ 不過, 如果 DHCP 用戶端不接受 DHCP 伺服器 所提供的參數, 就會廣播一個 DHCP Decline (拒絕) 封包, 告知伺服器不接受所建議的 IP位 址 (或租用期限…等)。然後回到第一階段, 再度

並存入百事可樂企業內部網站的 伺服 並存入百事可樂企業內部網站的 IBM RS/6000 伺服 器資料庫。然後,主管與分析師可以使用上型電腦

 一般我們如過是透過分享器或集線器來連接電腦 的話,只需要壓制平行線即可(平行線:兩端接 頭皆為EIA/TIA 568B),

 一般我們如過是透過分享器或集線器來連接電腦 的話,只需要壓制平行線即可(平行線:兩端接 頭皆為 EIA/TIA 568B ), 如果是接機器對機器 的話,需要製作跳線( Crossover :一端為

為了讓行動客戶端可以順利地取得所需的資料項,index bucket 必須能夠引 導行動客戶端一步一步的拿到所需的資料項,因此在廣播結構中的

Wi-Fi 定位即利用無線網路來傳遞信號,根據各種網路參數和算法可以找出使用

傳統的 RF front-end 常定義在高頻無線通訊的接收端電路,例如類比 式 AM/FM 通訊、微波通訊等。射頻(Radio frequency,