视频二区制服丝袜人妻欧美,亚洲欧美日韩中文高清WWW777 ,丰满少妇女人A毛片视频,国产成人精品日本亚洲11,亚洲国产成人手机在线电影 ,午夜福利一区二区,中文字幕乱码一区二区免费,国产精品高清一区二区不卡

      AMF電磁流量計(jì)通信協(xié)議

      2016/7/15 21:02:33 人評(píng)論 次瀏覽 分類(lèi):流量測(cè)量  文章地址:http://m.fg316.com/tech/908.html

      本電磁流量計(jì)通信協(xié)議針對(duì)AMF智能電磁流量計(jì)工業(yè)應(yīng)用設(shè)計(jì),通信協(xié)議版本:AMF CP V1.1。通信協(xié)議主要用于電磁流量計(jì)實(shí)時(shí)數(shù)據(jù)采集、流量測(cè)量及流量累計(jì)控制。
      電磁流量計(jì)

      一、主機(jī)系統(tǒng)通訊部件要求

      國(guó)際標(biāo)準(zhǔn)RS-485通訊接口部件,不小于10Bytes的通信緩沖區(qū)(FIFO),支持600、1200、2400、4800、9600、14400通訊波特率,支持半雙工通訊模式。通訊程序應(yīng)允許FIFO,從機(jī)要求主機(jī)FIFO不小于10Bytes。

      二、協(xié)議結(jié)構(gòu)
      AMF CP V1.1協(xié)議遵從基本開(kāi)放系統(tǒng)互連(OSI)參考模型,基本開(kāi)放系統(tǒng)互連參照模型提供通訊系統(tǒng)基本結(jié)構(gòu)和要素,但昌暉AMF CP V1.1協(xié)議使用簡(jiǎn)化的OSI參照模型,僅采用1、2和7層。基本開(kāi)放系統(tǒng)互連參考模型

      三、AMF電磁流量計(jì)通信協(xié)議物理結(jié)構(gòu)
      AMF電磁流量計(jì)的網(wǎng)絡(luò)通訊接口在物理結(jié)構(gòu)上采用電氣隔離方式,隔離電壓1500伏。通訊數(shù)據(jù)傳輸接口為半雙工方式,標(biāo)準(zhǔn)通訊速率大于250khz,通訊方向轉(zhuǎn)換時(shí)間3.5uS。通訊接口電氣標(biāo)準(zhǔn)遵從RS-485國(guó)際標(biāo)準(zhǔn)。
      昌暉AMF CP V1.1協(xié)議可用于星型式網(wǎng)絡(luò)結(jié)構(gòu)和總線式網(wǎng)絡(luò)結(jié)構(gòu)。標(biāo)準(zhǔn)通訊連接介質(zhì)為屏蔽雙絞線。


      四、AMF CP V1.1主機(jī)信息結(jié)構(gòu)

      AMF CP V1.1協(xié)議為主從掃描式通訊協(xié)議,每次通訊過(guò)程均由主機(jī)發(fā)起,然后從機(jī)進(jìn)行響應(yīng),回傳規(guī)定的信息,完成一次通訊過(guò)程。
      主機(jī)至從機(jī)信息結(jié)構(gòu)

      主機(jī)發(fā)送至從機(jī)的信息由兩字節(jié)組成,第一字節(jié)為從機(jī)地址,其編碼:0-127(最高二進(jìn)制位另有定義),第一字節(jié)為數(shù)據(jù)分類(lèi)命令(下表定義)。從機(jī)通訊緩沖區(qū)(FIFO)為兩字節(jié),因此,主機(jī)發(fā)送至從機(jī)的兩字節(jié)可連續(xù)發(fā)送,不必留時(shí)間間隔。
      從機(jī)工作在多機(jī)通訊方式,因此,主機(jī)應(yīng)使用11位串行數(shù)據(jù)格式,并且不使用奇偶校驗(yàn),將奇偶校驗(yàn)位作多機(jī)通訊尋址標(biāo)志使用。主機(jī)發(fā)送第一個(gè)字節(jié)時(shí),奇偶校驗(yàn)位強(qiáng)制為1,發(fā)送第二個(gè)字節(jié)時(shí),奇偶校驗(yàn)位強(qiáng)制為0。(見(jiàn)附錄一)
      數(shù)據(jù)分類(lèi)命令

      數(shù)據(jù)分類(lèi)命令指示從機(jī)回送的數(shù)據(jù)類(lèi)型,數(shù)據(jù)分類(lèi)命令編碼:0---127,昌暉AMF CP V1.1 僅使用0—9號(hào)編碼,其他編碼暫時(shí)保留。

      五、AMF CP V1.1從機(jī)信息結(jié)構(gòu)
      從機(jī)接受到主機(jī)命令信息后,按命令要求回傳測(cè)量數(shù)據(jù)。
      從機(jī)響應(yīng)信息數(shù)據(jù)結(jié)構(gòu)

      從機(jī)響應(yīng)主機(jī)命令,回送10個(gè)字節(jié)數(shù)據(jù),分為命令段、數(shù)據(jù)段、校驗(yàn)和、結(jié)束標(biāo)志四部分。
      1、命令段
      命令段由兩字節(jié)組成:從機(jī)地址和數(shù)據(jù)分類(lèi)命令,該段是將主機(jī)發(fā)來(lái)的信息直接返回,用于主機(jī)校驗(yàn)從機(jī)對(duì)主機(jī)傳送信息中地址和命令響應(yīng)的正確性。 
      2、數(shù)據(jù)段
      由于流量計(jì)各測(cè)量數(shù)據(jù)長(zhǎng)度、單位、符號(hào)等信息各不相同,因此,從機(jī)回傳的數(shù)據(jù)段按各命令具體定義。
      (1)流量信息定義
      數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成十位流量測(cè)量數(shù)據(jù),每字節(jié)表示兩位十進(jìn)制數(shù),每字節(jié)表示的十進(jìn)制數(shù)值范圍:0-99。

      主機(jī)恢復(fù)流量測(cè)量值十進(jìn)制數(shù)據(jù)的算法:
      a)流動(dòng)方向
      將D4D3D2D1D0 恢復(fù)成十六進(jìn)制數(shù)據(jù)DATA_HEX;若DATA_HEX<80000000H則流動(dòng)方向?yàn)檎蝗鬌ATA_HEX>=80000000H則智能電磁流量計(jì)流體流動(dòng)方向?yàn)樨?fù); 
      b)原數(shù)據(jù)
      將DATA_HEX中的最高位(符號(hào)位)消掉,得到無(wú)符號(hào)原數(shù)據(jù);即原數(shù)據(jù)=DATA_HEX與7FFFFFFFH;流量測(cè)量數(shù)據(jù)最大值為99999
      D5字節(jié)以段位方式定義流量單位、小數(shù)點(diǎn)位置:
      5位定義

      流量單位定義:0----L/S(升/秒)
                    1----L/M(升/分)
                    2----L/H(升/時(shí))
                    3----M3/S(立方米/秒)
                    4----M3/M(立方米/分)
                    5----M3/H(立方米/時(shí))
      小數(shù)點(diǎn)位置:  4 -------±.00000
                    5 -------±0.0000
                    6 -------±00.000
             7 -------±000.00
             8 -------±0000.0
             9 -------±00000;
                   10 ------±00000×10
               .  
               .
               .
             13-------±00000×10000
      (2)流速信息定義
      數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成十位流速測(cè)量數(shù)據(jù),每字節(jié)表示兩位十進(jìn)制數(shù),每字節(jié)表示的十進(jìn)制數(shù)值范圍:0-99。

      主機(jī)恢復(fù)流速十進(jìn)制數(shù)據(jù)的算法:
      a)流動(dòng)方向?qū)4D3D2D1D0恢復(fù)成十六進(jìn)制數(shù)據(jù)DATA_HEX;若DATA_HEX<80000000H則流動(dòng)方向?yàn)檎蝗鬌ATA_HEX>=80000000H則流動(dòng)方向?yàn)樨?fù)。       
      b)原數(shù)據(jù)
      將DATA_HEX中的最高位(符號(hào)位)消掉,得到無(wú)符號(hào)原數(shù)據(jù);即原數(shù)據(jù)=DATA_HEX與7FFFFFFFH;流量測(cè)速數(shù)據(jù)最大值為19.999。
      D5無(wú)定義:
      流速單位固定:m/S(米/秒)。
      數(shù)點(diǎn)位置固定:±00.000。

      (3)流量百分比信息定義
      數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成十位流量百分比測(cè)量數(shù)據(jù),每字節(jié)表示兩位十進(jìn)制數(shù),每字節(jié)表示的十進(jìn)制數(shù)值范圍:0-99。

      主機(jī)恢復(fù)流量百分比十進(jìn)制數(shù)據(jù)的算法:
      a)流動(dòng)方向
      將D4D3D2D1D0 恢復(fù)成十六進(jìn)制數(shù)據(jù)DATA_HEX;若DATA_HEX<80000000H則流動(dòng)方向?yàn)檎蝗鬌ATA_HEX>=80000000H則流動(dòng)方向?yàn)樨?fù)。
      b)原數(shù)據(jù)
      將DATA_HEX中的最高位(符號(hào)位)消掉,得到無(wú)符號(hào)原數(shù)據(jù);即原數(shù)據(jù)=DATA_HEX與7FFFFFFFH;流量測(cè)量百分比數(shù)據(jù)最大值為999.99。
      D5無(wú)定義:
      向定義: 0-----流體正向流動(dòng)
               1-----流體反向流動(dòng)
      流量百分比單位固定:%
      數(shù)點(diǎn)位置固定:±0000.0%

      (4)流體電導(dǎo)比信息定義
      數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成十位電導(dǎo)比測(cè)量數(shù)據(jù),每字節(jié)表示兩位十進(jìn)制數(shù)。

      主機(jī)恢復(fù)流體電導(dǎo)比十進(jìn)制數(shù)據(jù)的算法:原數(shù)據(jù)=10000×D2+100×D1+D0;流體電導(dǎo)比測(cè)量數(shù)據(jù)最大值為999.9。
      D5無(wú)定義。
      流體電導(dǎo)比單位固定:%
      小數(shù)點(diǎn)位置固定:000.0%

      (5)正向流量累積信息定義
      數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成十位正向流量測(cè)量數(shù)據(jù),每字節(jié)表示兩位十進(jìn)制數(shù)。

      主機(jī)恢復(fù)流量十進(jìn)制數(shù)據(jù)的算法:原數(shù)據(jù)=100000000×D4+1000000×D3+10000×D2+100×D1+D0;流量累積數(shù)據(jù)最大值為4294967296(十六進(jìn)制0FFFFFFFFH)。
      D5字節(jié)以段位方式定義流量單位、小數(shù)點(diǎn)位置:
      D5字節(jié)位定義

      小數(shù)點(diǎn)位置及單位:0 ------- 1L
               1 ------- 0.1L
               2 ------- 0.01L 
               3 ------- 0.001L
               4 ------- 1m3
               5 ------- 0.1 m3
               6 ------- 0.01 m3     
               7 ------- 0.001 m3

      (6)反向流量累積信息定義
      反向流量累積信息定義同正向流量累積信息定義。

      (7)報(bào)警狀態(tài)信息定義
      數(shù)據(jù)段的D1、D0兩個(gè)字節(jié)組成二進(jìn)制報(bào)警狀態(tài)。

      主機(jī)恢復(fù)報(bào)警狀態(tài)二進(jìn)制數(shù)據(jù)的算法:原數(shù)據(jù)(二進(jìn)制)=D0
      報(bào)警狀態(tài)定義


      (8)流量計(jì)管徑信息定義

      數(shù)據(jù)段的D0字節(jié)指示流量計(jì)管徑


      (9)禁止流量累積信息定義

      從機(jī)接到該命令后,立即停止流量累積,并回送命令認(rèn)可信息。停止流量累積延續(xù)時(shí)間為20秒,20秒后從機(jī)自動(dòng)恢復(fù)流量累積計(jì)算。因此,若想連續(xù)禁止流量累積計(jì)算,必須以小于20秒的間隔,向從機(jī)發(fā)送該命令。該功能可用于斷續(xù)過(guò)程計(jì)量。
      回送的命令認(rèn)可信息由數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成。

      主機(jī)恢復(fù)命令認(rèn)可信息碼的算法:命令認(rèn)可信息碼=100000000×D4+1000000×D3+10000×D2+100×D1+D0;正確的命令認(rèn)可信息碼=2A3A4A5AH(十六進(jìn)制)。

      (10)啟動(dòng)流量累積信息定義
      從機(jī)接到該命令后,立即啟動(dòng)流量累積計(jì)算,并回送命令認(rèn)可信息。該功能可用于斷續(xù)過(guò)程計(jì)量。
      命令認(rèn)可信息由數(shù)據(jù)段的D4、D3、D2、D1、D0五個(gè)字節(jié)組成。

      主機(jī)恢復(fù)命令認(rèn)可信息碼的算法:命令認(rèn)可信息碼=100000000×D4+1000000×D3+10000×D2+100×D1+D0;正確的命令認(rèn)可信息碼=5A4A3A2AH(十六進(jìn)制)。

      3.校驗(yàn)和
      從機(jī)回傳的數(shù)據(jù)校驗(yàn)和為前八個(gè)字節(jié)的異或和。
      異或和(byte8) = byte0 ⊕ byte1 ⊕ byte2 …………byte6 ⊕ byte7;
      4.信息塊結(jié)束標(biāo)志
      從機(jī)以結(jié)束標(biāo)志表示本次回傳信息塊完畢。結(jié)束標(biāo)志編碼為:0AAH(通訊結(jié)束命令,十六進(jìn)制格式)。

      六、昌暉AMF CP V1.1通訊過(guò)程時(shí)序
      通訊過(guò)程時(shí)序指編制通訊軟件時(shí)應(yīng)遵從的時(shí)間間隔、延時(shí)、等待時(shí)間等。
      1、主機(jī)發(fā)送時(shí)序
      主機(jī)發(fā)送的兩個(gè)信息字節(jié)間的時(shí)間間隔最小為0,最大時(shí)間間隔為20毫秒,大于20毫秒,從機(jī)認(rèn)為發(fā)送超時(shí)。
      2、從機(jī)回傳時(shí)序
      從機(jī)最小回傳響應(yīng)時(shí)間為0,最大為10毫秒+11位傳送時(shí)間;從機(jī)每個(gè)回傳字節(jié)時(shí)間間隔最大為10毫秒+11位傳送時(shí)間。(11位傳送時(shí)間根據(jù)選用波特率計(jì)算出)
      3、從機(jī)允許的通訊頻度
      從機(jī)允許的通訊頻度為20次/每秒,大于該值,可能影響從機(jī)其他功能。

      七、AMF電磁流量計(jì)通信協(xié)議波特率
      昌暉AMF CP V1.1支持的通訊波特率為:600、1200、2400、4800、9600、14400。

      八、AMF CP V1.1通訊數(shù)據(jù)塊偵錯(cuò)信息
      1、從機(jī)地址和數(shù)據(jù)分類(lèi)命令回傳,主機(jī)可用于校對(duì)從機(jī)是否正確響應(yīng)。
      2、從機(jī)回傳字節(jié)異或和校驗(yàn),主機(jī)可用于校對(duì)是否有數(shù)據(jù)位錯(cuò)誤。
      3、從機(jī)回傳字節(jié)中B7 = 0為數(shù)據(jù)字節(jié),B7 = 1為命令字節(jié)。
      4、從機(jī)回傳字節(jié)中的數(shù)據(jù)字節(jié)值不大于99。
      5、從機(jī)回傳字節(jié)數(shù)長(zhǎng)度固定,共十字節(jié)長(zhǎng)度,主機(jī)可做長(zhǎng)度檢驗(yàn)。
      6、從機(jī)回傳結(jié)束標(biāo)志,主機(jī)可用于長(zhǎng)度檢驗(yàn)和數(shù)據(jù)字節(jié)定位。

      九、AMF電磁流量計(jì)標(biāo)準(zhǔn)通訊網(wǎng)絡(luò)連接圖
              附錄一  通訊實(shí)驗(yàn)程序
                 (MSDOS TURBO C)

      #incLude<stdio.h>
      #incLude<io.h>

      /*  MODE setting        */
      #define BIT_5       0x00            /* Word Length define   */
      #define BIT_6       0x01
      #define BIT_7       0x02
      #define BIT_8       0x03

      #define STOP_1      0x00            /* Stop bits define */
      #define STOP_2      0x04

      #define P_EVEN      0x18            /* Parity define    */
      #define P_ODD       0x08
      #define P_SPC       0x38            /* Set tb = 0       */
      #define P_MARK      0x28            /* Set tb = 1       */
      #define P_NONE      0x00

      #define I_RDA       0x01       /* EnabLe recieve-data-avaiLabLe interrupt */
      #define I_TRE       0x02   /* EnabLe transmitter-hoLding-register-empty interrupt */
      #define I_RLS       0x04       /* EnabLe recieve-Line-status interrupt */
      #define I_MS        0x08       /* EnabLe modem-status interrupt */
      #define I_NON       0x00       /* DisabLe interrupt */

      #define B600        0xc0
      #define B1200       0x60
      #define B2400       0x30
      #define B4800       0x18
      #define B9600       0x0C
      #define B14400      0x08

      #define COM1_ADDR  0x3e8

      unsigned char  COMM_Buf[100];
      unsigned char   baud_rate;
      unsigned int error_cnt;

      void SioInit_1(void)
      {
        outportb(COM1_ADDR + 2, 0xcf);   /* EnabLe FIFO and cLear FIFO  */
        outportb(COM1_ADDR + 3, 0x80);   /* Set DLAB = 1  */

        /* Set bps */
        outportb(COM1_ADDR,     baud_rate % 256);
        outportb(COM1_ADDR + 1, baud_rate / 256);

        outportb(COM1_ADDR + 3, BIT_8 | STOP_1 | P_MARK);   /* 11 bits mode & P = 1 */
        outportb(COM1_ADDR + 1, I_NON);                     /* disabLe interrupt */
      }

      void SioInit_0(void)
      {
        outportb(COM1_ADDR + 2, 0xcf);             /* EnabLe FIFO and cLear FIFO  */
        outportb(COM1_ADDR + 3, 0x80);             /* Set DLAB = 1  */

        /* Set bps */
        outportb(COM1_ADDR,     baud_rate % 256);
        outportb(COM1_ADDR + 1, baud_rate / 256);
        outportb(COM1_ADDR + 3, BIT_8 | STOP_1 | P_SPC);  /* 11 bits mode & P = 0 */
        outportb(COM1_ADDR + 1, I_NON);                   /* disabLe interrupt */
      }

      int SioRecieve()
      { unsigned k;
        for (k=0;k<10000;k++)
          {if((inportb(COM1_ADDR + 5) & 1) == 1)
           { return inportb(COM1_ADDR); }
            deLay(1);
          }
        return 0;
      }

      void SioSend(unsigned char data)
      { outportb(COM1_ADDR,data);  /* Send data */
        whiLe((inportb(COM1_ADDR + 5) & 0x40) == 0){}
      }

      main()
      { int i; 
      unsigned char ch_n;
        unsigned char ch;
        int cnnt;

        baud_rate = B14400;

        cnnt=0;
        error_cnt = 0;
        ch_n = 0;
        for(;;) {
         SioInit_1();
         cnnt++;
         cprintf("%03d ",cnnt);
         cprintf("Send Data  ");

         ch = 0x03;
         SioSend(ch);
         outportb(COM1_ADDR + 3, BIT_8 | STOP_1 | P_SPC);
         SioSend(ch_n);
         ch_n = (ch_n + 1) & 7;
         for (i=0;i<10;i++) { COMM_Buf[i] = SioRecieve(); }
         deLay(20);
         for (i=0;i<10;i++) { cprintf("%03d ",COMM_Buf[i]); }
         if ((COMM_Buf[9] != 0xaa) && (COMM_Buf[9] != 0)) { error_cnt++; }
         cprintf("%05d\n\r",error_cnt);
         deLay(20);
         }
      }

      共有訪客發(fā)表了評(píng)論 網(wǎng)友評(píng)論

        客戶(hù)姓名:
      郵箱或QQ:
      驗(yàn)證碼: 看不清楚?