色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文了解串口通訊與MODBUS協(xié)議

jf_78858299 ? 來源:機(jī)器人配視覺 ? 作者:機(jī)器人配視覺 ? 2023-03-23 09:59 ? 次閱讀

1. 基本的通訊方式

基本的通訊方式有并行通訊和串行通訊兩種。

并行通信:是指數(shù)據(jù)的各位同時(shí)進(jìn)行傳送的通信方式。

串行通信:是指數(shù)據(jù)一位一位順序傳送的通信方式。

2. 串行通訊的兩種方式

串行通信的兩種基本形式:同步通信和異步通信。

異步通信所傳輸?shù)臄?shù)據(jù)幀格式是由1個(gè)起始位、1~9個(gè)數(shù)據(jù)位、1~2個(gè)停止位組成,依靠起始位和停止位保持同步;

同步通信所傳輸數(shù)據(jù)幀格式是由多個(gè)字節(jié)組成的一個(gè)幀,每個(gè)幀都有兩個(gè)(或一個(gè))同步字符作為起始位以觸發(fā)同步時(shí)鐘開始發(fā)送或接收數(shù)據(jù)。

3. 根據(jù)傳送方向分類

根據(jù)信息的傳送方向,串行通訊可以進(jìn)一步分為單工、半雙工和全雙工三種。 如果在通信過程的任意時(shí)刻,信息只能由一方A傳到另一方B,則稱為單工。如果在任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但只能由一個(gè)方向上的傳輸存在,稱為半雙工傳輸。如果在任意時(shí)刻,線路上存在A到B和B到A的雙向信號(hào)傳輸,則稱為全雙工。

圖片

4. 串行通訊接口

串行通訊物理接口按電氣標(biāo)準(zhǔn)及協(xié)議來分包括RS-232、RS-422、RS485等,這里主要講一些最常用的RS485接口。

5. RS485接口電路

圖片

作為一個(gè)經(jīng)常被應(yīng)用到的SP485R芯片的示范電路,可以被直接嵌入實(shí)際的RS-485應(yīng)用電路中。微處理器的標(biāo)準(zhǔn)串行口通過RXD 直接連接SP485R 芯片的RO 引腳,通過TXD直接連接SP485R 芯片的DI 引腳。

由微處理器輸出的R/D 信號(hào)直接控制SP485R 芯片的發(fā)送器/接收器使能:R/D 信號(hào)為“1”,則SP485R 芯片的發(fā)送器有效,接收器禁止,此時(shí)微處理器可以向RS-485 總線發(fā)送數(shù)據(jù)字節(jié);R/D 信號(hào)為“0”,則SP485R 芯片的發(fā)送器禁止,接收器有效,此時(shí)微處理器可以接收來自RS-485 總線的數(shù)據(jù)字節(jié)。此電路中,任一時(shí)刻SP485R 芯片中的“接收器”和“發(fā)送器”只能夠有1 個(gè)處于工作狀態(tài)。

連接至A 引腳的上拉電阻R7、連接至B 引腳的下拉電阻R8 用于保證無連接的SP485R芯片處于空閑狀態(tài),提供網(wǎng)絡(luò)失效保護(hù),以提高RS-485 節(jié)點(diǎn)與網(wǎng)絡(luò)的可靠性。

如果將SP485R 連接至微處理器80C51 芯片的UART 串口,則SP485R 芯片的RO 引腳不需要上拉;否則,需要根據(jù)實(shí)際情況考慮是否在RO 引腳增加1 個(gè)大約10K 的上拉電阻。

6. 串口MODBUS通訊

Modbus作為工業(yè)通信回路中數(shù)據(jù)交換的規(guī)則已經(jīng)被廣泛地應(yīng)用在各個(gè)領(lǐng)域,使得具有Modbus 通信協(xié)議的設(shè)備方便通信,例如PLC、變頻器、流量計(jì)、溫濕度、上位機(jī)組態(tài)軟件、各種傳感器儀表等。

Modbus通信協(xié)議分為兩種串行通信模式,ASCII 和RTU 通信模式。在使用時(shí),需要先設(shè)定通信模式以及串行口RS232、RS485的通信參數(shù)(波特率,奇偶校驗(yàn),從機(jī)地址,數(shù)據(jù)位,停止位,字節(jié)順序),在Modbus 總線上的所有設(shè)備應(yīng)具有相同的通信模式和串行通信參數(shù)

modbus信息幀結(jié)構(gòu)組成

  1. MODBUS命令報(bào)文

讀數(shù)據(jù)

主站發(fā)送

地址 功能碼 數(shù)據(jù)起始地址高位 數(shù)據(jù)起始地址低位 數(shù)據(jù)個(gè)數(shù)高位 數(shù)據(jù)個(gè)數(shù)低位 CRC16高位 CRC16低位

返回:

地址 功能碼 字節(jié)長度 數(shù)據(jù)1高位 數(shù)據(jù)1低位 數(shù)據(jù)2高位 數(shù)據(jù)2低位 CRC16高位 CRC16低位

8. MODBUS關(guān)鍵概念

(1)上位機(jī)讀取數(shù)據(jù)每次間隔時(shí)間一般不小于100ms

(2)設(shè)備地址:MODBUS從機(jī)通訊地址,在一個(gè)網(wǎng)絡(luò)中不能有兩個(gè)相同的地址。(3)功能碼:MODBUS 協(xié)議規(guī)定的功能碼

(4)寄存器地址和寄存器數(shù)

主站命令中的參數(shù)是從寄存器地址開始的寄存,讀寄存器長度的N個(gè)寄存器。(5)從站響應(yīng)數(shù)據(jù)

從站響應(yīng)數(shù)據(jù)是:字節(jié)數(shù)和N個(gè)數(shù)字節(jié)數(shù)據(jù)。

9. MODBUS主站常用操作

1)讀優(yōu)化:對(duì)于不連續(xù)地址的數(shù)據(jù)讀取,是否采取打包讀,則系統(tǒng)使用打包讀命令,一次性完成多個(gè)地址的讀取。

2)讀優(yōu)化間隔:讀優(yōu)化時(shí),若地址之間小于此間隔,則會(huì)打包到一起,使用多讀命令一次讀取。

3)最大包長:一次通訊允許的最大數(shù)據(jù)長度。

4)字節(jié)順序:調(diào)整32位雙字的解碼順序。

以32位整數(shù)為例,說明字節(jié)順序的含義:

1234:表示雙字元件不做處理直接解碼,。

例如:從串口讀到的數(shù)據(jù)為0000 00 01 表示 1。

2143:表示雙字元件高低字不顛倒,但字內(nèi)高低字節(jié)顛倒。

例如:從串口讀到的數(shù)據(jù)為0000 00 01 表示 0x00000100 (即256)。

3412:表示雙字元件高低字顛倒,但字內(nèi)高低字節(jié)不顛倒。

例如:從串口讀到的數(shù)據(jù)為0000 00 01 表示 0x00010000 (即65536)。

4321:表示雙字元件內(nèi)4個(gè)字節(jié)全部顛倒。

例如:從串口讀到的數(shù)據(jù)為00 00 00 01 表示 0x0100 0000 (即1677 721

10. C語言MODBUS程序

(1).CRC16算法

INT16U CRC16(INT8U *puchMsg, INT16U usDataLen)

{

INT8U uchCRCHi = 0xFF; /* 高CRC字節(jié)初始化 */

INT8U uchCRCLo = 0xFF; /* 低CRC 字節(jié)初始化 */

INT8U uIndex; /* CRC循環(huán)中的索引 */

while (usDataLen--) /* 傳輸消息緩沖區(qū) */

{

uIndex = uchCRCHi ^*puchMsg++;   /* 計(jì)算CRC */

  uchCRCHi = uchCRCLo ^auchCRCHi[uIndex];

  uchCRCLo = auchCRCLo[uIndex];

}

return (uchCRCHi << 8 |uchCRCLo);

}

(2)發(fā)送命令程序

本例程以Mag64為核心CPU

void Read_InPut(INT8U Addr,INT16UStart,INT16U Len)

{

INT16U CRC;

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校驗(yàn)高位

SendBuffer_485[7]=CRC%256; //CRC校驗(yàn)低位

R485_OUT; //使能RS485發(fā)送

SendLen_485=8;

SendNum_485=0;

CloseINT0(); //關(guān)閉串口接受中斷

UCSR0B |= BIT(UDRIE0); //打開串口發(fā)送中斷

}

(3)返回?cái)?shù)據(jù)解析

數(shù)據(jù)接收使用串口中斷,ReceivedBuffer_485為接收數(shù)據(jù)組,ReceivedNum_485為接收到數(shù)據(jù)長度,ReceivedFlag_485接收到數(shù)據(jù)標(biāo)志。函數(shù)float Datasum(INT8UBYTE1, INT8U BYTE2, INT8U BYTE3, INT8U BYTE4)把浮點(diǎn)數(shù)的4個(gè)字節(jié)轉(zhuǎn)換為1個(gè)浮點(diǎn)數(shù)。

float Datasum(INT8U FloatByte1, INT8U FloatByte2,INT8U FloatByte3, INT8U FloatByte4)

{

float aa;

union IntTOFP

{

FP32       F32;

  INT8U      T8[4];

};

union IntTOFPaa;

aa.T8[0] = FloatByte1;

aa.T8[1] = FloatByte2;

aa.T8[2] = FloatByte3;

aa.T8[3] = FloatByte4;

return aa;

}

void Read_Lmag(INT8U Ad)

{

INT8U i,j;

INT8U Num1[10],BIT;

INT16UCRC1,CRC2;

FP32 Flow; //aaa為瞬時(shí)流量數(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ù)為浮點(diǎn)數(shù)

Flow= Datasum(ReceivedBuffer_485[6], ReceivedBuffer_485[5], ReceivedBuffer_485[4] ,ReceivedBuffer_485[3]);

}

}

}

11. MODBUS調(diào)試軟件MODBUS PULL

以從站地址為1,波特率9600,讀取所有實(shí)時(shí)數(shù)據(jù)為例設(shè)置方法如下:

按照表2所示:起始寄存器地址4113 寄存器個(gè)數(shù)為22

  1. 設(shè)置采集命令包括設(shè)備地址(1)、MODBUS功能碼(04)、寄存器地址(4113)、寄存器長度(2)、采集間隔(1000)。

圖片

2.設(shè)置串口數(shù)據(jù)

根據(jù)從機(jī)串口格式(1位起始位 8位數(shù)據(jù)位 1位停止位,無校驗(yàn))設(shè)置如下圖:

圖片

3.設(shè)置數(shù)據(jù)顯示格式

圖片

4.通訊成功界面

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7010

    瀏覽量

    88978
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1804

    瀏覽量

    76975
  • 異步通信
    +關(guān)注

    關(guān)注

    1

    文章

    57

    瀏覽量

    10128
  • 同步時(shí)鐘
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    3224
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Modbus協(xié)議轉(zhuǎn)Profibus協(xié)議網(wǎng)關(guān)接溫控表與PLC通訊

    Modbus協(xié)議轉(zhuǎn)Profibus協(xié)議網(wǎng)關(guān)(XD-MDPB100)則是實(shí)現(xiàn)這一通訊的重要工具。Modbus轉(zhuǎn)Profibus網(wǎng)關(guān)的主要功能是實(shí)現(xiàn)Mo
    的頭像 發(fā)表于 06-21 11:31 ?1910次閱讀
    <b class='flag-5'>Modbus協(xié)議</b>轉(zhuǎn)Profibus<b class='flag-5'>協(xié)議</b>網(wǎng)關(guān)接溫控表與PLC<b class='flag-5'>通訊</b>

    基于modbus協(xié)議串口通信

    RT:小弟求教各位大神,用labvIEW怎么做基于modbus協(xié)議串口通信啊??怎么編程啊??
    發(fā)表于 12-04 19:57

    如何使用modbus協(xié)議實(shí)現(xiàn)labview的串口通訊?

    如何使用modbus協(xié)議實(shí)現(xiàn)labview的串口通訊,校驗(yàn)碼又是什么?它們都是子vi嗎?
    發(fā)表于 09-23 14:17

    哪位大神能給個(gè)labview利用modbus協(xié)議進(jìn)行串口通訊的例程?。?/a>

    從論文里找,發(fā)現(xiàn)關(guān)于modbus協(xié)議串口通訊,大家給的例程都是關(guān)于CRC或者LRC校驗(yàn)的程序。本人菜鳥,最近剛在NI官網(wǎng)下了modbus庫,發(fā)現(xiàn)這里也有類似于VISA的控件,不知道怎
    發(fā)表于 06-13 15:10

    modbus協(xié)議筆記

    1 Modbus協(xié)議概要? Modbus通信協(xié)議由Modicon公司(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為可編程邏輯控制(即PLC)通信而發(fā)表。目前,Modbu
    發(fā)表于 07-02 07:17

    Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?

    請(qǐng)問Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?
    發(fā)表于 07-15 12:04

    Modbus協(xié)議是什么

    Modbus協(xié)議是什么?MODBUS功能碼有哪些?MODBUS協(xié)議有哪幾種傳輸模式?
    發(fā)表于 09-29 07:06

    Modbus協(xié)議的相關(guān)資料推薦

    認(rèn)識(shí)Modbus協(xié)議
    發(fā)表于 02-11 06:02

    讀懂Modbus協(xié)議

    Modicon被施耐德(Schneider)收購,Modbus協(xié)議廣泛應(yīng)用在工業(yè)控制器、HMI和傳感器上,逐漸被其他廠商所接受,成為了種主流的通訊協(xié)議,用于和外圍設(shè)備進(jìn)行
    發(fā)表于 10-28 14:23

    Modbus協(xié)議的理解

      當(dāng)上位機(jī)和下位機(jī)進(jìn)行通訊或多個(gè)微控制器進(jìn)行通訊時(shí)需要進(jìn)行通訊,很常用的種就是通過串口收發(fā)命令,在簡單的系統(tǒng)中可以自己定義
    發(fā)表于 05-05 16:47

    基于Modbus協(xié)議串口通訊程序_RS485總線系統(tǒng)應(yīng)用

    本文在遵循Modbus協(xié)議的基礎(chǔ)上,闡述了Modbus的兩種傳輸模式和串口通訊程序的設(shè)計(jì)實(shí)例,并給出了VB語言的程序清單。
    發(fā)表于 01-03 18:51 ?1.7w次閱讀
    基于<b class='flag-5'>Modbus協(xié)議</b>的<b class='flag-5'>串口</b><b class='flag-5'>通訊</b>程序_RS485總線系統(tǒng)應(yīng)用

    Modbus協(xié)議最基礎(chǔ)概念詳細(xì)介紹

    認(rèn)識(shí)Modbus協(xié)議
    發(fā)表于 12-07 17:06 ?18次下載
    <b class='flag-5'>Modbus協(xié)議</b>最基礎(chǔ)概念詳細(xì)介紹

    基于Modbus協(xié)議通訊的DEMO稱重程序

    EMERSONEV1000/EV2000變頻器與MITSUBISHFX2PLC基于Modbus協(xié)議通訊的DEMO程序、硬件連接二、通訊方式Modb
    的頭像 發(fā)表于 02-14 10:05 ?1211次閱讀
    基于<b class='flag-5'>Modbus協(xié)議</b><b class='flag-5'>通訊</b>的DEMO稱重程序

    工業(yè)通訊應(yīng)用中主流的常用協(xié)議Modbus協(xié)議

    智聯(lián)物聯(lián)技術(shù)分享,本期為大家介紹工業(yè)通訊常用的主流協(xié)議Modbus協(xié)議Modbus協(xié)議的前身叫做Mod協(xié)議,常被用于Modicon公司的P
    的頭像 發(fā)表于 04-19 15:25 ?1325次閱讀
    工業(yè)<b class='flag-5'>通訊</b>應(yīng)用中主流的常用<b class='flag-5'>協(xié)議</b><b class='flag-5'>Modbus協(xié)議</b>

    淺談Modbus協(xié)議

    Modbus協(xié)議種廣泛應(yīng)用的工業(yè)控制器網(wǎng)絡(luò)協(xié)議,它定義了個(gè)控制器能夠識(shí)別的消息結(jié)構(gòu),用于實(shí)現(xiàn)不同設(shè)備之間的通信和數(shù)據(jù)交換。自1979年由Modicon公司(現(xiàn)為施耐德電氣Schn
    的頭像 發(fā)表于 10-09 13:56 ?396次閱讀
    主站蜘蛛池模板: 特黄特黄aaaa级毛片免费看| 动漫美女被羞羞动漫怪物| 久久精品亚洲AV中文2区金莲| 无码欧美XXXXX在线观看裸| 第一福利在线永久视频| 全免费A敌肛交毛片免费懂色AV| 99精品热视频30在线热视频| 美女露出乳胸扒开尿口| 中文字幕久久熟女人妻AV免费| 久久精品热在线观看85| 一个人看的www视频动漫版| 精品AV亚洲乱码一区二区| 亚洲免费在线视频| 狠狠色综合7777久夜色撩人| 亚洲精品久久久无码一区二区 | WINDOWSCHANNEL老太| 男女啪啪久久精品亚洲A| 91香蕉福利一区二区三区| 蜜桃色欲AV久久无码精品| 97精品视频在线观看| 嫩草欧美曰韩国产大片| caoporn超碰| 日本一二三区视频在线| 国产51麻豆二区精品AV视频| 天天看高清影视在线18| 国产成人片视频一区二区青青| 偷偷鲁手机在线播放AV| 国产午夜精品AV一区二区麻豆| 亚洲国产精品无码中文字满 | 成年色黄APP下载| 色综合久久久久久| 国产人妻人伦精品久久久| 亚洲精品色播一区二区| 久久久久999| 97久久精品人人槡人妻人| 琪琪色原网站ying| 国产成人教育视频在线观看| 胸太大被男同桌吃好爽| 九九在线免费视频| 中文字幕国产在线观看| 女人色极品影院|