S232/S272與IS400/IS800及IS400S/IS800S串口分配器都是支持一個主串口及三/七個從串口的應用.
傳統上一個RS232界面控制臺只能與一個RS232設備連接.如果我們需要讓RS232控制臺可以同時與兩個以上的RS232設備連接就要符合兩個基本條件.
首先在硬件上,RS232是點對點連接方式.因此我們無法將多臺RS232設備并接在一起.我們必須采用RS232串口分配器/共享器來獨立連接到控制臺與各個設備在不同的連接頭上.
其次軟件上,要擁有一種對話格式,以保證不同的RS232設備不會在同一時間同時傳送數據.所以我們控制臺的數據會同時傳送給各個RS232設備,而只有被指定可以傳送數據的RS232設備,才可以傳送資料,以保證沒有沖突發生.在符合上述條件的情況下,我們采用S232串口分配器/共享器就可以滿足工作需求.但我們發現有下列可能限制及問題存在.
首先是如果有某個RS232設備并不遵守對話機制而傳送數據,則S232在面對兩個以上的RS232設備傳送數據情況下,將無法把任何RS232設備的數據傳送到控制臺.于是整個控制系統將無法正常工作.
其次是應用環境的考慮.正常情況下,我們的RS232設備會等待控制臺的指示,來讀取及傳送數據.于是所有RS232設備都在等待狀態,隨時準備接收控制臺的命令來傳送數據.如果有一種應用環境是平常RS232設備的資料(例如壓力計的目前壓力值)隨時等待控制臺來讀取.但有一種緊急情況(例如壓力計偵測到壓力值超出警戒值)必須主動通知控制臺,而不能等控制臺依據排定流程來讀取.則S232串口分配器/共享器將無法滿足此種應用環境.這個時候IS400或IS400S智能型串口分配器/共享器才能滿足.
在正常情況下IS400的工作與S232一樣,控制臺發出的命令同時傳送給全部RS232設備.被指定的RS232設備就回傳數據給控制臺.但是當有兩個以上的RS232設備在同時傳送數據時,IS400會接收數據(如果有RS232設備已經在進行傳送數據過程,而你是新加入傳送數據者),且進行儲存.等到目前的RS232設備(原本正在進行傳送數據者)數據傳送完畢(我們發現在20ms期間內都沒數據再被傳送的情況),我們會把儲存的數據再傳送給控制臺.于是控制臺可以正確的處理兩個RS232設備的數據.當然控制臺與各RS232設備間必須有適當的對話格式才可以達成工作.
由以上原則我們就可以知道何時使用經濟型S232/S272串口分配器/共享器,何時須要使用智能型IS400/IS800串口分配器/共享器.除了RS232設備應用環境外,RS485應用環境也可以有類似應用考慮.不一定要由控制臺來讀數據,設備有緊急狀況也可以主動報告.這就要智能型串口分配器/共享器才能滿足.
上述應用環境主要在一臺主機與多臺設備間的問答控制方式.我們知道所有的主機命令都會送給所有設備,而所有設備傳送數據都是要傳給主機.于是同一時間不同設備所傳送的數據都會被直接傳給主機或緩存再傳給主機.這是IS400/IS800的工作方式,把主機接到主口(master port)而各設備接到從口(slave port).
現在我們會碰到多臺主機要與一臺設備連接的應用環境需求.此時我們如果使用IS400把設備接到主口(master port)而各主機接到從口(slave port)來工作.于是各主機發出命令都會到設備,但是設備回傳的數據也會被傳給全部主機.雖然我們可以確保多臺主機同時發出命令時,只有一臺主機的命令被先發到設備,其他主機的命令會被緩存排隊發給設備.但因為設備回傳的數據會被回傳給全部主機而造成困擾及解讀錯誤.例如主機1及主機2同時發出不同命令到設備.當主機1的命令先被發到設備時,設備回傳數據會同時回給全部主機.對主機1而言它收到正確回傳數據沒問題,對主機3而言它沒發命令而收到數據,可能是單純的丟棄之也沒問題.但也可能對資料進行處理而產生問題(這就與主機的軟件處理方式有關).對主機2而言會以為收到的數據是自己發出命令的設備答話,但其實是主機1的命令答話,于是產生各種可能錯誤后果.
很顯然IS400無法滿足上述多主機與一臺設備連接的應用環境.現在我們就要用IS400S來滿足.首先我們會把設備的答話只傳送給發出命令的主機.如果有多臺主機發出命令,則其中一臺主機先把命令發到設備,等其答話后回傳給該問話主機.此時我們再發緩存中另一主機的命令給設備.如果我們發給設備的命令在約300ms沒有得到答話,則我們也換另一臺主機來工作.如此情況下,每一臺主機都可以下命令給設備,同時設備的答話也只會回傳給該主機.于是每一臺主機如同該設備只有我在用,而不會有數據混淆的問題.
基本上在串口通信過程中的數據我們無法解析(每個軟件有其意義及定義),所以我們對于命令的下達及完整性是以數據超過20ms不再傳送來當作命令完全下達的原則,來進行工作主機的切換.所以我們假設主機或設備會連續傳送資料直到全部送完,而不可以有超過20ms的中斷.否則會被當作命令送完而產生錯誤封包解讀,因為一個命令被拆成兩個錯誤命令來處理.
總結IS400與IS400S串口共享器的差異在主口(master port)收到數據時,IS400會同時廣播給全部子口(slaveport).而IS400S則只有傳輸給剛才工作中的子口(slaveport),也就是目前收到資料再轉發給主口的子口.所以IS400S是一種握手式串口共享器應用.