當(dāng)前位置: 首頁(yè) > 傳感測(cè)量產(chǎn)品 > 工業(yè)傳感器 > 溫濕度傳感器
發(fā)布日期:2022-04-18 點(diǎn)擊率:47
關(guān)鍵詞: 模擬電流采集 4~20mA
摘要:針對(duì)4~20mA模擬電流的采集,市場(chǎng)上有許多廠商都能提供不同性能、不同價(jià)格的亞當(dāng)模塊,這些模塊通過(guò)RS485總線接口與主機(jī)通信,通信協(xié)議是modbus RTU。英創(chuàng)主板提供RS485接口和modbus庫(kù)文件,能夠作為485主機(jī),與亞當(dāng)模塊構(gòu)成模擬電流采集系統(tǒng),并進(jìn)行相應(yīng)處理。
工業(yè)上普遍需要測(cè)量各類非電物理量,例如溫度、壓力、速度、角度等,這些都需要轉(zhuǎn)換成模擬電信號(hào)才能傳輸?shù)綆装倜淄獾谋O(jiān)控室或顯示設(shè)備上。因?yàn)殡娏餍盘?hào)不易受干擾,工業(yè)上廣泛采用4~20mA電流來(lái)傳輸模擬量。4mA表示0%的信號(hào),可以區(qū)分0%信號(hào)和電路斷開(kāi);20mA表示100%的信號(hào),其通斷引起的火花能量不足以引燃瓦斯。而控制端需要采集這個(gè)模擬電流量,將其轉(zhuǎn)換成數(shù)字量進(jìn)行處理。
1、硬件方案
工業(yè)上除特殊要求需要自己設(shè)計(jì)模擬電流采集電路以外,通用的比較高效、低成本的模擬電流采集方案一般是直接購(gòu)買專門廠商的模擬量采集模塊(俗稱亞當(dāng)模塊)。配合上工控主機(jī),可以實(shí)現(xiàn)下圖所示的采集流程:電流變送器將傳感器返回的非標(biāo)準(zhǔn)信號(hào)轉(zhuǎn)換成4~20mA的模擬電流信號(hào)進(jìn)行傳輸;亞當(dāng)模塊是一個(gè)ADC模塊,采集4~20mA的模擬電流,轉(zhuǎn)換成數(shù)值存放于寄存器中;主機(jī)通過(guò)RS485總線訪問(wèn)各個(gè)模塊,得到相應(yīng)寄存器的數(shù)值進(jìn)行處理。
圖1 模擬電流采集示意圖
針對(duì)4~20mA模擬電流的采集,市場(chǎng)上有許多廠商都能提供不同性能、不同價(jià)格的亞當(dāng)模塊,這些模塊通過(guò)RS485總線接口與主機(jī)通信,通信協(xié)議是modbus RTU。英創(chuàng)主板提供RS485接口和modbus庫(kù)文件,能夠作為485主機(jī),與亞當(dāng)模塊構(gòu)成模擬電流采集系統(tǒng),并進(jìn)行相應(yīng)處理。目前,我們對(duì)市場(chǎng)上滿足4~20mA輸入范圍要求的一些亞當(dāng)模塊做了比較詳細(xì)的評(píng)估,英創(chuàng)主板都能與它們正常通信,完成對(duì)模擬電流的采集處理。在9600波特率下,我們用5位半電流表對(duì)各個(gè)廠商不同產(chǎn)品的測(cè)量精度進(jìn)行了評(píng)估(最低0.2%),具體情況及其他參數(shù)見(jiàn)表1,不同需求的客戶可以參考下表進(jìn)行亞當(dāng)模塊的選型。
表1 模擬電流采集模塊參數(shù)比較
?。ňG色部分為實(shí)際測(cè)量結(jié)果,僅供參考)
1. 研華的ADAM-4107+只要1146元,與ADAM-4117的區(qū)別主要是通道不能單獨(dú)設(shè)定輸入范圍,采樣率只有10Hz(total),用戶可以評(píng)估一下
2. 實(shí)際就是單端,只是為每個(gè)通道提供了一個(gè)單獨(dú)的地信號(hào)接頭
3. 大于30,9600波特率受限于讀函數(shù)一次耗時(shí)約30ms,最大能測(cè)到約30Hz;當(dāng)波特率在115200時(shí),讀一次時(shí)間約20ms,最大約能測(cè)50Hz,100次讀耗時(shí)不到2s,結(jié)果93次不同,表明差不多有50次/秒。受限實(shí)驗(yàn)條件,不能驗(yàn)證是否能達(dá)到100次/秒
4. adam-4117測(cè)電流要打開(kāi)外殼,改變跳線,在PC上設(shè)置地址采樣率(轉(zhuǎn)換速率)等參數(shù),可以只enable一個(gè)通道,則這個(gè)通道的采樣率就是總的采樣率(大于30Hz/total測(cè)試過(guò)程通注釋3),如果enable多個(gè)通道,則每個(gè)通道平分總的采樣率
5. 誤差除以量程為測(cè)量精度,5位半電流表測(cè)量值作為真實(shí)值;可以通過(guò)測(cè)試最大電流的采樣值和最小電流的采樣值重新標(biāo)定采樣值范圍,修改換算公式的值來(lái)進(jìn)一步改善
6. 各個(gè)模塊設(shè)置不同的地址后,兩兩聯(lián)網(wǎng),485通信沒(méi)有問(wèn)題
此外,市場(chǎng)上還有更低成本的低精度、單通道亞當(dāng)模塊,只要其支持標(biāo)準(zhǔn)的modbus RTU協(xié)議,物理通信接口為RS485就能配合英創(chuàng)主板使用,設(shè)置成不同地址后,可以組建RS485網(wǎng)絡(luò),通過(guò)英創(chuàng)提供的modbus庫(kù)函數(shù)進(jìn)行訪問(wèn)。不同模塊與英創(chuàng)主板的連接如圖2所示。
圖2 不同亞當(dāng)模塊與英創(chuàng)主板連接
2、應(yīng)用軟件編程
Modbus是工業(yè)控制器網(wǎng)絡(luò)通信協(xié)議中最常用的協(xié)議之一,其通信采用主從方式,在同一個(gè)網(wǎng)絡(luò)中有一個(gè)主設(shè)備及最多達(dá)255臺(tái)從設(shè)備。工業(yè)上一般使用modbus RTU模式,以16進(jìn)制傳送數(shù)據(jù),一個(gè)字節(jié)就是一幀,效率高于modbus ASCII模式。一個(gè)典型的modbus協(xié)議數(shù)據(jù)包由若干幀組成,如圖3所示:
圖3 modbus數(shù)據(jù)包格式
其中,第1幀為從機(jī)地址,第2幀為功能碼,第3、4幀為主機(jī)欲訪問(wèn)的從機(jī)的起始寄存器地址,第5、6幀為要訪問(wèn)的寄存器個(gè)數(shù),最后兩幀為16位CRC校驗(yàn)碼。對(duì)任何一個(gè) ModBus協(xié)議數(shù)據(jù)包,其第 1、2幀及最后兩幀的意義都是相同的,其他幀則根據(jù)功能碼不同而有所區(qū)別。
英創(chuàng)提供的libmbusmaster.a庫(kù)實(shí)現(xiàn)了modbus協(xié)議,支持常用功能碼,詳細(xì)介紹請(qǐng)查閱網(wǎng)站文章《ModBus通訊協(xié)議軟件包》、《英創(chuàng)嵌入式Linux工控主板支持Modbus主控協(xié)議軟件》、《Linux下的Modbus設(shè)備方協(xié)議軟件介紹》。
下面就linux系統(tǒng)下,使用英創(chuàng)提供的libmbusmaster.a庫(kù)文件進(jìn)行模擬電流采集應(yīng)用編程作簡(jiǎn)單介紹,更詳細(xì)的過(guò)程請(qǐng)參考具體例程。
1、打開(kāi)串口設(shè)備
sprintf( hostName, "ttyS3:9600-8-1-0");
hPort = mbusMaster_OpenPortProtocol( hostName );
2、設(shè)置modbus通信超時(shí)時(shí)間
i1 = mbusMaster_SetTimeout( hPort, 2000 );
printf( "SetTimeout:%d ", i1 );
3、讀取亞當(dāng)模塊轉(zhuǎn)換結(jié)果寄存器,處理讀取值
result = mbusMaster_ReadMultipleRegisters( hPort, moduleAddr, startAddr+channelStart,dataArr,channelCnt);
if (result == 0)
{
sampleCnt++;
printf("*****sample %d***** ",sampleCnt);
for (i1 = 0; i1 < channelCnt; i1++)
{
value[i1] = CalculateCircuit(moduleID, dataArr[i1]);
printf("[%d]: %hd 0x%04x %0.4f ", i1 , dataArr[i1], dataArr[i1], value[i1]);
}
}
else
{
strcpy( str,mbusMaster_GetErrorText( result ) );
i1 = strlen( str );
if( i1>0 )
{
printf( "%s! ", str );
}
}
其中,CalculateCircuit是根據(jù)不同模塊的轉(zhuǎn)換公式將讀到的數(shù)值轉(zhuǎn)換成對(duì)應(yīng)的電流值。在使用mbusMaster_ReadMultipleRegisters讀取寄存器值時(shí),要參照各模塊的手冊(cè),傳遞不同的寄存器映射地址。如果讀取失敗,可以通過(guò)mbusMaster_GetErrorText函數(shù)提示失敗原因。
4、關(guān)閉串口設(shè)備
mbusMaster_ClosePortProtocol( hPort );
如果用戶對(duì)4~20mA模擬電流采集應(yīng)用方案感興趣,可以聯(lián)系我們。我們將提供表1所有的模塊信息及程序示例。
3、總結(jié)
目前,市面上亞當(dāng)模塊(模擬數(shù)采模塊)在價(jià)格、性能、通道數(shù)上有非常靈活的選擇,單通道的亞當(dāng)模塊最低不到¥100元就能買到。綜合我們的測(cè)試情況來(lái)看,主控部分使用英創(chuàng)主板,模擬數(shù)據(jù)采集部分使用市面上成熟的亞當(dāng)模塊,是工業(yè)上一種快速構(gòu)建4~20mA模擬電流采集硬件平臺(tái)的方案,并且具有很高的靈活性,能夠滿足用戶的不同需求。此外,英創(chuàng)的libmbusmaster.a庫(kù)文件實(shí)現(xiàn)了modbus協(xié)議的常用功能,用戶只要簡(jiǎn)單的調(diào)用幾個(gè)函數(shù),就能完成軟件上的編寫(xiě),大大減少了整個(gè)產(chǎn)品的開(kāi)發(fā)周期,降低了開(kāi)發(fā)難度。因此,此方案具有簡(jiǎn)單、高效、靈活、低成本的優(yōu)勢(shì)。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV