基於RS485的組態王與單片機多機串口通信設計

2021-01-09 電子工程世界

1 引言

隨著工業化要求提高,分布式系統發展以及控制設備與監控設備之間通訊需要,組態軟體設計的監控系統逐步普及。現在組態軟體繁多,比如KingVieW(組態王)、 MCGS、WinCC等。KingView軟體基於Microsoft Windows XP,NT/2000作業系統.具有友好的人機操作界面、強大的IO設備埠驅動能力,可與各種PLC、智能儀表、智能模塊、板卡、變頻器等實時通訊。由 於在檢測大量模擬量的工業現場使用PLC與組態軟體通訊勢必增加產品成本。而單片機接口豐富,與A/D轉換模塊組合可以完成相同的工作,並且系統可靠、成本低。

2 組態王與單片機的串口通訊方法

目前,組態王與單片機的通信多是通過動態數據交換(DDE)或通過自己開發通訊驅動程序完成。DDE是Windows平臺上的一個完整的通信協 議,組態王通過該協議與其他應用程式交換數據。但不可靠和非實時。而自己開發通訊驅動程序會帶來設計困難,增加系統開發周期,可行性不高。組態王專門提供 一種與單片機多機串口通信方法,可滿足大多數系統需求。

3 PC機與單片機的硬體接口電路

圖1為上位PC機與下位單片機80C51的連接電路。PC機與單片機本身都自帶串行通訊接口,但由於在分布式系統中PC機與各單片機的分布不集 中,不能利用RS-232通訊傳輸,只能改用RS-485。RS-485採用差分式傳輸信號,最大傳輸距離為1 219 m.最大傳輸速率為10 Mb/s.對同時出現的兩條信號線A、B的幹擾有較強的抑制能力。當兩條線絞在一起時,被通信各種分布參數耦合過來的幹擾信號可平均地分配到這兩條線上, 因此對RS-485的差分式傳輸線路而言,用雙絞線可獲得較強的抗幹擾能力。RS-485採用二線與四線平衡傳輸方式,二線制可實現真正的多點雙向通信,但需要在傳輸線上接電阻(約120 Ω)。

 

 

由於80C51系列單片機STC89C52串行接口的,TTL電氣特性與RS-485電氣特性不相符,STC89C52不能與RS-485直接連接,需要電氣轉換。這裡採用Maxim公司的MAX485,圖2為其接口電路。

 

 

圖2中,MAX485的RE和DE南STC89C52單片機的P1.7控制。由於MAX485以半雙工的方式工作,因此由P1.7控制其發送與 接收。當 P1.7為高電平時,驅動器使能而接收器為高阻態,此時可發送數據;而當P1.7為低電平時.接收器使能而驅動器為高阻態,此時接收數據。另外由於PC機 的COM口是基於RS-232的串行通訊口.其電氣特性與RS-485不一致,因此也需電平轉換。

圖3為單片機地址設置電路,單片機STC89C52的P1口的低4位用於設定本機地址,通過4位DIP開關的組合最多可設定16種地址。如當4 位開關全部斷開時,對應的本機地址是11 11。下位單片機在開始工作前需先設定自己的地址,這樣,在開機自檢時下位單機片就能獲取本機地址。

 

 

4 系統通訊協議設計

組態王提供了通過PC機與單片機串口進行十六進位數據通訊的驅動,而驅動中已經規定好其通訊協議。

4.1 通訊參數

通訊參數包括數據位、停止位、波特率、校驗方式。其中,數據位、停止位、波特率由單片機決定。組態王中的設定和單片機一致即可。校驗方式參照「數據傳輸格式」部分。

4.2 數據傳輸格式與協議說明

格式1 組態王發送地址請求格式(檢驗位為1):

 

 

格式2單片機應答地址格式(檢驗位為0):

 

 

格式3組態王讀數據請求格式(檢驗位為0):

 

 

格式4單片機應答讀數據格式(正確)(檢驗位為O):[page]

 

 

格式5單片機應答讀數據格式(錯誤)(檢驗位為0):

 

 

格式6組態王寫數據請求格式(檢驗位為O):

 

 

格式7單片機應答寫數據格式(正確)(檢驗位為0):

 

 

協議具體說明如下:

ENQ(頭):H05,詢問,請求幀的開始代碼;

ACK(頭):H06,確認,ACK應答幀的開始代碼;

NAK(頭):H15,否認,NAK應答幀的開始代碼;

EOT(尾):H04,正文的結束,請求幀的結束ASCII代碼;

ETX(尾):H03,結束正文,應答幀的結束ASCII代碼;

數據傳輸:所有數據均為16進位數;

Sta:設備地址,1個字節,組態王設備地址範圍為0~255,此地址為單片機的地址,由單片機中的程序決定;

R:讀標誌,1個字節(0x52);

W:寫標誌,1個字節(0x57);

DataType:需要交換的數據類型,1位元組。其中「1」代表字節,「2」代表字,「3」代表浮點型;

DataNum:讀取數據的個數,1位元組;

DataAddr:數據偏移地址,2位元組,低字節在前,高字節在後;

Data:實際傳輸的數據,低字節在前,高字節在後;

DataLong:單片機返回Data的字節數,2位元組,低字節在前,高字節在後:

CRC:為從第1個字節至CRC前的所有字節的異或值,1位元組;

ErrorCode:錯誤代碼,「0」代表正確應答,「1」代表數據類型錯誤,「2」代表數據範圍超限,「3」代表指令無法識別。

5 單片機通訊程序流程設計

圖4為組態王程序流程,圖5為單片機通訊程序流程。80C51系列單片機多機通訊可歸納如下:

 

 

 

 

上位機的SM2=0,所有下位機的SM2=1,以便只接收上位機發來的地址;

上位機給下位機發送地址時,第9數據位應該為1,以指示下位機接收這個地址;

所有下位機在SM2=1,RB8=1和RI=0時,接收上位機發來的地址,進入相應中斷服務程序,並與本機地址相比較,以確認是否為被尋址的下位機;

被尋址下位機通過指令清除SM2,以便正常接收上位機發送來的數據,並向上位機發回接收到的地址以便核實。未被尋址的下位機保持SM2=1,並退出各自的中斷服務程序;

完成上位機和被尋址下位機之間的數據通信後,被尋址從機使SM2=1,並退出中斷服務程序,等待下次通信。

6 結束語

該系統實現組態王軟體與單片機多機的實時通信,已經在實際項目中得到應用。應用的結果表明該設計方法簡單有效,實時性好,成本低廉,可以在控制與監控系統中推廣應用。

關鍵字:RS485  單片機  多機串口通信 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/2015/0715/article_21042.html

推薦閱讀

rs485 16路繼電器控制板 仿modbus通信協議控制有上下位機程序

Modbus十六路繼電器輸出控制板一、應用場合工業控制需要擴展輸出口的場合PLC輸出接口擴展組態觸控螢幕控制簡要說明尺寸:長152mmX寬163mmX高25mm通訊協議:MODBUS_RTU模式工作電壓:直流12伏(另有24V)掉電後保存繼電器狀態有看門狗復位功能三、特點RS485標準接口16路輸出光電隔離控制繼電器。標準11.0592M晶振,9600波特率、八位數據位、一位停止位、一位校驗位(偶校驗)有上電復位和手動復位。MODBUS_RTU標準協議控制輸出16路繼電器LED指示。通過軟體指令設定地址等參數可控制交流220V/10A以下設備有程序下載口,可隨意更改程序。可按客戶要求定製協議註:顧客可以根據需要選擇相應的產品

發表於 2020-09-21

如何構建長距離通信網絡使用RS485協議

第1步:所需材料要構建此項目,您將需要執行以下操作。1)單片機(此處為 MSP430啟動板,帶有MSP430G2553)2) MAX485 用於RS485通信的晶片3) 120歐姆終端離子電阻器4)通用PCB或麵包板5) USB到RS485轉換器,用於與PC連接(例如USB2SERIAL V2.0)6)MSP430的RS485通信增強包(可選)步驟2:RS485部分第一件事要做的就是使用MAX485晶片構建RS485部分。MAX485晶片採用8引腳DIP封裝,可以很容易地安裝在通用PCB或麵包板上(如果您打算重複使用該晶片) )您可以將MAX485晶片焊接到一小塊通用PCB上,並將引腳引到凸形bergstrip

發表於 2020-09-15

基於RS485主從結構通信單片機代碼

RS485主從結構通信代碼,用於組網內部通信單片機源程序如下:#ifndef        _485MON_H                                 // 防止485Mon.h被重複引用#define        _485MON_H#include <reg52.h>          &nbsp

發表於 2020-08-21

第18章 RS485通信和Modbus協議

在工業控制、電力通訊、智能儀表等領域,通常情況下是採用串口通信的方式進行數據交換。最初採用的方式是RS232接口,由於工業現場比較複雜,各種電氣設備會在環境中產生比較多的電磁幹擾,會導致信號傳輸錯誤。除此之外,RS232接口只能實現點對點通信,不具備聯網功能,最大傳輸距離也只能達到幾十米,不能滿足遠距離通信要求。而RS485則解決了這些問題,數據信號採用差分傳輸方式,可以有效的解決共模幹擾問題,最大距離可以到1200米,並且允許多個收發設備接到同一條總線上。隨著工業應用通信越來越多,1979年施耐德電氣制定了一個用於工業現場的總線協議Modbus協議,現在工業中使用RS485通信場合很多都採用Modbus協議,本節課我們要講解一下

發表於 2020-07-23

STM32 RS485 modbus通訊源程序,親測有效

的程序是根據手把手教你51單片機的例程修改而來,能實現讀/寫操作(03,06碼),成功通過modbus調試精靈測試,讀寫通訊正常!由於剛接觸modbus通訊協議,之前一直出現通訊超時的問題,找了網上很多資料,都不得其解,所以把程序拿出來和大家分享。希望和大家相互學習、共同進步!單片機源程序如下:#include "rs485.h"#include "SysTick.h"#include "crc16.h"#include "led.h&quot

發表於 2020-07-13

小體積多功能,ADI全新RS485 + 集成隔離式DC-DC轉換器問市

 Analog Devices, Inc. (ADI)推出ADM2867E系列強化iCoupler®隔離RS485 + 集成隔離式DC-DC轉換器。這些新器件具有低電磁輻射幹擾,能在儘量少的電路板返工和避免預算超支條件下滿足EMC合規要求。相比ADI前一代產品以及競爭對手目前提供的產品而言,這款收發器採用簡化的PCB布局,SOIC外形小巧,可以在空間有限的應用中集成更多功能。 這款隔離式RS485 + 集成式隔離電源收發器系列提供智能功能,可以縮短終端系統安裝和調試的時間,以及輕鬆校正與安裝有關的連接問題。憑藉iCoupler數字隔離和IEC 61000-4-2 ESD的值得信賴

發表於 2020-06-02

相關焦點

  • STM32 基於串口RS485雙機通信原理淺析
    RS485通信想必大家都知道,在學習RS232時,都會拿485(RS485下文就用485代替)和其作對比。485優缺點不說,網上有本文引用地址:http://www.eepw.com.cn/article/201709/365000.htm  我用的是STM32庫函數學的485通信,所以接下來就講講STM32串口實現485雙機通信的原理:  485和232都是基於串口的通訊接口,在數據的收發操作上都是一致的。但是他兩的通訊模式卻大不相同~!
  • C8051F020單片機的RS485串行通信設計
    為了實現單片機與工控機之間的RS485串行通信,必須對單片機的UART輸出電平進行轉換,以滿足RS485串行通信需求。選用MAX485接口晶片,它是Maxim公司的一種RS485接口晶片,該晶片的結構和引腳都比較簡單。  該設計理論上可以實現1臺工控機(安裝1塊RS485通信卡)對128臺單片機進行Rs485串行通信,其總體設計框圖如圖1所示。
  • 基於C8051F040單片機的CAN總線和RS-232串口通信設計
    為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。
  • Linux下ARM 和單片機的串口通信設計
    摘要:介紹Linux環境下串口通信的設計方法和步驟,並介紹了ARM9微處理器s3c2440在Linux下和C8051Fxxx系列單片機進行串行通信的設計方法,給出了硬體連接和通信程序流程圖。該方法可靠、實用,適用於大多數LinuxARM和單片機串口通信的場合。
  • 基於單片機與計算機串口的溫度實時監控系統設計
    隨著計算機技術特別是單片機技術的發展,串口通信在諸多領域上得到了廣泛的應用,計算機可以通過串口來獲取單片機的各種數據,然後利用計算機強大的功能進行處理,再根據處理的結果發送數據到單片機,實現遠程控制設備。
  • 基於PL2303的串口轉USB口串行通信設計
    基於單片機的開發應用在目前創新技術發展中一支獨秀,非常受廣大科技愛好者、在校大學生以及科技開發工作者的青睞。多功能、超強型的單片機在市場上也層出不窮,為單片機的開發應用提供了很好的基礎。目前,在單片機的應用系統設計中,USB接口的使用越來越多,簡化了單片機系統與外部系統進行信息交換的接口電路,提高了信息交換的可靠性及交換速度。
  • PL2303單片機串口轉USB口實現串行通信
    多功能、超強型的單片機在市場上也層出不窮,為單片機的開發應用提供了很好的基礎。目前,在單片機的應用系統設計中,USB接口的使用越來越多,簡化了單片機系統與外部系統進行信息交換的接口電路,提高了信息交換的可靠性及交換速度。目前市場上提供的各類型單片機品種中,有些型號的單片機在其內部集成有USB接口部件,但大部分的單片機不含有USB接口電路。
  • 基於單片機與PC通信的數據採集控制系統設計研究
    系統的基本組成  1. 1 系統的基本架構  文中構建的基於單片機與PC 通信的數據採集控制系統基本架構如圖1 所示:    筆者在設計中,對於總體的成本和系統性能需求進行了考慮,對於目前採用的節點中心設計,擬定了Atmega128L 單片機來完成。
  • 51單片機串口通信實例
    一、原理簡介本文引用地址:http://www.eepw.com.cn/article/170625.htm51 單片機內部有一個全雙工串行接口。什麼叫全雙工串口呢?
  • 用RS485串口代替RS232串口通信新方法
    在此,以ST公司生產的ARM 9系列中典型的STR912FW44X6晶片作為硬體開發平臺的MCU,完成了基於ARM的太陽能發電系統中數據採集與傳輸系統的硬體設計,並提出了一種利用RS 485串口代替RS 232串121來進行通信的新方法。
  • Java軟體與單片機串口通信
    從菜鳥級的電子愛好者到骨灰級的電子工程師,相信大多數人都經歷過製作萬年曆,畢竟它比較全面的考察對單片機基礎知識的掌握,並且體現了
  • 單片機RS485通信接口、控制線、原理圖及程序實例
    接口使用信號線和 GND 與其它設備形成共地模式的通信,這種共地模式傳輸容易產生幹擾,並且抗幹擾性能也比較弱。  傳輸距離有限,最多只能通信幾十米。  通信的時候只能兩點之間進行通信,不能夠實現多機聯網通信。
  • 51 單片機UART 串口通信 方式1 實現
    1 51串行口結構51單片機的UART串行通信是基於其串行口的可編程硬體結構,只要用正確的程序代碼通過初始化串行口對應寄存器的形式將其串行硬體結構初始化,
  • LabVIEW與STC89C54單片機串口通信實現
    下位機主要是用來採集數據,可以通過嵌入式控制器、單片機控制器、PLC等來實現。上位機主要是圖形界面,用來實時顯示採集數據,並進行數據分析及處理,同時可以控制下位機。上位機的實現可以通過各種高級語言,比如VB、Delphi等以及NI公司的圖形化虛擬儀器軟體開發環境LabVIEW.由於LabVIEW採用的是圖形化的編程方法,所以無論你是否有過編程經驗,都可以快速、高效地設計用戶界面,實現與控制硬體的通信,並進行數據分析和處理。如今LabVIEW已經滲透到工業測量的各個領域,與此同時在嵌入式、FPGA、DSP、實時控制等領域也發揮著巨大的作用。
  • 基於Modbus通信協議的eView觸控螢幕與51單片機的通信設計
    基於Modbus通信協議的eView觸控螢幕與51單片機的通信設計 電子工程網 發表於 2019-09-27 16:27:48 Modbus協議由於其具有開放性、透明性、成本低、易於開發等特點,已成為當今工業領域通信協議的首選
  • 基於多串口通信的柴油發電機組遠程監控平臺
    很多縣級局和下級機站之間都有SDH信道相通,如果有附加的RS-232串口,也可以通過SDH信道傳輸數據,從而省掉電話線路兩邊的MODEM,等同於RS-232串口電纜直接相連。     如果一個下級機站內有多臺柴油發電機組需要監控,在電話線路允許的情況下,可以為每臺機組分配一條電話線,各佔用監控主機的一個RS-232串口。
  • 基於Arm 單片機的車載兒童報警系統設計
    朱  琳,蔣美琪,楊  興,曾  誠摘  要:本設計是一種基於STM32單片機和GSM通訊模塊的車載兒童安全報警系統,主要是由信號採集模塊、 單片機STM32F103為核心的控制模塊、SIM900A為核心的GSM/GPRS通訊定位模塊和客戶端組成。
  • labview實現PC與單片機之間的串口通信
    使用Proteus進行單片機仿真,仿真硬體連接,串口通信部分使用keil與labview,FF,十六進位)發送給單片機,單片機收到後回傳這個數字,PC接收到回傳數據後顯示出來,若發送的數據和接收到的數據相等,則串行通信正確,否則有錯誤。啟始符是數字00,結束符是數字FF。
  • 基於CORTEX-M3的多機通信網絡的設計與實現
    摘要:系統以STM32F103作主控單元,使用RS485通信總線,制定了一套通信協議,從軟體角度保證了總線仲裁機制的完整,保證了測控網絡的正常運轉。在系統設計論述過程中,根據RS485通信總線的特點,論述了系統中多機通信設計的原理及過程,結合在系統調試過程中遇到的問題,提出了在使用RS485過程中的注意事項。
  • 基於AVR單片機的多機通信解決方案
    打開APP 基於AVR單片機的多機通信解決方案 工程師3 發表於 2018-06-02 10:55:00 在多機通信過程中,所有設備的