黎煥欣 Li Huan Hsin '08-03-08
前兩天我們計劃 (NTUarray) 的交大合作教授 Robert 帶了他的學生來, 希望我帶他學習如何用電腦自動量測. Robert 本來想用 GPIB, 不過聴了只要接一台機器 (HP34401), 前面接一個噪音功率量測二極體, 而且它也有 RS232 頭, 我認為用 RS232 接就好了. 便宜也容易上手.
基本上, HP34401 就是一台 "超高級" 三用電表, 而他們就是要用它當精密電壓計量測就是了.
-----------------------------------------------------------------------------------------------------------------------------
我想, 機器有 RS232 接頭的大約都算好操控. 小廠的產品尤其容易, 因為它沒有太多的韌體寫作人員寫複雜的東西. 但是像一些大廠, 往往就很囉嗦. Aglient 及它的前身 HP 算一個.
HP34401 拿到手, 外加一個兩百多頁的 PDF 檔. 又是典型的大廠....
拿起機器一看, 它的 RS232 居然是公頭, 跟 PC 側是一樣的. 表示它不是 "被接" 的, 說明書中有說它是 DTE,..... 其實 RS232 的原始定義也是講得語焉不詳加過時, 很不容易理解又容易忘.
總之, 我現在設計東西的時候, 都是以我是控制端 (大部份來說就是 PC) 用公頭, 被控端 (週邊要被 PC 控制的儀器) 用母頭的方式來定義. 這樣接頭頭對頭, 電線一對一接進去就了事. 大部份的儀器製造商都與我抱持同樣的想法..... HP 是大廠, 所以不是......
--------------------------------------------------------------------------------------------------------------------------------
即然兩邊都是公頭, 又是 RS232, 那就有跳線, 不是去買個公母互轉的接頭就可以. 說明檔內說可以用 NULL MODEM ADAPTER, 或是買它們的配件(那是不可能的貴...), 或是自己做...
看起來就比一般跳線麻煩. 先用 NULL MODEM 試試...
也因為現在電腦內建 RS232 已經很少了, 去光華商場買了一個 USB 轉 RS232 轉換器, 裝進電腦後成了 COM29..., 在 HP34401 的後方接了起來
--------------------------------------------------------------------------------------------
要操作任何一台機器, 它的 RS232 command set 就一定要搞清楚. HP 如同 "大廠" 的做法. 想了一個 SCPI 語言來操作它 "所有" 的儀器, 儀器百百種, 功能與性質各異, 要搞在同一個 command set, 結果只會複雜得一塌胡塗, 只不過要幾個簡單功能, 就看著整個 command set 找半天....
就任何一台需要 PC 用 RS232 操作的儀器, 第一件事就是設定(或得知)它身上的 RS232 設定值. 總之寫得自然或不自然, 要搞清楚就是了, 不外乎是 baud = 9600, no parity check. 另外, 有的話, 設成 "三線式, TXD,RXD 及 GND 三條線" 就可以動了, 不用管其它的狀態線, 這樣是最簡單的...
其次就是要讓儀器處於被RS232 "遙控" 的狀態, 少數的儀器用面板上的按鍵. 大部份是用 RS232 送一個特殊的命令, 讓儀器進入遥控狀態.
即然是 RS232 操作. 我就直接拿我平常用的 v8comm 程式, 這是我自己用 VB2005 寫的一個 RS232 終端機程式. 我拿來練習 VB2005 用的. 現在也拿它來做 RS232 測試
HP34401 用 ":system:remote" 或簡寫 ":syst:rem" 來設定它進遙控狀態.....失敗........
問題出現在命令終端字元, 儀器在讀取命令之時, 在命令字串後, 要加一個終端字元, 表示命令傳完了, 請開紿執行, 就像我們在電腦上打 [ENTER] 一樣, 實際上 [ENTER] 鍵的代碼就是 [CR], 有部份的機器是用 [CR]+[LF]. [LF]=換行, 大部份的機器都用 [CR] 或 [CR+LF] 來終止.
HP34401 都不會動.... 看了手冊, 終於找到, 它用的是 [LF] 或 [LF+CR],......
我的程式原來沒有這個功能, 只好加了進去....
終於動了起來......., 它進入 "遙控" 模式了
-----------------------------------------------------------------------------------------------------------------------------------
至此, 它可以接受命令了. 但要 PC 讀回它送出的值就出問題了.....
在 SCPI 中, "*idn?" 命令可以傳回儀器的型號與內部韌體的相關訊息, 但是打了後一點反應都沒有......
也嘗試了其它讀取命令, 也沒有回傳的樣子....
是否 NULL MODEM 還不夠用, 照著上面的戰線圖做了一條線. 還是沒反應,......
再 K 說明書, 才發現它的輸出字元是被 "DTR" 信號做流量管制, 若它不啟動. 它是不會傳送東西的..
這又是一個新功能, 我再把程式寫進我的 v8comm..., 終於會回傳了
-----------------------------------------------------------------------------------------------------------------------------------
我們看著手冊, 大約看著範例, 找出一個讀取目前量測電壓的方法, 從起頭開始設遙控一直到讀值出來, 做了一個小測試如下圖.
總算也是讀回值了. 接下來要量什麼, Robert 及他的學生要更 figure out, 後續再說了..
留言列表