精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

Modbus常用功能程序的設(shè)計(jì)

jf_78858299 ? 來(lái)源:PLC無(wú)線通訊方案 ? 作者:PLC無(wú)線通訊方案 ? 2023-03-23 10:08 ? 次閱讀

HMI(人機(jī)界面)以其體積小,高性能,強(qiáng)實(shí)時(shí)等特點(diǎn),越來(lái)越多的應(yīng)用于工業(yè)自動(dòng)化系統(tǒng)和設(shè)備中。它有字母、漢字、圖形和圖片等不同的顯示,界面簡(jiǎn)單友好。配有長(zhǎng)壽命的薄膜按鈕鍵盤,操作簡(jiǎn)單。它一般采用具有集成度高、速度快、高可靠且價(jià)格低等優(yōu)點(diǎn)的單片機(jī)[1]作為其核心控制器,以實(shí)現(xiàn)實(shí)時(shí)快速處理。PLC和單片機(jī)結(jié)合不僅可以提PLC的數(shù)據(jù)處理能力,還可以給用戶帶來(lái)友好簡(jiǎn)潔的界面。本文以Modbus通訊協(xié)議為例,詳細(xì)討論了一個(gè)人機(jī)系統(tǒng)中,如何用C51實(shí)現(xiàn)單片機(jī)和PLC之間通訊的實(shí)例。

2Modbus通訊協(xié)議[4]

Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信

Modbus協(xié)議提供了主—從原則,即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。主設(shè)備查詢的格式:設(shè)備地址(或廣播,此時(shí)不需要回應(yīng))、功能代碼、所有要發(fā)送的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。從設(shè)備回應(yīng)消息包括確認(rèn)地址、功能碼、任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測(cè)域。如果在消息接收過程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。

控制器能設(shè)置為兩種傳輸模式:ASCII和RTU,在同樣的波特率下,RTU可比ASCII方式傳送更多的數(shù)據(jù),所以采用KTU模式。

(1)典型的RTU消息幀

典型的RTU消息幀如表1所示。

圖片

RTU消息幀的地址域包含8bit。可能的從設(shè)備地址是0...127(十進(jìn)制)。其中地址0是用作廣播地址,以使所有的從設(shè)備都能認(rèn)識(shí)。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來(lái)選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時(shí),它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個(gè)設(shè)備作出回應(yīng)。

RTU消息幀中的功能代碼域包含了8bits,當(dāng)消息從主設(shè)備發(fā)往從設(shè)備時(shí),功能代碼域?qū)⒏嬷畯脑O(shè)備需要執(zhí)行哪些行為;當(dāng)從設(shè)備回應(yīng)時(shí),它使用功能代碼域來(lái)指示是正常回應(yīng)(無(wú)誤)還是有某種錯(cuò)誤發(fā)生(稱作異議回應(yīng),一般是將功能碼的最高位由0改為1)。

從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:從設(shè)備必須用于進(jìn)行執(zhí)行由功能代碼所定義的行為。這包括了像不連續(xù)的寄存器地址,要處理項(xiàng)的數(shù)目,域中實(shí)際數(shù)據(jù)字節(jié)數(shù)。如果沒有錯(cuò)誤發(fā)生,從從設(shè)備返回的數(shù)據(jù)域包含請(qǐng)求的數(shù)據(jù)。如果有錯(cuò)誤發(fā)生,此域包含一異議代碼,主設(shè)備應(yīng)用程序可以用來(lái)判斷采取下一步行動(dòng)。

當(dāng)選用RTU模式作字符幀時(shí),錯(cuò)誤檢測(cè)域包含一16Bits值(用兩個(gè)8位的字符來(lái)實(shí)現(xiàn))。錯(cuò)誤檢測(cè)域的內(nèi)容是通過對(duì)消息內(nèi)容進(jìn)行循環(huán)冗長(zhǎng)檢測(cè)(CRC)方法得出的。CRC域附加在消息的最后,添加時(shí)先是低字節(jié)然后是高字節(jié)。

(2)所有的Modbus功能碼

Modbus的功能碼定義如表2所示。

圖片

3常用功能通訊程序的設(shè)計(jì)[5]

本文介紹了幾個(gè)Modbus常用功能程序的設(shè)計(jì)。筆者采用單片機(jī)作為主機(jī),在單片機(jī)上編寫程序?qū)崿F(xiàn)單片機(jī)與PLC之間的通訊。由單片機(jī)向PLC發(fā)出命令信息,PLC自動(dòng)作出回應(yīng)。PLC通過單片機(jī)的串行通訊口通訊,程序用C51實(shí)現(xiàn)。程序的子函數(shù)及其功能:

(1)串口初始化

voidProtocolInit(void)

函數(shù)功能:串口設(shè)置為異步通訊方式1(起始位1位,數(shù)據(jù)位8位,停止位1位);定時(shí)/計(jì)數(shù)器1設(shè)置為波特率發(fā)生器,通訊速率9600bps;開串行中斷,并把串行中斷設(shè)置為高優(yōu)先級(jí)。

(2)CRC簡(jiǎn)單函數(shù)

unsignedcharCrc16(unsignedchar*puchMsg,unsignedcharusDataLen)

函數(shù)功能:先調(diào)入一值是全“1”的16位寄存器,然后調(diào)用一過程將消息中連續(xù)的8位字節(jié)各當(dāng)前寄存器中的值進(jìn)行處理。每個(gè)8位字符都單獨(dú)和寄存器內(nèi)容相或(OR),結(jié)果向最低有效位方向移動(dòng),最高有效位以0填充。LSB被提取出來(lái)檢測(cè),如果LSB為1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB為0,則不進(jìn)行。整個(gè)過程要重復(fù)8次。在最后一位(第8位)完成后,下一個(gè)8位字節(jié)又單獨(dú)和寄存器的當(dāng)前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。

(3)初始化變量

voidInitvar(void)

函數(shù)功能:初始化所有過程變量。

(4)串行中斷服務(wù)程序

voidProtocolSerialProcess(void)interrupt4using2

函數(shù)功能:發(fā)送中斷發(fā)送主機(jī)形成的命令數(shù)組,發(fā)送完后置標(biāo)志位;接收中斷接收PLC返回的響應(yīng)數(shù)組,存入接收數(shù)組,并置標(biāo)志位,且假設(shè)響應(yīng)正確,留待主機(jī)處理。

(5)讀N個(gè)位變量(線圈)

voidProtocolRead_bit(unsignedcharDeviceAddr/ PLC局號(hào) /,unsignedcharRegType/ 寄存器類型 /,unsignedintBitAddr/ 起始地址 /,unsignedcharSubAddr/ 子地址 /,unsignedintBitNum/ 位數(shù) /)

函數(shù)功能:根據(jù)函數(shù)參數(shù),形成讀N個(gè)位變量的命令數(shù)組,啟動(dòng)發(fā)送。等待發(fā)送完并接收完(如超時(shí)未接收完則重新發(fā)送)。分析接收數(shù)組:正確,保存讀取的數(shù)據(jù);錯(cuò)誤,重新發(fā)送。

(6)寫一個(gè)位變量

voidProtocolSetBit(unsignedcharDeviceAddr/ PLC局號(hào) /,unsignedcharRegType/ 寄存器類型 /,unsignedintBitAddr/ 地址 /,unsignedcharSubAddr/ 子地址 /,unsignedi

ntClrSet/ 寫值“1”或“0” /)

函數(shù)功能:根據(jù)函數(shù)參數(shù),形成置某位變量為“1”或“0”的命令數(shù)組,啟動(dòng)發(fā)送。等待發(fā)送完并接收完(如超時(shí)未接收完則重新發(fā)送)。分析接收數(shù)組:正確,返回;錯(cuò)誤,重新發(fā)送。

(7)讀N個(gè)字節(jié)變量

voidProtocolReadByte(unsignedcharDeviceAddr/ PLC局號(hào) /,unsignedcharRegType/ 寄存器類型 /,unsignedintRegAddr/ 起始地址 /,unsignedcharSubAddr/ 子地址 /,unsignedintRegNum/ 個(gè)數(shù) /)

函數(shù)功能:根據(jù)函數(shù)參數(shù),形成讀N個(gè)字節(jié)變量的命令數(shù)組,啟動(dòng)發(fā)送。等待發(fā)送完并接收完(如超時(shí)未接收完則重新發(fā)送)。分析接收數(shù)組:正確,保存讀取的數(shù)據(jù);錯(cuò)誤,重新發(fā)送。

(8)寫N個(gè)字節(jié)變量

voidProtocolSetByte(unsignedcharDeviceAddr/ PLC局號(hào) /,unsignedcharRegType/ 寄存器類型 /,unsignedintRegAddr/ 起始地址 /,unsignedcharSubAddr/ 子地址 /,unsignedintRegNum/ 個(gè)數(shù) /)

函數(shù)功能:根據(jù)函數(shù)參數(shù),形成寫N個(gè)字變量的命令數(shù)組(要寫的數(shù)從某參數(shù)數(shù)組中讀取),啟動(dòng)發(fā)送。等待發(fā)送完并接收完(如超時(shí)未接收完則重新發(fā)送)。分析接收數(shù)組:正確,返回;錯(cuò)誤,重新發(fā)送。

4結(jié)束語(yǔ)

以上的程序已經(jīng)通過實(shí)驗(yàn),并應(yīng)用于實(shí)際的人機(jī)系統(tǒng)中。依照類似的方法,可以編寫其他不同功能的程序,實(shí)現(xiàn)對(duì)PLC的不同控制和操作。利用單片機(jī)和PLC進(jìn)行優(yōu)勢(shì)互補(bǔ),可以組成網(wǎng)絡(luò)化、智能化的工業(yè)控制系統(tǒng)。另外整個(gè)單片機(jī)系統(tǒng)程序用C51語(yǔ)言編程,程序簡(jiǎn)潔,便于閱讀與調(diào)試。單片機(jī)和人機(jī)界面結(jié)合可以實(shí)時(shí)的顯示PLC的工作狀況,實(shí)時(shí)的控制、設(shè)置、調(diào)整PLC工作情況,提高工業(yè)控制的自動(dòng)化程度和實(shí)時(shí)性。

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

    關(guān)注

    6032

    文章

    44514

    瀏覽量

    632981
  • plc
    plc
    +關(guān)注

    關(guān)注

    5008

    文章

    13150

    瀏覽量

    462060
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1761

    瀏覽量

    76834
  • 串行通訊
    +關(guān)注

    關(guān)注

    2

    文章

    77

    瀏覽量

    16355
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    轉(zhuǎn):Keil的使用方法 - 常用功能(二)

    Ⅰ、概述 上一篇文章是總結(jié)關(guān)于Keil使用方法-常用功能(一),關(guān)于(文件和編譯)工具欄每一個(gè)按鈕的功能描述和快捷鍵的使用。我將每一篇Keil使用方法的文章都匯總在一起,回顧前面的總結(jié)請(qǐng)點(diǎn)擊下面
    發(fā)表于 06-13 10:42

    allegro軟件常用功能操作匯總

    allegro軟件常用功能操作匯總文章部分截圖:點(diǎn)擊下載
    發(fā)表于 04-30 16:00

    Pads Router布線器常用功能應(yīng)用技巧

    ;下面是對(duì)于其中的一些常用功能介紹:一、切線1.1、進(jìn)入到pads router中,?按下F3,從焊盤拉出一條導(dǎo)線,【鼠標(biāo)右鍵】–【啟用切線模式】,如圖1接著1.1步驟,用來(lái)平滑切除想要切斷的導(dǎo)線
    發(fā)表于 09-20 09:05

    wavplayer是什么?wavplayer的常用功能有哪些

    for record:使能wav錄音功能The record device name:指定錄音使用的聲卡設(shè)備,默認(rèn)和播放一致,使用sound02、使用wavplayer 的常用功能已經(jīng)導(dǎo)出到 Finsh
    發(fā)表于 07-12 14:17

    變頻器的常用功能

    變頻器的常用功能
    發(fā)表于 08-23 10:48 ?86次下載

    AltiumDesigner設(shè)計(jì)常用功能鍵大全

    Altium Designer 設(shè)計(jì)常用功能鍵大全
    發(fā)表于 07-03 15:19 ?0次下載

    Jenkins是什么_Jenkins常用功能_jenkins的使用總結(jié)

    本文詳細(xì)回答了Jenkins是什么,Jenkins常用功能以及jenkins的使用總結(jié)。Jenkins 是一個(gè)可擴(kuò)展的持續(xù)集成引擎。Jenkins其實(shí)就是一個(gè)工具,這個(gè)工具的作用就是調(diào)用各種其他的工具來(lái)達(dá)成你的目的。
    發(fā)表于 02-06 14:44 ?2.8w次閱讀
    Jenkins是什么_Jenkins<b class='flag-5'>常用功能</b>_jenkins的使用總結(jié)

    modbus常用功能碼解讀

    Modbus具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 Modbus 協(xié)議的設(shè)備一般都支持 RTU 格式。通信雙方必須同時(shí)支持上述模式中的一種。
    發(fā)表于 02-08 09:06 ?1.8w次閱讀
    <b class='flag-5'>modbus</b><b class='flag-5'>常用功能</b>碼解讀

    allegro 軟件常用功能

    allegro 軟件常用功能操作匯總 1.在allegro中怎樣移動(dòng)元件的標(biāo)識(shí) edit--move,右邊f(xié)ind面板只選text~~~ 2.allegro 查找元件的方法 按 F5 然后在
    發(fā)表于 04-25 15:56 ?6273次閱讀
    allegro 軟件<b class='flag-5'>常用功能</b>

    fbd編程常用功能

    FBD是用功能塊圖去實(shí)現(xiàn)程序編制的一種編程語(yǔ)言,咬文嚼字的來(lái)說(shuō),它首先是功能塊,然后是才是圖,圖表。意思就是說(shuō)用很多的功能方塊,組合起來(lái),像一張圖一樣,這張圖就實(shí)現(xiàn)了相關(guān)的
    的頭像 發(fā)表于 12-28 10:40 ?1.7w次閱讀
    fbd編程<b class='flag-5'>常用功能</b>

    Keil的使用方法 - 常用功能(二)

    Keil的使用方法 - 常用功能(二)
    的頭像 發(fā)表于 04-07 14:55 ?3264次閱讀
    Keil的使用方法 -  <b class='flag-5'>常用功能</b>(二)

    Keil的使用方法 - 常用功能(一)

    Keil的使用方法 - 常用功能(一)
    的頭像 發(fā)表于 04-07 14:51 ?8717次閱讀
    Keil的使用方法 -  <b class='flag-5'>常用功能</b>(一)

    相機(jī)的這幾個(gè)常用功能,你都用對(duì)了嗎

    我們?cè)谑褂孟鄼C(jī)進(jìn)行拍攝創(chuàng)作時(shí),如果對(duì)相機(jī)的一些功能一知半解,只知其一不知其二,往往會(huì)對(duì)我們拍攝造成困擾,這一課小編給大家聊聊幾個(gè)常用功能的正確使用技巧,希望對(duì)大家有所幫助。
    的頭像 發(fā)表于 03-14 15:57 ?3370次閱讀

    allegro常用功能介紹

    allegro常用功能介紹
    發(fā)表于 01-10 11:53 ?0次下載

    Juniper防火墻幾種常用功能的配置

    這里講述的Juniper防火墻的幾種常用功能主要是指基于策略的NAT的實(shí)現(xiàn),包括:MIP、VIP和DIP,這三種常用功能主要應(yīng)用于防火墻所保護(hù)服務(wù)器提供對(duì)外服務(wù)。
    的頭像 發(fā)表于 04-03 10:52 ?3024次閱讀