最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C#與宇電溫控表自定義協(xié)議通信實(shí)例

2020-07-03 10:19 作者:新閣教育  | 我要投稿


寫在前面

通信協(xié)議是做上位機(jī)開發(fā)經(jīng)常會聽到的一個(gè)詞。無論是單片機(jī)開發(fā)常用的串口通信協(xié)議,還是上位機(jī)開發(fā)常用TCP/IP通信協(xié)議,以及網(wǎng)絡(luò)通信常用的Http協(xié)議,可以這么說,通信協(xié)議無處不在。

對于通信協(xié)議,官方性解釋是指計(jì)算機(jī)通信網(wǎng)絡(luò)中兩臺計(jì)算機(jī)之間進(jìn)行通信所必須共同遵守的規(guī)定或規(guī)則。通俗地說,為了保證機(jī)器與機(jī)器之間能夠正常對話,兩者之間需要共同使用同一種語言,這種語言就是通信協(xié)議,就和中國人之間溝通使用普通話、本地人之間溝通使用方言、不同國家的人之間溝通使用英語是一個(gè)道理。【dotNet工控上位機(jī):thinger_swj】

1 、通信協(xié)議剖析

本文主要針對的硬件是國內(nèi)儀表市場占有率比較高的一個(gè)品牌——廈門宇電AI系列儀表。廈門宇電自動(dòng)化科技有限公司專門為AI 系列顯示控制儀表開發(fā)了一個(gè)通訊協(xié)議——AIBUS,這個(gè)AIBUS會有一系列的協(xié)議說明,對上位機(jī)開發(fā)人員來說,這就是一個(gè)自定義協(xié)議。

如果要和一個(gè)自定義協(xié)議的儀表進(jìn)行通信,我們需要從以下幾個(gè)環(huán)節(jié)著手去做:通信協(xié)議剖析、硬件配置及環(huán)境搭建、根據(jù)協(xié)議編寫通信庫、編寫測試軟件進(jìn)行測試。

這里首先找到了該儀表的通信協(xié)議說明書,一般儀表或者PLC的通信協(xié)議可以通過供應(yīng)商提供或者官網(wǎng)下載,宇電儀表通信協(xié)議下載鏈接:

http://www.yudian.com/Download/11904/List.html

在協(xié)議說明書中,找到通信的核心報(bào)文部分:

AI 儀表采用 16 進(jìn)制數(shù)據(jù)格式來表示各種指令代碼及數(shù)據(jù)。AI 儀表軟件通訊指令經(jīng)過優(yōu)化設(shè)計(jì),標(biāo)準(zhǔn)的通訊指令只有兩條,一條為讀指令,一條為寫指令,兩條指令使得上位機(jī)軟件編寫容易,但能 100%完整地對儀表進(jìn)行操作;標(biāo)準(zhǔn)讀和寫指令分別如下:

讀: 地址代號+52H(82)+要讀的參數(shù)代號+00+00+校驗(yàn)碼

寫: 地址代號+43H(67)+要寫的參數(shù)代號+寫入低字節(jié)+寫入高字節(jié)+校驗(yàn)碼

地址代號:為了在一個(gè)通訊接口上連接多臺 AI 儀表,需要給每臺 AI 儀表編一個(gè)互不相同的通訊地址,有效的地址為 0-80(部分型號為 0-100),所以一條通訊線路上最多可連接 81 臺 AI 儀表,儀表的通訊地址由參數(shù) Addr 決定。儀表內(nèi)部采用兩個(gè)重復(fù)的 128-208(16 進(jìn)制為 80H-D0H)之間數(shù)值來表示地址代號,由于大于 128的數(shù)較少用到(如 ASC 方式的協(xié)議通常只用 0-127 之間的數(shù)),因此可降低因數(shù)據(jù)與地址重復(fù)造成沖突的可能性。

參數(shù)代號:AI 儀表通訊協(xié)議規(guī)定,地址代號為兩個(gè)相同的字節(jié),數(shù)值為(儀表地址+80H)。 例如:儀表參數(shù) Addr=10(16 進(jìn)制數(shù)為0AH,0A+80H=8AH),則該地址代號: 8AH 8AH 參數(shù)代號:儀表的參數(shù)用1個(gè)8位二進(jìn)制數(shù)(一個(gè)字節(jié),寫為 16 進(jìn)制數(shù))的參數(shù)代號來表示,它在指令中表示要讀/寫的參數(shù)名。

校驗(yàn)碼:校驗(yàn)碼采用 16 位求和校驗(yàn)方式,其中讀指令的校驗(yàn)碼計(jì)算方法為:

要讀參數(shù)的代號×256+82+ADDR

寫指令的校驗(yàn)碼計(jì)算方法為:

要寫的參數(shù)代號×256+67+要寫的參數(shù)值+ADDR

公式中 ADDR為儀表地址參數(shù)值,范圍是 0~80(注意不要加上 80H)。校驗(yàn)碼為以上公式做二進(jìn)制16位整數(shù)加法后得到的余數(shù),余數(shù)為2 個(gè)字節(jié),其低字節(jié)在前,高字節(jié)在后。要寫的參數(shù)值用16位二進(jìn) 制整數(shù)表示。

返回?cái)?shù)據(jù):無論是讀還是寫,儀表都返回以下 10 個(gè)字節(jié)數(shù)據(jù):

測量值 PV+給定值 SV+輸出值MV及報(bào)警狀態(tài)+所讀/寫參數(shù)值+校驗(yàn)碼

其中 PV、SV 及所讀參數(shù)值均各占 2 個(gè)字節(jié),代表一個(gè) 16 位二進(jìn)制有符號補(bǔ)碼整數(shù),低位字節(jié)在前,高位字節(jié)在后,整數(shù)無法表示小數(shù)點(diǎn),要求用戶在上位機(jī)處理;MV 占一個(gè)字節(jié),按 8 位有符號二進(jìn)制數(shù)格式,數(shù)值范圍-110~+110,狀態(tài)位占一個(gè)字節(jié),校驗(yàn)碼占 2個(gè)字節(jié),共 10個(gè)字節(jié)。

通過以上說明,可以發(fā)現(xiàn)AIBUS這個(gè)通信協(xié)議相對來說還是比較簡單的,我們只需要按照規(guī)定,將組織好的報(bào)文發(fā)送給控制器,即可獲取到測量值、給定值、輸出值、報(bào)警狀態(tài)及參數(shù)值。

2、硬件環(huán)境搭建

將整個(gè)環(huán)境搭建起來,需要涉及以下硬件:

  • Pt100鉑熱電阻

  • 宇電溫控表


  • RS485轉(zhuǎn)USB


  • 工控機(jī)電腦


·?根據(jù)宇電溫控表的接線圖,整體硬件接線如下圖所示:


注意:接線完成后,需要按照宇電溫控表說明書,對宇電儀表進(jìn)行相關(guān)的設(shè)置,包含通信參數(shù)設(shè)置、從站地址、輸入類型等。

3、通信庫開發(fā)

通信庫開發(fā)是本文的核心內(nèi)容,這里需要有一定的C#編程基礎(chǔ),同時(shí)對通信協(xié)議有一定的認(rèn)識和了解。

  • 初始化通訊:初始化通信主要是進(jìn)行串口連接及斷開連接方法的編寫:


  • 為了方便進(jìn)行報(bào)文的組織,編寫了一個(gè)報(bào)文拼接類ByteArray:


  • 校驗(yàn):AIBUS協(xié)議中的校驗(yàn)采用校驗(yàn)和的方式:

讀指令的校驗(yàn)碼計(jì)算方法為:要讀參數(shù)的代號×256+82+ADDR

寫指令的校驗(yàn)碼計(jì)算方法為:要寫的參數(shù)代號×256+67+要寫的參數(shù)值+ADDR


  • 讀取參數(shù):AIBUS讀取參數(shù)報(bào)文格式如下:


  • 寫入?yún)?shù):AIBUS寫入?yún)?shù)報(bào)文格式如下:


4、通信軟件開發(fā)

完成通信庫開發(fā)后,再寫通信軟件就非常簡單了,直接通過創(chuàng)建通信對象,調(diào)用相關(guān)的方法即可獲取到相應(yīng)的數(shù)據(jù)。


5、寫在最后

本文主要針對C#與廈門宇電溫控表之間的自定義協(xié)議通信做了較為詳細(xì)的描述,相信對于很多電氣工程師,尤其是以西門子PLC為主的電氣工程師來說,會有很大幫助。近幾年隨著人工智能、物聯(lián)網(wǎng)的流程,工控行業(yè)發(fā)生了很大的變化,每一位電氣工程師都應(yīng)該及時(shí)作出調(diào)整,至少學(xué)習(xí)一門高級編程語言,未雨綢繆,以更好的姿態(tài)來應(yīng)對即將到來的智能制造2025。

掃碼進(jìn)入直播↑


C#與宇電溫控表自定義協(xié)議通信實(shí)例的評論 (共 條)

分享到微博請遵守國家法律
贵阳市| 砀山县| 屯门区| 鹤壁市| 栾城县| 莎车县| 黄石市| 类乌齐县| 大姚县| 罗山县| 韩城市| 定兴县| 佛冈县| 缙云县| 东乌| 舒城县| 南部县| 蓬安县| 高安市| 辽源市| 新乐市| 玛多县| 安庆市| 乌拉特后旗| 定南县| 阜康市| 宁都县| 瑞安市| 滨州市| 岐山县| 元朗区| 安国市| 南江县| 高陵县| 青海省| 白河县| 濮阳县| 张家港市| 张家口市| 聂拉木县| 长乐市|