電磁流量計標(biāo)準(zhǔn)MODBUS通訊協(xié)議_第1頁
電磁流量計標(biāo)準(zhǔn)MODBUS通訊協(xié)議_第2頁
電磁流量計標(biāo)準(zhǔn)MODBUS通訊協(xié)議_第3頁
電磁流量計標(biāo)準(zhǔn)MODBUS通訊協(xié)議_第4頁
電磁流量計標(biāo)準(zhǔn)MODBUS通訊協(xié)議_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

電磁流量計轉(zhuǎn)換器通訊協(xié)議-0-電磁流量計轉(zhuǎn)換器通訊協(xié)議2012-目錄一、概述 -2-二、網(wǎng)絡(luò)結(jié)構(gòu)及接線 -2-三、Modbus協(xié)議RTU幀格式 -2-四、Modbus協(xié)議命令編碼定義 -3-五、電磁流量計MODBUS寄存器定義 -5-1.電磁流量計MODBUS寄存器地址定義 -5-2.PLC地址設(shè)置說明 -5-3.組態(tài)王地址設(shè)置說明 -6-4.?dāng)?shù)據(jù)含義說明 -6-六、通訊數(shù)據(jù)解析 -7-1讀瞬時流量 -7-2.讀瞬時流速: -8-3讀累積流量 -8-5.讀總量流量單位 -10-6.讀報警狀態(tài) -10-七、應(yīng)用舉例 -11-1.C語言MODBUS示例程序 -11-2.modbus調(diào)試軟件modbuspoll通訊實例 -13-3.modbus調(diào)試軟件modscan32通訊實例 -15-4.組態(tài)王6.53通訊實例 -17-5.力控6.1通訊實例 -21-6.MCGS通訊實例 -24-注:本協(xié)議應(yīng)用舉例中例程只提供參考,例程中部分參數(shù)與MODBUS寄存器地址定義不符,請以MODBUS寄存器地址定義為準(zhǔn)。MODBUS功能碼定義如表-1所示,電磁流量計僅采用04功能碼。表-1功能碼名稱作用01讀取線圈狀態(tài)保留02讀取輸入狀態(tài)保留03讀取保持寄存器保留04讀取輸入寄存器讀電磁流量計實時信息05強置單線圈保留06預(yù)置單寄存器保留07讀取異常狀態(tài)保留08回送診斷校驗保留09編程(只用于484)保留10控詢(只用于484)保留11讀取事件計數(shù)保留12讀取通信事件記錄保留13編程(184/384484584)保留14探詢(184/384484584)保留15強置多線圈保留五、電磁流量計MODBUS寄存器定義1.電磁流量計MODBUS寄存器地址定義表-2ProtocolAddresses(Decimal)ProtocolAddresses(HEX)數(shù)據(jù)格式寄存器定義41120x1010FloatInverse瞬時流量浮點表示41140x1012FloatInverse瞬時流速浮點表示41160x1014FloatInverse流量百分比浮點表示(電池供電表保留)41180x1016FloatInverse流體電導(dǎo)比浮點表示41200x1018LongInverse正向累積數(shù)值整數(shù)部分41220x101AFloatInverse正向累積數(shù)值小數(shù)部分41240x101CLongInverse反向累積數(shù)值整數(shù)部分41260x101EFloatInverse反向累積數(shù)值小數(shù)部分41280x1020Unsignedshort瞬時流量單位(表3)41290x1021Unsignedshort累積總量單位(表4/表5)41300x1022Unsignedshort上限報警41310x1023Unsignedshort下限報警41320x1024Unsignedshort空管報警41330x1025Unsignedshort系統(tǒng)報警2.PLC地址設(shè)置說明PLC設(shè)置時如果沒有功能碼設(shè)置項時,使用功能04應(yīng)在寄存器地址前面加3。另PLC寄存器地址的基址是從1開始,所以PLC設(shè)置寄存器地址時應(yīng)在原地址上加1.例:電磁流量計MODBUS寄存器地址為4112(0x1010),MODBUS功能碼為4時,PLC寄存器地址為34113。詳細(xì)設(shè)置見應(yīng)用舉例章節(jié)2.3.組態(tài)王地址設(shè)置說明組態(tài)王設(shè)置時沒有功能碼設(shè)置項,不同的驅(qū)動設(shè)置方法不同。以PLC-莫迪康-modbus(RTU)驅(qū)動為例,使用功能04應(yīng)在寄存器地址前面加8。另組態(tài)王寄存器地址的基址是從1開始,所以組態(tài)王設(shè)置寄存器地址時應(yīng)在原地址上加1.電磁流量計MODBUS寄存器地址為4112(0x1010),MODBUS功能碼為4時,組態(tài)王寄存器地址為84113。詳細(xì)設(shè)置見應(yīng)用舉例章節(jié)4.4.?dāng)?shù)據(jù)含義說明(1)浮點格式:電磁流量計MODBUS采用IEEE75432位浮點數(shù)格式,其結(jié)構(gòu)如下:(以瞬時流量為例)0X1010(34113)0x1011(34114)BYTE1BYTE2BYTE3BYTE4SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMMS-尾數(shù)的符號;1=負(fù)數(shù),0=正數(shù);E-指數(shù);與十進(jìn)制數(shù)127的差值表示。M-尾數(shù);低23位,小數(shù)部分。當(dāng)E不全”0”時,且不全”1時(2)瞬時流量單位表3代碼瞬時單位代碼瞬時單位代碼瞬時單位代碼瞬時單位0L/S3M3/S6T/S9GPS1L/M4M3/M7T/M10GPM2L/H5M3/H8T/H11GPH(3)累積總量單位表4(適用于B型及511型電磁流量計轉(zhuǎn)換器)代碼0123累積單位LM3TUSG表5(適用于C型電磁流量計轉(zhuǎn)換器)代碼012345累積單位LLLM3M3M3代碼67891011累積單位TTTUSGUSGUSG(4)報警上限報警,下限報警,空管報警,系統(tǒng)報警表示:0不報警;1報警六、通訊數(shù)據(jù)解析瞬時流量,瞬時流速,流量百分比,流體電導(dǎo)比,正反向累積量小數(shù)部分以浮點數(shù)的格式傳輸。正反向累積量的整數(shù)部分以長整型數(shù)傳輸。1讀瞬時流量主站發(fā)送命令(十六進(jìn)制)01041010000274CE設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到數(shù)據(jù):010404C41C60002F72設(shè)備地址功能碼數(shù)據(jù)長度4個字節(jié)浮點數(shù)(瞬時流量)CRC高位CRC低位浮點數(shù)C41C600011000100000111000110000000000000浮點數(shù)字節(jié)1浮點數(shù)字節(jié)2浮點數(shù)字節(jié)3浮點數(shù)字節(jié)4S=1:尾數(shù)符號為1表示是負(fù)數(shù)。E=10001000:指數(shù)為136M=00111000110000000000000,尾數(shù)為=-625.52.讀瞬時流速:主站發(fā)送命令:010410120002D50E設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收數(shù)據(jù):010404C1B08000A65F設(shè)備地址功能碼數(shù)據(jù)長度4個字節(jié)浮點數(shù)(瞬時流速)CRC高位CRC低位浮點數(shù)為:C1B0800011000001101100001111100000000000S=1E=10000011M=01100001111100000000000=-22.06253讀累積流量為了能夠完全表達(dá)電磁流量計的9位累積值,所以把累積流量的整數(shù)和小數(shù)部分分別表達(dá)。整數(shù)部分用長整型變量,小數(shù)部分使用浮點數(shù)。累積流量為1587m3主站發(fā)送采集累積流量整數(shù)值命令:010410180002F50C設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到數(shù)據(jù):010404000070711E60設(shè)備地址功能碼數(shù)據(jù)長度4個字節(jié)長整形(累積量整數(shù)部分)CRC高位CRC低位累積流量的整數(shù)部分為=28785主站發(fā)送采集累積流量小數(shù)值命令0104101A000254CC設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到數(shù)據(jù):0104043F0000003B90設(shè)備地址功能碼數(shù)據(jù)長度4個字節(jié)浮點數(shù)(累積量小數(shù)部分)CRC高位CRC低位浮點數(shù)為:3F00000000111111000000000000000000000000S=0E=0111111126M=00000000000000000000000=0.54讀瞬時流量單位主站發(fā)送讀瞬時流量單位8個字節(jié)命令:01041020000134C0設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到從站回傳7個字節(jié)數(shù)據(jù):01040200057933設(shè)備地址功能碼數(shù)據(jù)長度2個字節(jié)整型(瞬時流量單位)CRC高位CRC低位根據(jù)表3查得:流量單位為M3/H5.讀總量流量單位主站發(fā)送讀瞬時流量單位8個字節(jié)命令:0104102100016500設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到從站回傳7個字節(jié)數(shù)據(jù):010402000178F0設(shè)備地址功能碼數(shù)據(jù)長度2個字節(jié)整型(累積量單位)CRC高位CRC低位B型及511型根據(jù)表4查得:流量單位為M3C型根據(jù)表5查得:流量單位為L6.讀報警狀態(tài)主站發(fā)送讀報警8個字節(jié)命令:0104102400017501設(shè)備地址功能碼寄存器地址高位寄存器地址高位寄存器長度高位寄存器長度低位CRC高位CRC低位主站接收到從站回傳7個字節(jié)數(shù)據(jù):010402000178F0設(shè)備地址功能碼數(shù)據(jù)長度2個字節(jié)整型(報警)CRC高位CRC低位狀態(tài)為1表示空管是報警狀態(tài)。其他報警依次類推。七、應(yīng)用舉例1.C語言MODBUS示例程序(1).CRC16算法:INT16UCRC16(INT8U*puchMsg,INT16UusDataLen){INT8UuchCRCHi=0xFF;/*高CRC字節(jié)初始化*/INT8UuchCRCLo=0xFF;/*低CRC字節(jié)初始化*/INT8UuIndex;/*CRC循環(huán)中的索引*/while(usDataLen--)/*傳輸消息緩沖區(qū)*/{uIndex=uchCRCHi^*puchMsg++;/*計算CRC*/uchCRCHi=uchCRCLo^auchCRCHi[uIndex];uchCRCLo=auchCRCLo[uIndex];}return(uchCRCHi<<8|uchCRCLo);}(2)發(fā)送命令程序本例程以Mag64為核心CPUvoidRead_InPut(INT8UAddr,INT16UStart,INT16ULen){INT16UCRC;SendBuffer_485[0]=Addr;//設(shè)備地址SendBuffer_485[1]=0x04;//modbus功能碼SendBuffer_485[2]=Start/256;//Start為寄存器地址SendBuffer_485[3]=Start%256;SendBuffer_485[4]=Len/256;//Len為讀取寄存器長度SendBuffer_485[5]=Len%256;CRC=CRC16(SendBuffer_485,6);SendBuffer_485[6]=CRC/256;//CRC校驗高位SendBuffer_485[7]=CRC%256;//CRC校驗低位R485_OUT;//使能RS485發(fā)送SendLen_485=8;SendNum_485=0;CloseINT0();//關(guān)閉串口接受中斷UCSR0B|=BIT(UDRIE0);//打開串口發(fā)送中斷}(3)返回數(shù)據(jù)解析(只以瞬時流量為例)數(shù)據(jù)接收使用串口中斷,ReceivedBuffer_485為接收數(shù)據(jù)組,ReceivedNum_485為接收到數(shù)據(jù)長度,ReceivedFlag_485接收到數(shù)據(jù)標(biāo)志。函數(shù)floatDatasum(INT8UBYTE1,INT8UBYTE2,INT8UBYTE3,INT8UBYTE4)把浮點數(shù)的4個字節(jié)轉(zhuǎn)換為1個浮點數(shù)。floatDatasum(INT8UFloatByte1,INT8UFloatByte2,INT8UFloatByte3,INT8UFloatByte4){floataa;unionIntTOFP{FP32F32;INT8UT8[4];};unionIntTOFPaa;aa.T8[0]=FloatByte1;aa.T8[1]=FloatByte2;aa.T8[2]=FloatByte3;aa.T8[3]=FloatByte4;returnaa;}voidRead_Lmag(INT8UAd){INT8Ui,j;INT8UNum1[10],BIT;INT16UCRC1,CRC2;FP32Flow;//aaa為瞬時流量數(shù)值ReceivedFlag_485=1;Open_Time1_Ms5(20);Read_InPut(Ad,0x1010,2);//發(fā)送設(shè)備地址、寄存器地址、寄存器長度while(ReceivedFlag_485);//等待接收結(jié)束if((ReceivedNum_485==9)&&(ReceivedBuffer_485[0]==Ad))//判斷數(shù)據(jù)是否正確{CRC1=CRC16(ReceivedBuffer_485,7);CRC2=ReceivedBuffer_485[7]*256+ReceivedBuffer_485[8];if(CRC1==CRC2){//轉(zhuǎn)換數(shù)據(jù)為浮點數(shù)Flow=Datasum(ReceivedBuffer_485[6],ReceivedBuffer_485[5],ReceivedBuffer_485[4],ReceivedBuffer_485[3]);}}}2.modbus調(diào)試軟件modbuspoll通訊實例以從站地址為1,波特率9600,讀取所有實時數(shù)據(jù)為例設(shè)置方法如下:按照表2所示:起始寄存器地址4113寄存器個數(shù)為221.設(shè)置采集命令包括設(shè)備地址(1)、MODBUS功能碼(04)、寄存器地址(4113)、寄存器長度(2)、采集間隔(1000)。2.設(shè)置串口數(shù)據(jù)根據(jù)電磁流量計串口格式(1位起始位8位數(shù)據(jù)位1位停止位,無校驗)設(shè)置如下圖:3.設(shè)置數(shù)據(jù)顯示格式4.通訊成功界面3.modbus調(diào)試軟件modscan32通訊實例以從站地址為1,波特率9600,讀取所有實時數(shù)據(jù)為例設(shè)置方法如下:按照表2所示:起始寄存器地址4113寄存器個數(shù)為221.設(shè)置采集命令包括設(shè)備地址(1)、MODBUS功能碼(04)、寄存器地址(4113)、寄存器長度(2)、采集間隔(1000)。2.設(shè)置串口數(shù)據(jù)根據(jù)電磁流量計串口格式(1位起始位8位數(shù)據(jù)位1位停止位,無校驗)設(shè)置如下圖:3.設(shè)置數(shù)據(jù)顯示方式4.通訊成功界面4.組態(tài)王6.53通訊實例第一步:創(chuàng)建組態(tài)王工程,點擊新建彈出如下界面,輸入工程路徑及工程名稱。第二步:打開新建的工程,選擇設(shè)備欄在COM口下新建標(biāo)準(zhǔn)modbus設(shè)備。組態(tài)王設(shè)備列表中找到-PLC-莫迪康-modbus(RTU)(電磁流量計借助莫迪康PLCmodbus(RTU)驅(qū)動)。按照電磁流量計中的地址設(shè)置設(shè)備地址。下圖以地址1為例:第三步:雙擊設(shè)備中的COM設(shè)置串口參數(shù)電磁流量計串口參數(shù):波特率與電磁流量計中設(shè)置相同、1位起始位、8位數(shù)據(jù)位、1位停止位、無校驗。下圖以波特率9600為例:第四步:點擊數(shù)據(jù)詞典添加數(shù)據(jù)變量根據(jù)組態(tài)王驅(qū)動說明莫迪康-modbus(RTU)變量名稱、寄存器地址和數(shù)據(jù)格式見下表:變量名寄存器值數(shù)據(jù)格式采用頻率讀寫屬性瞬時流量34113Float

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論