【使用RS-232/RS485 PORTS】
    1. 半雙工的 RS-485
    2. echo485.exe & echocom.exe
    3. 與 I-7000 模組連線
    4. 與 Touch-200 連線
    5. 使用 Modem 撥接電話
    6. 與 PLC 連線
    7. 與其他的 I-7188 或 PC 連線
    8. 把 COM1/COM2 兩個 RS-485 當成一個 RS-422 來用
    9. 自己寫 COM1/COM2 的中斷服務程式
    10. 自己寫 COM3/COM4 的中斷服務程式
    11. 使用 MODBUS PROTOCOL


    回主目錄

    半雙工的 RS-485

    1. RS-485 BUS 有全雙工跟半雙工之分,I-7188 所提供的是半雙工的 RS-485。
    2. 半雙工的 RS-485 只有一對資料線,D+ 跟 D-,資料收送都透過這對線。 可以多個使用 RS-485 的模組都掛在這對線上面,但前提是同時只能有一個模組送出資料, 其他模組都在資料接收模式。也就是說半雙工的 RS-485 應該用在 MASTER/SLAVE 模式下, 一問一答的模式運作。
    3. Master 只有一個,slave 可以有很多個。為了區分 master 所下的命令是給哪一個slave, 所以通常 slave 端會給予不同的 ID 或 address,而 master 送出的命令就會有一個欄位是這個 id, 送出的命令或資料所有的 slave 都會收到,slave 需要由 id 欄位去判斷該命令是不是給自己的, 如果是才對該命令做回應,不是的話就不要管他。當然某一個 slave 回應時, 其他的 slave 跟 master 都會收到,所以回應的資料跟 master 所下的命令有需要做區別, 要避免回應資料跟 master 的命令一樣,造成其他 slave 做了回應。這是一開始訂定命令及回應值時要考慮的。
    4. I-7188 的 RS-485 一開始是設定在資料接收模式。只有在要送出資料前才需要將他設定在資料傳送模式 (使用 Set485DirToTransmit(1/2)),送出資料(使用 ToCom(1/2,data))後,需要等資料真正從 RS-485 bus 送出後(使用WaitTransmitOver(1/2)) 才可以切換回資料接收模式(使用 Set485DirToReceive(1/2))。
    5. 有一個新的命令可以設定自動切換 SetCom2AutoDir();,呼叫之後,COM2 的中斷服務程式會自動切換 RS-485 BUS 資料的傳送方向,這樣使用 RS-485 就不用再呼叫 Set485DirToTransmit()/Set485DirToReceive()/WaitTransmitOver(), 就跟使用 RS-232 比較類似。範例程式可以參考 C\NEW485\ECHO485.C
    回本頁目錄

    echo485.exe & echocom.exe

    1. echo485.exe 以及 echocom.exe 都是 I-7188 的範例程式。
    2. echo485.exe 針對 COM2(RS-485) 動作,主要是用來跟 I-7000 系列模組連線。
      1. 可以下命令給 I-7000 模組,用來設定或測試 I-7000 模組都很方便。
      2. 可以設定連線的速度(baudrate)。
      3. 可以設定 check sum ON/OFF。
      4. 可以自動 scan I-7000 模組(使用目前的 baudrate 及 check sum mode 來尋找)。
    3. I-7000 模組命令中的 check sum 計算方式可以在 echo485.C 中找到。
    4. 在I-7188 上透過半雙工的 RS-485 收送資料的方法也可以在 echo485.C 中找到。
    5. echocom.exe 類似 echo485.exe,只是他除了 COM2 外也可以用在 COM1 跟 COM3。
    回本頁目錄

    與 I-7000 模組連線

    1. I-7000 模組用的是RS-485,所以可以直接用 COM2 及 COM1(要設定在 RS-485 模式)連 I-7000 模組。 COM3 跟 COM4 都是 RS-232 模式,所以要加上一個 I-7520(RS-232/RS-485 轉換器) 才能連上 I-7000 模組。
    2. I-7000 模組可以有很多個掛在 RS-485 bus 上,前提是所使用的 baud rate, address, checksum mode 三者不可以完全一樣。 要下命令給其中某一個模組就要設定好該模組的 baud rate, address, check sum mode 送出命令,這樣就只有那一個模組會回應。
    3. 通常掛在 RS-485 bus 上 I-7000 模組不超過256個只要設定成同樣的 baud rate 及 check sum mode , 然後依不同的 address 送出命令給各模組就可以。
    4. 半雙工的 RS-485 bus 好處是可以連許多模組,但是要遵守一個原則:同時只能有一個模組設定在送出資料的模式, 其他的都要在接收模式。 I-7000 模組只有在收到是送給他的正確命令才會有回應, 所以 I-7188 在送出命令之前將 RS-485 設成送的模式,送完命令後(要等到資料都從 RS-485 送出)就要馬上切換回接收模式等著收 I-7000 模組回應的訊息。 如果使用副程式 SendCommandTo7000() 就會做好一切該做的事。
    5. 下完命令給 I-7000 模組後,如果該命令有回應值,就應該等著接收該回應訊息, 即使不用到至少也應該把回應值從 COM PORT 的 buffer 讀走。使用副程式 ReceiveResponseFrom7000() 會等著接 I-7000 模組回應的訊息收。
    6. 範例程式中有很多是跟 I-7000 模組連線的,但不見得使用上述兩個副程式,使用上述兩個副程式的好處是程式比較好寫,但是壞處就是比較沒有效率。 要用哪種方法就看使用者自己斟酌了。
    回本頁目錄

    與 Touch-200 連線

    1. Touch-200 是一個人機介面模組,可以透過 RS-232 或 RS-422 跟 I-7188 或 PC 或 PLC 溝通。 在 Touch-200 上要顯示的畫面以及操作方式要事先在 pc 上用他的工具程式(easyview)規劃好,然後下載到 Touch-200 裡頭。 I-7188 或 pc 要對 Touch-200 收送命令可以透過在 demo32.c 或 demo34.c 中所提供的副程式來完成。
    2. I-7188 的 COM1 或 COM3 或 COM4 都可以用來連 Touch-200。 要注意的是記得把 Touch-200 端 rs-232 接頭的第 7 第 8 兩支接腳(RTS,CTS)接在一起。 如果使用 COM1 可以不必這麼做,但要記得送出 RTS 信號。
    3. 詳細的用法請自行參考 DEMO 程式。easyview 的使用請參考他的使用手冊。
    回本頁目錄

    使用 Modem 撥接電話

    1. 用 I-7188 透過 modem 撥接電話的範例請看 DEMO8.C。
    2. 如果程式中不特別去處理 RTS/CTS/DSR/DTR/RI/DCD 等信號的話,用 COM3/COM4 應該也可以用來接 modem。 (demo8.c 是使用 com1,但也沒有處理這些信號。)
    3. 跟 modem 溝通用的 AT 命令請自行參考 modem 的說明書或找其他相關書籍的說明。 demo8.c 中只有用到最常用的一些命令。
    4. 當跟對方連線之後就相當於連接 modem 的 com port 有一條 RS-232 的線連到對方的 RS-232, 這時候就可以把它當成一般的 RS-232 來使用。
    回本頁目錄

    與 PLC 連線

    1. 跟 PLC 連線首先要知道他是用 RS-232,RS-422 還是 RS-485。 再來是要弄清楚使用的接線信號,有些並不是標準的腳位,有些有他提供的專用線。 各家 PLC 應該都不一樣。
    2. 再來就是研究他的通訊協定,通常都有一個命令的起始值,接著是命令種類,然後是資料, 然後是 crc 或是 check sum 最後加上結束字元。
    3. DEMO21 裡頭的 FACON.C 是跟永宏 PLC連線的範例。
    回本頁目錄

    與其他的 I-7188 或 PC 連線

    1. 使用 RS-232 或 RS-485 都可以跟其他有RS-232 或 RS-485 的模組連線。
    2. 雙方的 baud rate 要一致,data protocol 也要相同。 再來是 RS-232 接線部分記得要 RX 接到對方的 TX,TX 接到對方的RX, 地線也不要忘了接。 這樣應該就沒問題了。
    3. 至於是否要用到硬體或軟體的流量控制就看情形了。有用的話比較不會漏資料,但程式要另外處理就是,這一部份沒有範例程式,以後有空再加上。
    4. 通常如果兩邊的程式都是自己開發的就可以自行定義雙方的通訊協定,如果是跟已知的特定軟體連線就要根據他定的通訊協定來寫了。
    5. 一般自定的通訊協定可以比照 I-7000 模組使用的命令,定義出什麼命令做什麼事,該有什麼回應就可以。
    回本頁目錄

    把 COM1/COM2 兩個 RS-485 當成一個 RS-422 來用

    1. RS-485 跟 RS-422 的信號規範是一樣的,RS-422 是全雙工的,而 I-7188 上的 RS-485 是半雙工的, 如果不必用到 RS-485 而需要一個 RS-422 時,可以將這兩個 RS-485 拿來當一個 RS-422 使用。 只要將其中一個設定在接收模式,當 RS-422 的 RX 使用,另一個設定在傳送模式,當 RS-422 的 TX 使用就可以。
    2. 程式部分就是要記得由哪一個 COM PORT 收資料,由哪一個送資料。
    回本頁目錄

    自己寫 COM1/COM2 的中斷服務程式

    1. I-7188 的 COM1/2 所使用的是 UART IC 16c550 ,跟現在一般 PC 的 RS-232 是相容的。 但是硬體線路所使用的 I/O PORT 不一樣,使用的中斷向量也不一樣, 再來是 I-7188 處理中斷的方式也跟 PC 有一點點不一樣,所以並不能把 PC 上的程式拿來直接用, 但是可以稍作修改就可以使用。該注意的地方可以參考 DEMO8\uart7.c 裡頭的程式及說明。 (需要自己寫中斷服務程式的人看那一段程式應該沒問題的。)
    2. 一般的使用者應該用 I-7188 程式庫所提供的功能就夠用了,但是如果有特殊需求, 需要在 RS-232 收到字元後馬上判斷處理的話,就需要自行寫中斷服務程式。 這時候可以用 uart7.c 當範本,直接在上面加上需要的功能就可以。
    3. 當使用 RS-485 時要注意資料方向的控制。
    回本頁目錄

    自己寫 COM3/COM4 的中斷服務程式

    1. I-7188 的 COM3/4 所使用的是 CPU 內部的 UART ,跟現在一般 PC 的 RS-232 是不相容的。
    2. 詳細的硬體控制資料要參考 AM188ES 的手冊(Am186ES and Am188ES Microcontrollers USer's Manual)。 範例程式可以參考 C\COM3COM4\COM3COM4.C
    回本頁目錄

    使用 MODBUS PROTOCOL

    1. MODBUS PROTOCOL 也是一種常用的通訊協定,他有 MASTER/SLAVE 之分, master 主動送出命令,等候 slave 回應。 SLAVE 端在收到命令之後一定時間內要回應,不然就被視為 TIMEOUT 處理。 資料傳送的模式又分兩種,一種是 ASCII 模式,一種是 binary 模式,後者的資料量約為前者的一半。
    2. I-7188 提供的範例程式在 C\MODBUS\目錄下,master 跟 slave 各有一個。 主要是提供收送一個命令封包的副程式,至於收送命令的資料內容就因情況而定, 請自行參考相關資料,或是所要連線的模組所附的資料。
    回本頁目錄

    回主目錄
    I-7188入門課程 1.10版 〔by:蔡坤廷〕 〔本檔最後修改日期:02/15/2001〕