工業上普遍需要測量各類非電物理量,例如溫度、壓力、速度、角度等,這些都需要轉換成模擬電訊號才能傳輸到幾百公尺外的監控室或顯示裝置上。因為電流訊號不易受干擾,工業上廣泛採用4~20ma電流來傳輸模擬量。4ma表示0%的訊號,可以區分0%訊號和電路斷開;20ma表示100%的訊號,其通斷引起的火花能量不足以引燃瓦斯。而控制端需要採集這個模擬電流量,將其轉換成數字量進行處理。
一、硬體方案
工業上除特殊要求需要自己設計模擬電流採集電路以外,通用的比較高效、低成本的模擬電流採集方案一般是直接購買專門廠商的模擬量採集模組(俗稱亞當模組)。配合上工控主機,可以實現下圖所示的採集流程:電流變送器將感測器返回的非標準訊號轉換成4~20ma的模擬電流訊號進行傳輸;亞當模組是乙個adc模組,採集4~20ma的模擬電流,轉換成數值存放於暫存器中;主機通過rs485匯流排訪問各個模組,得到相應暫存器的數值進行處理。
圖1 模擬電流採集示意圖
針對4~20ma模擬電流的採集,市場上有許多廠商都能提供不同效能、不同**的亞當模組,這些模組通過rs485匯流排介面與主機通訊,通訊協議是modbus rtu。英創主機板提供rs485介面和modbus庫檔案,能夠作為485主機,與亞當模組構成模擬電流採集系統,並進行相應處理。目前,我們對市場上滿足4~20ma輸入範圍要求的一些亞當模組做了比較詳細的評估,英創主機板都能與它們正常通訊,完成對模擬電流的採集處理。在9600波特率下,我們用5位半電流錶對各個廠商不同產品的測量精度進行了評估(最低0.2%),具體情況及其他引數見表1,不同需求的客戶可以參考下表進行亞當模組的選型。
表1 模擬電流採集模組引數比較
研華的adam-4107+只要1146元,與adam-4117的區別主要是通道不能單獨設定輸入範圍,取樣率只有10hz(total),使用者可以評估一下
實際就是單端,只是為每個通道提供了乙個單獨的地訊號接頭
大於30,9600波特率受限於讀函式一次耗時約30ms,最大能測到約30hz;當波特率在115200時,讀一次時間約20ms,最大約能測50hz,100次讀耗時不到2s,結果93次不同,表明差不多有50次/秒。受限實驗條件,不能驗證是否能達到100次/秒
adam-4117測電流要開啟外殼,改變跳線,在pc上設定位址取樣率**換速率)等引數,可以只enable乙個通道,則這個通道的取樣率就是總的取樣率(大於30hz/total測試過程通注釋3),如果enable多個通道,則每個通道平分總的取樣率。
誤差除以量程為測量精度,5位半電流錶測量值作為真實值;可以通過測試最大電流的取樣值和最小電流的取樣值重新標定取樣值範圍,修改換算公式的值來進一步改善
各個模組設定不同的位址後,兩兩聯網,485通訊沒有問題
此外,市場上還有更低成本的低精度、單通道亞當模組,只要其支援標準的modbus rtu協議,物理通訊介面為rs485就能配合英創主機板使用,設定成不同位址後,可以組建rs485網路,通過英創提供的modbus庫函式進行訪問。不同模組與英創主機板的連線如圖2所示。
圖2 不同亞當模組與英創主機板連線
二、應用軟體程式設計
modbus是工業控制器網路通訊協議中最常用的協議之一,其通訊採用主從方式,在同乙個網路中有乙個主裝置及最多達255臺從裝置。工業上一般使用modbus rtu模式,以16進製制傳送資料,乙個位元組就是一幀,效率高於modbus ascii模式。乙個典型的modbus協議資料報由若干幀組成,如圖3所示:
圖3 modbus資料報格式
其中,第1幀為從機位址,第2幀為功能碼,第3、4幀為主機欲訪問的從機的起始暫存器位址,第5、6幀為要訪問的暫存器個數,最後兩幀為16位crc校驗碼。對任何乙個 modbus協議資料報,其第 1、2幀及最後兩幀的意義都是相同的,其他幀則根據功能碼不同而有所區別。
下面就linux系統下,使用英創提供的libmbusmaster.a庫檔案進行模擬電流採集應用程式設計作簡單介紹,更詳細的過程請參考具體例程。
1、開啟串列埠裝置
sprintf( hostname, "ttys3:9600-8-1-0");
hport = mbusmaster_openportprotocol( hostname );
2、設定modbus通訊超時時間
i1 = mbusmaster_settimeout( hport, 2000 );
printf( "settimeout:%d\n", i1 );
3、讀取亞當模組轉換結果暫存器,處理讀取值
result = mbusmaster_readmultipleregisters( hport, moduleaddr, startaddr+channelstart,dataarr,channelcnt);
if (result == 0)
}else
}
其中,calculatecircuit是根據不同模組的轉換公式將讀到的數值轉換成對應的電流值。在使用mbusmaster_readmultipleregisters讀取暫存器值時,要參照各模組的手冊,傳遞不同的暫存器對映位址。如果讀取失敗,可以通過mbusmaster_geterrortext函式提示失敗原因。
4、關閉串列埠裝置
mbusmaster_closeportprotocol( hport );
三、總結目前,市面上亞當模組(模擬數採模組)在**、效能、通道數上有非常靈活的選擇,單通道的亞當模組最低不到¥100元就能買到。綜合我們的測試情況來看,主控部分使用英創主機板,模擬資料採集部分使用市面上成熟的亞當模組,是工業上一種快速構建4~20ma模擬電流採集硬體平台的方案,並且具有很高的靈活性,能夠滿足使用者的不同需求。此外,英創的libmbusmaster.a庫檔案實現了modbus協議的常用功能,使用者只要簡單的呼叫幾個函式,就能完成軟體上的編寫,大大減少了整個產品的開發周期,降低了開發難度。因此,此方案具有簡單、高效、靈活、低成本的優勢。
成都英創資訊科技****
4 20mA電流環設計
深度揭密 4 20ma電流環設計 工業現場有許多過程控制系統,從簡單的流量控制到複雜的電網,從環境控制系統到煉鋼廠過程控制,這些控制系統由很多模組組成如 處理單元,輸入模組,模擬量輸出,數字量輸出,電源等等。不同模組之間需要進行資料通訊,在眾多現代通訊方式中,還有一類相對古老的通訊方式顯得比較特殊,...
為什麼採用4 20mA的電流來傳輸模擬量?
大家可能會非常熟悉rs232,rs485,can等工業上常用的匯流排,他們都是傳輸數碼訊號的方式。那麼,我們用什麼方式來傳輸模擬訊號呢?工業上普遍需要測量各類非電物理量,例如溫度 壓力 速度 角度等,這些都需要轉換成模擬量電訊號才能傳輸到幾百公尺外的控制室或顯示裝置上。工業上最廣泛採用的是用4 20...
4 20mA訊號產生的幾種方案
為了與原有系統相容,需要並口的4 20madac晶元,但找了一大圈都沒有找到。將幾種可用的方案列出來 1 ad420 421使用spi匯流排掛在mcu下面,直接輸出4 20ma,可選0 24ma,0 5v,0 10v等功能,缺點速度較慢,適用於溫度,液位,流量等變化緩慢的物理量控制 2 並口dac ...