MCGS软件与MCS51单片机多机通信的几种方法

MCGS软件与MCS51单片机多机通信的几种方法
MCGS软件与MCS51单片机多机通信的几种方法

MCGS软件与MCS51单片机多机通信的几种方法

Multi-machineSerialCommunicationMethodbetweenConfigurationSoftwareMCG SandMCS51SCMLiaoningMechanicAndElectricityProfessionTechnologyAcademy InformationInstrumentliunaPostcode:118002[摘要]MCGS是目前较常见的一

种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MC

Multi-machine Serial Communicat io n Method between Configuration Software MCGS and MCS51 SCM Liaoning Mechanic And Electricity Profession Technology Ac ad emy Information Instrument liuna

Postcode:118002

[摘要] MCGS是目前较常见的一种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MCGS远程监控,充分利用计算机的资源进行各种管理。那么对于MCGS与MCS51单片机多机组成的系统如何设计其通信方式,本文介绍几种工程

中可用的通信方法。

[abstract] MCGS is the normal industry configuration software. We can use it to consist apicture of DCS system , it can display the device’s dynamic moving state, the moment 、history curves and reports、high and low alarm。In the system more MCS51 SCM is under control, the MCGS remote control the SCM, the method can use the pc’s source to manage the matter. So how to design multi-machine serial communication method between configuration software MCGS and MCS51 SCM, the article introduce some communication method.

[keywords] Configuration Software VB SCM multi –machine Serial Communication Fuction OLE

一、引言

在工业控制领域中,分布式监控系统常常采用计算机机为上位机、单片机做下位机的系统,这是一种经济、可靠、真观、合理的控制方式。组态软件MCGS

是目前较常见的一种工业控制通用组态软件,是开发工程一非常有效的上位机工具软件,下位机采用单片机来开发的仪表,则具有计量精度高,功耗低,稳定可靠,成本低等特点。

组态软件MCGS与MCS51单片机的通迅方法一般有三种:一、单片机通过PLC、采集板卡、智能模块等设备实现通信;二、通过采用VB编制通信服务程序,利用串口通讯控件与单片机进行多机通信, 利用OLE功能在服务程序和MCGS之间进行数据交换,从而实行了MCGS与单片机的多机通信。;三、通过使用MCGS

嵌入版的串行口通迅函数进行PC机与单片机多机通信。前者实现简单,只需对

的PLC或板卡做相应的设置即可;而后两种经济实用,省去了PLC、板卡、智能模块等设备,节约了资金,但是需要有一定的编程知识。

二、通信方法

1. PLC、板卡、智能模块方式本文的实例为PC上位机与一级下位机OMRON

系列PLC的通信。它与计算机之间的通信采用的是串行通信。

PLC是以微处理器为基础,综合自动控制技术和通信技术发展起来的一种通用的工业自动控制装置,它具有体积小,功能强,程序设计简单,灵活通用,维护方便等一系列的优点,特别是它的高可靠性和较强的适应恶劣工业环境的能力,使它成为大规模控制工程的理想下位机。

OMRON系列中型PLC有SYSMAC C200HX系例,拥有多种接口数字量输入,数字量输出,模拟量输入,模拟输出等,它带有两个RS-232接口,可通过RS-232C /RS-485转接器,挂在RS-485总线上,上位机PC通过转换器与总线相连,即构成具有分布式控制系统的远传数据采集网,其它仪表设备,只要是标准串口都可以类似方式直接或间接与系统连接。

在组态软件MCGS中,欧姆龙PLC设备必须挂接在串口父设备下,串口父设备在“通用设备”目录中。串口父设备用来设置通信参数和通信端口。通信参数必须设置成与PLC的设置一样。否则就无法通信。欧姆龙PLC常用的通信参数:波特率9600,2位停止位,偶校验,7位数据位。

通迅的主动权在上位计算机,通信时必须由计算机按要求向PLC的HOST LINK 发出通信命令,然后才能由HOST LINK送回响应信号。

2. 自制控件的OLE方式

MCGS用Active DLL构件的方式来实现设备驱动程序,通过规范的OLE接口挂接到MCGS中,使其构成一个整体,所以MCGS把设备驱动程序叫做设备驱动构件。由于设备驱动构件和MCGS运行在同一个进程内,故设备构件的运行速度快,可靠性高,不存在传统DD E方式连接设备驱动时的数据流通不畅和数据传输速度慢等问题。同时,OLE是一个可扩充的开放标准,用于实现不同软件之间的相互操作,而不管软件本身是使用什么编程语言。因此,只要遵守MCGS的接口规范,可以使用VB、VC、Delphi等语言来编制MCGS的设备驱动程序。鉴于Visual B as ic 通用性和简单性,可以使用VB来开发MCGS的设备驱动程序.由于VB5.0以上版本是以二进制码来编译执行程序,其运行速度已接近VC,完全能满足设备驱动

构件所需的速度要求。

MCGS设备构件的实现方法和原理与标准VB的ActiveDLL完全一致,但MCGS 规定了一套接口规范,只有遵守这些接口规范的ActiveDLL才能用作MCGS的设备驱动构件。MCGS设备驱动构件必须具有如下5个属性和8个方法:

属性:DevType 标识设备的类型

属性:DevStyle 标识设备的类别

属性:DevChannel 标识设备的通道个数

属性:DevBaseIO 标识设备所用IO的基地址

属性:DevIONumber 标识设备所用IO地址的个数

方法:GetDevName 读取设备构件类型名称

方法:GetDevHelp 调用设备构件的在线帮助内容

方法:SetDevPage 调用设备的内部属性页

方法:InitNewDev 初试化设备的初始值

方法:GetChlType 读取设备构件各通道的数据类型和注释

方法:InitDevRun 运行时对设备进行初始化工作

方法:RunDevCommand 执行指定的设备命令

方法:CollectDevDat 定时操作设备,采集或输出数据

开发MCGS设备驱动的过程,实际上就是根据设备的特性和含义来完成8个方法功能的编程过程。编写通讯子设备驱动程序时,主要使用的就是对串行端口进行操作。MCGS根据驱动程序的实现特点,充分运用32操作系统多任务多线程的优势,把复杂的对串行端口的设置、初始化和读写操作全部封装在MCGS提供的串行通讯父设备中,在通讯子设备驱动程序中只需调用父设备提供的标准串口读写函数,即可完成各种功能通讯子设备驱动程序的开发编程工作。常用的函数有:ComOutDat、ComAllInDat、ComOutInDat等。下面以一个5个通道的接口卡为例,接口卡的跳线设置为:单端输入、0~5V输入量程、数码转换方式为单极性,要求本设备构件能对5个通道的数据进行采集。利用MCGS的高级开发向导,生成一个独立设备驱动设备的源程序;假定工程名设为:MYPROGRAM,类型名设为:我的工程;把属性DevChannel中的值改为5;把接口GetChlType 中的代码改为:

Dim i As Long

For i = 0 To 4

Dat(i) = 2

msg(i) = "AD输入"+format$(I+1,”0”)

Next i

在接口CollectDevDat中编制如下程序代码:

Dim i as Long, high as Long, l ow as Long

For i=0 to 4

Outp mHandle, DevBaseIO, i ‘设置AD通道

Outp mHandle, DevBaseIO+1, 0 ‘启动AD转换

Do ‘等待AD转换结束

If Inp(mHandle, DevBaseIO + 2) < 128 Then Exit Do

Loop

high = Inp(mHandle, DevBaseIO + 2) And &HF‘读高4位

low = Inp(mHandle, DevBaseIO + 3) ‘读低8位

dd(i) =( h * 256 + l)*5000/4096 ‘转换为mV数

Next i

编译工程,得到DLL文件MYPROGRAM.dll,把该文件拷贝到MCGS的program\drivers目录下,即可完成本设备构件的编程工作。设备只需连在相应的串行口既可。在MCGS组态环境中,即可在设备管理窗口中使用新开发的设备。

计算机串行口是计算机和其它设备通讯时最常用的一种通讯接口,一个串行口可以挂接多个通讯设备(如一个RS485总线上可挂接255个ADAM通讯模块,但它们共用一个串口父设备),为适应计算机串行口的多种操作方式,MCGS组态软件特采用在串口通讯父设备下挂接多个通讯子设备的一种通讯设备处理机制,各个子设备继承一些父设备的公有属性,同时又具有自己的私有属性。在实际操作时,MCGS提供一个串口通讯父设备构件和多个通讯子设备构件,串口通讯父设备构件完成对串口的基本操作和参数设置,通讯子设备构件则为串行口实际挂接设备的驱动程序。

将下位机单片机仪表设备组成单片机主从形式的多机通迅网络,然后将负责采集数据的主机单片机通过RS485总线连接到上位机PC的RS232接口,通过串行口通信方式将数据远传送到上位机,这样可以用计算机直接对远端仪表设备进行数据采集、检测、控制、诊断和故障调试等。硬件连线如下:

该种方法与第二种比要增加一个单片机主机做数据采集的,然后与组态王软件来通信,单片机主机和从机的程序与第二种设计有所区别。

三、结束语

用户可以根据自己开发工程项目的规模、特点来选择相应的通信方法,对于大的系统来说可以前二者;如果是与少量单片机通信可以用后一种方法连接。相信随着组态软件MCGS的发展,还会有更多更好的单片机通信方式供用户来选择。

[其他]:MCGS软件与MCS51单片机多机通信的

几种方法

属性:DevType 标识设备的类型

属性:DevStyle 标识设备的类别

属性:DevChannel 标识设备的通道个数

属性:DevBaseIO 标识设备所用IO的基地址

属性:DevIONumber 标识设备所用IO地址的个数

方法:GetDevName 读取设备构件类型名称

方法:GetDevHelp 调用设备构件的在线帮助内容

方法:SetDevPage 调用设备的内部属性页

方法:InitNewDev 初试化设备的初始值

方法:GetChlType 读取设备构件各通道的数据类型和注释

方法:InitDevRun 运行时对设备进行初始化工作

方法:RunDevCommand 执行指定的设备命令

方法:CollectDevDat 定时操作设备,采集或输出数据

开发MCGS设备驱动的过程,实际上就是根据设备的特性和含义来完成8个方法功能的编程过程。编写通讯子设备驱动程序时,主要使用的就是对串行端口进行操作。MCGS 根据驱动程序的实现特点,充分运用32操作系统多任务多线程的优势,把复杂的对串行端口的设置、初始化和读写操作全部封装在MCGS提供的串行通讯父设备中,在通讯子设备驱动程序中只需调用父设备提供的标准串口读写函数,即可完成各种功能通讯子设备驱动程序的开发编程工作。常用的函数有:ComOutDat、ComAllInDat、ComOutInDat等。

下面以一个5个通道的接口卡为例,接口卡的跳线设置为:单端输入、0~5V输入量程、数码转换方式为单极性,要求本设备构件能对5个通道的数据进行采集。

利用MCGS的高级开发向导,生成一个独立设备驱动设备的源程序;假定工程名设为:MYPROGRAM,类型名设为:我的工程;把属性DevChannel中的值改为5;把接口GetChlType中的代码改为:

Dim i As Long

For i = 0 To 4

Dat(i) = 2

msg(i) = "AD输入"+format$(I+1,”0”)

Next i

在接口CollectDevDat中编制如下程序代码:

Dim i as Long, high as Long, l ow as Long

For i=0 to 4

Outp mHandle, DevBaseIO, i ‘设置AD通道

Outp mHandle, DevBaseIO+1, 0 ‘启动AD转换

Do ‘等待AD转换结束

If Inp(mHandle, DevBaseIO + 2) < 128 Then Exit Do

Loop

high = Inp(mHandle, DevBaseIO + 2) And &HF ‘读高4位

low = Inp(mHandle, DevBaseIO + 3) ‘读低8位

dd(i) =( h * 256 + l)*5000/4096 ‘转换为mV数

Next i

编译工程,得到DLL文件MYPROGRAM.dll,把该文件拷贝到MCGS的program\drivers 目录下,即可完成本设备构件的编程工作。设备只需连在相应的串行口既可。

在MCGS组态环境中,即可在设备管理窗口中使用新开发的设备。

在MCGS中设置如下:

在设备窗口中双击添加的设备弹出如下对话框:

3. 直接进行远端通讯

计算机串行口是计算机和其它设备通讯时最常用的一种通讯接口,一个串行口可以挂接多个通讯设备(如一个RS485总线上可挂接255个ADAM通讯模块,但它们共用一个串口父设备),为适应计算机串行口的多种操作方式,MCGS组态软件特采用在串口通讯父设备下挂接多个通讯子设备的一种通讯设备处理机制,各个子设备继承一些父设备的公有属性,同时又具有自己的私有属性。在实际操作时,MCGS提供一个串口通讯父设备构件和多个通讯子设备构件,串口通讯父设备构件完成对串口的基本操作和参数设置,通讯子设备构件则为串行口实际挂接设备的驱动程序。

将下位机单片机仪表设备组成单片机主从形式的多机通迅网络,然后将负责采集数据的主机

单片机通过RS485总线连接到上位机PC的RS232接口,通过串行口通信方式将数据远传送到

上位机,这样可以用计算机直接对远端仪表设备进行数据采集、检测、控制、诊断和故障调试等。硬件连线如下:

在MCGS中设置如下:

在设备窗口中双击添加的设备弹出如下对话框.

该种方法与第二种比要增加一个单片机主机做数据采集的,然后与组态王软件来通信,单片

机主机和从机的程序与第二种设计有所区别。

三、结束语

用户可以根据自己开发工程项目的规模、特点来选择相应的通信方法,对于大的系统来说可以前二者;如果是与少量单片机通信可以用后一种方法连接。相信随着组态软件MCGS的发展,还会有更多更好的单片机通信方式供用户来选择。

Multi-machine Serial Communication Method between Configuration Software MCGS and MCS51 SCM

Liaoning Mechanic And Electricity Profession Technology Academy Information Instrument liuna Postcode:118002

[摘要] MCGS是目前較常見的一種工業控製通用組態軟件,可以利用它十分方便地構成了分布式係統的監控畫麵,動態顯示控製設備的運行狀態、實時、曆時曲線和報表、上下限報警等。在該係統中對於由多個MCS51單片機控製的下位機儀表,其工作由MCGS遠程監控,充分利用計算機的資源進行各種管理。那麼對於MCGS與MCS51單片機多機組成的係統如何設計其通信方式,本文介紹幾種工程中可用的通信方法。

[abstract] MCGS is the normal industry configuration software. We can use it to consist apicture of DCS system , it can display the device’s dynamic moving state, the moment 、history curves and reports、high and low alarm。In the system more MCS51 SCM is under control, the MCGS remote control the SCM, the method can use the pc’s source to manage the matter. So how to design multi-machine serial communication method between configuration software MCGS and MCS51 SCM, the article introduce some communication method.

[keywords] Configuration Software VB SCM multi –machine Serial Communication Fuction OLE

一、引言

在工業控製領域中,分布式監控係統常常采用計算機機為上位機、單片機做下位機的係統,這是一種經濟、可靠、真觀、合理的控製方式。組態軟件MCGS是目前較常見的一種工業控製通用組態軟件,是開發工程一非常有效的上位機工具軟件,下位機采用單片機來開發的儀表,則具有計量精度高,功耗低,穩定可靠,成本低等特點。

組態軟件MCGS與MCS51單片機的通迅方法一般有三種:一、單片機通過PLC、采集板卡、智能模塊等設備實現通信;二、通過采用VB編製通信服務程序,利用串口通訊控件與單片機進行多機通信, 利用OLE功能在服務程序和MCGS之間進行數據交換,從而實行了MCGS與單片機的多機通信。;三、通過使用MCGS嵌入版的串行口通迅函數進行PC機與單片機多機通信。前者實現簡單,隻需對的PLC或板卡做相應的設置即可;而後兩種經濟實用,省去了PLC、板卡、智能模塊等設備,節約了資金,但是需要有一定的編程知識。

二、通信方法

1. PLC、板卡、智能模塊方式

本文的實例為PC上位機與一級下位機OMRON係列PLC的通信。它與計算機之間的通信采用的是串行通信。

PLC是以微處理器為基礎,綜合自動控製技術和通信技術發展起來的一種通用的工業自動控製裝置,它具有體積小,功能強,程序設計簡單,靈活通用,維護方便等一係列的優點,特別是它的高可靠性和較強的適應惡劣工業環境的能力,使它成為大規模控製工程的理想下位機。

OMRON係列中型PLC有SYSMAC C200HX係例,擁有多種接口數字量輸入,數字量輸出,模擬量輸入,模擬輸出等,它帶有兩個RS-232接口,可通過RS-232C /RS-485轉接器,掛在RS-485總線上,上位機PC通過轉換器與總線相連,即構成具有分布式控製係統的遠傳數據采集網,其它儀表設備,隻要是標準串口都可以類似方式直接或間接與係統連接。

在組態軟件MCGS中,歐姆龍PLC設備必須掛接在串口父設備下,串口父設備在“通用設備”目錄中。串口父設備用來設置通信參數和通信端口。通信參數必須設置成與PLC 的設置一樣。否則就無法通信。歐姆龍PLC常用的通信參數:波特率9600,2位停止位,偶校驗,7位數據位。

通迅的主動權在上位計算機,通信時必須由計算機按要求向PLC的HOST LINK 發出通信命令,然後才能由HOST LINK送回響應信號。

在組態軟件中設置如下:

在設備窗口中雙擊添加的設備彈出如下對話框:

2. 自製控件的OLE方式

MCGS用Active DLL構件的方式來實現設備驅動程序,通過規範的OLE接口掛接到MCGS中,使其構成一個整體,所以MCGS把設備驅動程序叫做設備驅動構件。由於設備驅動構件和MCGS運行在同一個進程內,故設備構件的運行速度快,可靠性高,不存在傳統DDE 方式連接設備驅動時的數據流通不暢和數據傳輸速度慢等問題。同時,OLE是一個可擴充的開放標準,用於實現不同軟件之間的相互操作,而不管軟件本身是使用什麼編程語言。因此,隻要遵守MCGS的接口規範,可以使用VB、VC、Delphi等語言來編製MCGS的設備驅動程序。

鑒於Visual Basic通用性和簡單性,可以使用VB來開發MCGS的設備驅動程序.由於VB5.0以上版本是以二進製碼來編譯執行程序,其運行速度已接近VC,完全能滿足設備驅動構件

所需的速度要求。

MCGS設備構件的實現方法和原理與標準VB的ActiveDLL完全一致,但MCGS規定了一套接口規範,隻有遵守這些接口規範的ActiveDLL才能用作MCGS的設備驅動構件。MCGS 設備驅動構件必須具有如下5個屬性和8個方法:

屬性:DevType 標識設備的類型

屬性:DevStyle 標識設備的類別

屬性:DevChannel 標識設備的通道個數

屬性:DevBaseIO 標識設備所用IO的基地址

屬性:DevIONumber 標識設備所用IO地址的個數

方法:GetDevName 讀取設備構件類型名稱

方法:GetDevHelp 調用設備構件的在線幫助內容

方法:SetDevPage 調用設備的內部屬性頁

方法:InitNewDev 初試化設備的初始值

方法:GetChlType 讀取設備構件各通道的數據類型和注釋

方法:InitDevRun 運行時對設備進行初始化工作

方法:RunDevCommand 執行指定的設備命令

方法:CollectDevDat 定時操作設備,采集或輸出數據

開發MCGS設備驅動的過程,實際上就是根據設備的特性和含義來完成8個方法功能的編程過程。編寫通訊子設備驅動程序時,主要使用的就是對串行端口進行操作。MCGS 根據驅動程序的實現特點,充分運用32操作係統多任務多線程的優勢,把複雜的對串行端口的設置、初始化和讀寫操作全部封裝在MCGS提供的串行通訊父設備中,在通訊子設備驅動程序中隻需調用父設備提供的標準串口讀寫函數,即可完成各種功能通訊子設備驅動程序的開發編程工作。常用的函數有:ComOutDat、ComAllInDat、ComOutInDat等。

下麵以一個5個通道的接口卡為例,接口卡的跳線設置為:單端輸入、0~5V輸入量程、數碼轉換方式為單極性,要求本設備構件能對5個通道的數據進行采集。

利用MCGS的高級開發向導,生成一個獨立設備驅動設備的源程序;假定工程名設為:MYPROGRAM,類型名設為:我的工程;把屬性DevChannel中的值改為5;把接口GetChlType

中的代碼改為:

Dim i As Long

For i = 0 To 4

Dat(i) = 2

msg(i) = AD輸入+format$(I+1,”0”)

Next i

在接口CollectDevDat中編製如下程序代碼:

Dim i as Long, high as Long, l ow as Long

For i=0 to 4

Outp mHandle, DevBaseIO, i ‘設置AD通道

Outp mHandle, DevBaseIO+1, 0 ‘啟動AD轉換

Do ‘等待AD轉換結束

If Inp(mHandle, DevBaseIO + 2) < 128 Then Exit Do

Loop

high = Inp(mHandle, DevBaseIO + 2) And &HF ‘讀高4位

low = Inp(mHandle, DevBaseIO + 3) ‘讀低8位

dd(i) =( h * 256 + l)*5000/4096 ‘轉換為mV數

Next i

編譯工程,得到DLL文件MYPROGRAM.dll,把該文件拷貝到MCGS的program/drivers 目錄下,即可完成本設備構件的編程工作。設備隻需連在相應的串行口既可。

在MCGS組態環境中,即可在設備管理窗口中使用新開發的設備。

在MCGS中設置如下:

在設備窗口中雙擊添加的設備彈出如下對話框:

3. 直接進行遠端通訊

計算機串行口是計算機和其它設備通訊時最常用的一種通訊接口,一個串行口可以掛接多個通訊設備(如一個RS485總線上可掛接255個ADAM通訊模塊,但它們共用一個串口父設備),為適應計算機串行口的多種操作方式,MCGS組態軟件特采用在串口通訊父設

備下掛接多個通訊子設備的一種通訊設備處理機製,各個子設備繼承一些父設備的公有屬性,同時又具有自己的私有屬性。在實際操作時,MCGS提供一個串口通訊父設備構件和多個通

訊子設備構件,串口通訊父設備構件完成對串口的基本操作和參數設置,通訊子設備構件則

為串行口實際掛接設備的驅動程序。

將下位機單片機儀表設備組成單片機主從形式的多機通迅網絡,然後將負責采集數據的主機單片機通過RS485總線連接到上位機PC的RS232接口,通過串行口通信方式將數據遠傳送到上位機,這樣可以用計算機直接對遠端儀表設備進行數據采集、檢測、控製、診

斷和故障調試等。硬件連線如下:

在MCGS中設置如下:

在設備窗口中雙擊添加的設備彈出如下對話框:

該種方法與第二種比要增加一個單片機主機做數據采集的,然後與組態王軟件來通信,單片機主機和從機的程序與第二種設計有所區別。

三、結束語

用戶可以根據自己開發工程項目的規模、特點來選擇相應的通信方法,對於大的係統來說可以前二者;如果是與少量單片機通信可以用後一種方法連接。相信隨著組態軟件MCGS的發展,還會有更多更好的單片機通信方式供用戶來選擇。

多机通信协议规范

通信协议 来自中国工控网 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、 检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向 字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 串行通讯简单认识 串行通讯的基本概念:与外界的信息交换称为通讯。基本的通讯方式有并行通讯和串行通讯两种。 一条信息的各位数据被同时传送的通讯方式称为并行通讯。并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距 数米)的通讯。 一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但送速度慢。串行通讯的距离可以从几米到几 千米。 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为 单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。 串行通讯又分为异步通讯和同步通讯两种方式。在单片机中,主要使用异步通讯方式。 MCS_51单片机有一个全双工串行口。全双工的串行通讯只需要一根输出线和一根输入线。数据的输 出又称发送数据(TXD),数据的输入又称接收数据(RXD)。串行通讯中主要有两个技术问题,一个是数 据传送、另一个是数据转换。数据传送主要解决传送中的标准、格式及工作方式等问题。数据转换是指 数据的串并行转换。具体说,在发送端,要把并行数据转换为串行数据;而在接收端,却要把接收到的 串行数据转换为并行数据。 单工、半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。 电话线就是二线全双工信道。由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。 --------> <--------> --------> A---------B A----------B A---------B <-------- 单工半双工全双工

(完整版)51单片机实现双机通信(自己整理的)

1号机程序 #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char sbit p10=P1 A 0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y__) for(i=0;i<120;i++) 5 } void put(uchar x) // 发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while (TI==0); 〃等待发送结束 TI=0; } P £j £fA>l3 旳 4阳 1370 丘阳 H 鮎口 PDLWAJil- PDSA>f POfiAME PQ TiJT FZ^KS 畑 阳pz- A A-m FZW11 PZ.AtZ FZj9jAl4 PZ.TW? P3£VR : iD paimcc P3.sii nrn pjjfflrn F3.WTI] M*Tl pgtjgQIH F3.7/IF 1E 11 左边1号机,右边2号机, ,功能实现 帕叶DO ■ 口 IJApi FDJ H [I Z — 观旧 IP 口 .hQKD* *QAADf H ^ 弓 H.Lta RQfMM FZJWS pz. iwe F2JKA-IDI P2JTA11I F2.HW1Z P2JSM13 F2W.14 F2JM1S F3Ji nHX& gj.im:& riaiWTO rjjfWTT F3.1/W f3AT1 P3JillW F3JMF ■T2 1E

MCGS软件与MCS51单片机多机通信的几种方法

MCGS软件与MCS51单片机多机通信的几种方法 Multi-machineSerialCommunicationMethodbetweenConfigurationSoftwareMCG SandMCS51SCMLiaoningMechanicAndElectricityProfessionTechnologyAcademy InformationInstrumentliunaPostcode:118002[摘要]MCGS是目前较常见的一 种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MC Multi-machine Serial Communicat io n Method between Configuration Software MCGS and MCS51 SCM Liaoning Mechanic And Electricity Profession Technology Ac ad emy Information Instrument liuna Postcode:118002 [摘要] MCGS是目前较常见的一种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MCGS远程监控,充分利用计算机的资源进行各种管理。那么对于MCGS与MCS51单片机多机组成的系统如何设计其通信方式,本文介绍几种工程 中可用的通信方法。 [abstract] MCGS is the normal industry configuration software. We can use it to consist apicture of DCS system , it can display the device’s dynamic moving state, the moment 、history curves and reports、high and low alarm。In the system more MCS51 SCM is under control, the MCGS remote control the SCM, the method can use the pc’s source to manage the matter. So how to design multi-machine serial communication method between configuration software MCGS and MCS51 SCM, the article introduce some communication method. [keywords] Configuration Software VB SCM multi –machine Serial Communication Fuction OLE 一、引言 在工业控制领域中,分布式监控系统常常采用计算机机为上位机、单片机做下位机的系统,这是一种经济、可靠、真观、合理的控制方式。组态软件MCGS 是目前较常见的一种工业控制通用组态软件,是开发工程一非常有效的上位机工具软件,下位机采用单片机来开发的仪表,则具有计量精度高,功耗低,稳定可靠,成本低等特点。 组态软件MCGS与MCS51单片机的通迅方法一般有三种:一、单片机通过PLC、采集板卡、智能模块等设备实现通信;二、通过采用VB编制通信服务程序,利用串口通讯控件与单片机进行多机通信, 利用OLE功能在服务程序和MCGS之间进行数据交换,从而实行了MCGS与单片机的多机通信。;三、通过使用MCGS 嵌入版的串行口通迅函数进行PC机与单片机多机通信。前者实现简单,只需对

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

三个51单片机通信汇编程序

(1)主机程序 AT89C51-A ORG 00H JMP START START: MOV SP,#60H ;设置堆栈 MOV TMOD,#00100000B ;TIMER1工作在MODE2 ANL PCON,#01111111B ;SMOD=0 MOV TH1,#0F3H ;波特率为2400 MOV TL1,#0F3H SETB TR1 ;启动TIMER1 MOV SCON,#11010000B ;UART工作在MODE3 MOV IE,#10010000B ;UART中断使能 SETB SM2 ;设SM2=1 MOV P2,#0FFH ;给P2口赋初值 MOV 32H,0FFH ;两个副CPU地址暂存器 SCAN0: MOV R3,#F7H ;键盘扫描初始值 SCAN: JB RI,UARTI ;是否有接收中断 MOV R1,#00H ;TABLE取码指针 SCAN1: MOV A,R3 ;输出行扫描 MOV P1,A MOV A,P1 MOV R4,A SETB C MOV R5,#03H ;扫描4列 L1: RLC A JNC KEYIN ;C=0表示有键按下 INC R1 ;C不等于0,未按则取码指针加1 DJNZ R5,L1 ;扫描下一列 MOV A,R3 ;扫描下一行 SETB C

RRC A MOV R3,A JC SCAN1 ;4行扫描完 JMP SCAN0 KEYIN: MOV R7,#0D0H ;消除抖动 D2: MOV R6,#19H DJNZ R6,$ DJNZ R7,D2 D3: MOV A,P1 ;按键放开否? XRL A,R4 JZ D3 MOV A,R1 ;至TABLE取键盘码 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV 30H,A XRL A,#83H ;“#1”是否按下? JZ UART1 MOV A,30H XRL A,#C6H ;“#2”是否按下? JZ UART2 MOV A,30H MOV SBUF,A ;载入SBUF发送出去WAIT: JBC TI,SCAN ;发送完毕否? JMP WAIT UART1: SETB TB8 ;设TB8=1 MOV SBUF,#01H ;发送AT89C51-B的地址01H WAIT1: JBC TI,L2 ;发送完毕否? JMP WAIT1 L2: CLR TB8 ;清除TB8=0 JMP SCAN0

基于51单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级:xxxxxx 学号:13xxxxxxxxx 姓名:xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计

1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: 图1.AT89C51(52) (1)数据缓冲器(SBUF) 接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,

51单片机通信协议

单片机通信协议 现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了通信程序的通用写法,包括上位机端和下位机端等。 1.自定义数据通信协议 这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。 通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。 帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。 地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系统中,可以只包含目的地址信息。同时包含源地址和目的地址则适用于多对多的通信系统。 数据类型、数据长度和数据块是主要的数据部分。数据类型可以标识后面紧接着的是命令还是数据。数据长度用于指示有效数据的个数。 校验码则用来检验数据的完整性和正确性。通常对数据类型、数据长度和数据块三个部分进行相关的运算得到。最简单的做法可是对数据段作累加和,复杂的也可以对数据进行CRC运算等等,可以根据运算速度、容错度等要求来选取。 2.上位机和下位机中的数据发送 物理通信层中提供了两个基本的操作函数,发送一个字节数据则为数据发送的基础。数据包的发送即把数据包中的左右字节按照顺序一个一个的发送数据而已。当然发送的方法也有不同。 在单片机系统中,比较常用的方法是直接调用串口发送单个字节数据的函数。这种方法的缺点是需要处理器在发送过程中全程参与,优点是所要发送的数据能够立即的出现在通信线路上,能够立即被接收端接收到。另外一种方法是采用中断发送的方式,所有需要发送的数据被送入一个缓冲区,利用发送中断将缓冲区中的数据发送出去。这种方法的优点是占用处理器资源小,但是可能出现需要发送的数据不能立即被发送的情况,不过这种时延相当的小。对于51系列单片机,比较倾向于采用直接发送的方式,采用中断发送的方式比较占用RAM资源,而且对比直接发送来说也没有太多的优点。以下是51系列单片机中发送单个字节的函数。 v oid SendBy te(unsigned char ch) { SBUF = ch; while(TI == 0); TI = 0; }

51单片机实现的485通讯程序

51单片机实现的485通讯程序 #ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令*/ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效

void get_status(); // 调用该函数获得设备状态信息,函数代码未给出 void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧 bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息 void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用void main() { uchar type; uchar len; /* 系统初始化*/ P1 = 0xff; // 读取本机设备号 dev = (P1>>2); TMOD = 0x20; // 定时器T1使用工作方式2 TH1 = 250; // 设置初值 TL1 = 250; TR1 = 1; // 开始计时 PCON = 0x80; // SMOD = 1 SCON = 0x50; // 工作方式1,波特率9600bps,允许接收 ES = 0; // 关闭串口中断 IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

热网远程监控系统中通讯方式的选择及应用

热网远程监控系统中通讯方式的选择及应用 摘要:随着社会科学技术的发展,众多热电企业已经通过实行热电联产的方式向热网用户集中供热。为了保证集中供热体系的稳定运行,热网公司普遍采用热网监控系统对热网用户进行实时监测。该文通过对几种通讯方式的比较研究,发现GPRS技术在热网远程监控系统中具有很高的实用价值。 关键词:GPRS技术;热网;远程监控系统 随着计算机技术的迅猛发展,供热企业选择的通讯方式也越来越多。热网由于其特有的特点(如覆盖区域广、各个站点分散)。为了及时解决热网用户的需求,通讯方式的选择就显得非常重要。该文就是根据系统的控制功能和要求,通过比较各个通讯方式之间的优缺点,选择最适合的通讯方式为城市热网提供服务。 1热网远程监控系统的实施原则 热网监控系统的主要任务就是对热网用户进行供暖,它肩负着整个供热系统的监测和控制,需要处理大量的数据,其中包括全网系统的实时参数,并根据实时参数,了解热网系统运作情况,第一时间发

现问题并解决问题。为了保证热网监控系统供热均匀,满足用户需求,对热网监控系统提出以下要求: 1)实时性。第一时间收集数据,并根据数据对用户进行配置处理,上传和下传时间必须得快。 2)灵活性。由于热网系统的本身特点,大都在城市密集区,很难架设电缆,需要特别灵活、覆盖面广的通讯方式。 3)安全陆及可扩展性。热网系统面向的都是一些小区,必须保证数据传输的稳定,且传输过程中不得丢失任何数据。为了减少热网系统的维护保养,选用性价比高的通讯方式也至关重要。 2常用通讯方式的比较 对于热网监控系统而言,通讯方式在其中发挥着重要的作用,它不仅可以保证系统稳定、而且可以完成系统的相关功能。现如今,热网监控系统所使用的通讯系统根据方式的不同分为有线和无线通讯。按照通讯网络类型来看,又可分为公网和专网两种通讯方式。现将热网监控系统的几种通讯方式进行比较,如表1所示。

51单片机多机通信课程设计

《单片机应用与仿真训练》设计报告 单片机多机通信 姓名: 学号: 专业班级: 指导老师: 所在学院: 2011年7月5日

摘要 本设计是基于AT89S52单片机温度检测传输的三机通信系统,有三个单片机组成,其中一个作为主机(上位机),控制并负责接收来自从机1号和从机2号采集的数据信息,并显示在数码管上。由主机发送控制信息(通过按键控制),确定是接收来自想要得到各从机数据。从机1号和2号是数据采集模块,用来采集室内或室外温度信息,并通过通信协议传送给主机。为保证三机通信可靠性,通信口要有识别功能,51单片机串行口控制寄存器SCON中SM2位正是满足这一要求而设置的。当串行口以工作方式三工作时,接收和发送的信息都是11位数据,既包含SBUF寄存器传送的8位数据,还包括SCON中可编程第9位数据即TB8或RB8,主机可通过设定TB8是0或1,来区别发送的是地址还是数据。从机都先将SCON中的SM2设置为1,待主机发送地址信息,与本身的地址对照,如果是,则令从机SM2为0,准备接收主机信息并发送温度信息,如果不是,则继续等待。主机通过中断口接收数据,处理后显示在数码管上。此次设计由于只有一个18b20温度传感器,这里用三个任意的数据代替从机2采集温度数据,由于传输距离较短,这里不用MAX232,直接将主机的发送端接从机接收端,主机接收端连接从机发射端,仿真结果正常显示,实验结果正常。

目录 1概述 (1) 1.1设计概述 (1) 1.2多机通信基本原理 (1) 1.3 通信协议 (2) 2系统总体方案及硬件设计 (3) 2.1总体设计方案 (3) 2.2硬件电路设计 (3) 3软件设计 (7) 3.1控制流程图 (7) 3.2串行口采集步骤 (7) 3.3软件流程图 (8) PROTEUS仿真 (9) 课程设计体会 (11) 参考文献: (12) 附件1:主机A源程序代码 (13) 附件2:原理图 (24)

单片机通信协议处理解析

单片机通信协议处理 现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了通信程序的通用写法,包括上位机端和下位机端等 1. 自定义数据通信协议 这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的 RS232、 RS485、红外、光纤、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。 通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。类似于网络通信中的 TCPIP 协议一般,比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。 帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。 地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系统中,可以只包含目的地址信息。同时包含源地址和目的地址则适用于多对多的通信系统。

基于51单片机的双机串行通信

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

51单片机实现的485通讯程序

标签:modbus8051源程序 modbus协议--51端程序的实现 RTU需要一个定时器来判断3.5个流逝时间。 #define ENABLE 1 #define DISABLE 0 #define TRUE 1 #define FAULT 0 #define RECEIVE_EN 0 #define TRANSFER_EN 1 #define MAX_RXBUF 0x20 extern unsigned char emissivity; extern unsigned char tx_count,txbuf[15]; extern unsigned char rx_count,rxbuf[15]; extern unsigned char tx_number,rx_number; extern bit rx_ok; unsigned char rx_temp; void InitTimer1() //针对标准8051 { TMOD=(TMOD|0xf0)&0x1f; //将T1设为16位定时器 TF1=0; TH1=0x62; //设T1位3.5位的接收时间35bit/9600bit/s=3.646ms TL1=0x80;//晶振为11.0592MHz,T= 65535-3.646ms*11.0592MHz/12=0xf2df //0x6280是22.1184M下LPC9XX下的值。 ET1=1; //允许T1中断 TR1=1; //T1开始计数 } void timer1() interrupt 3 using 2 //定时器中断 { TH1=0x62; //3.646ms interrupt TL1=0x80; if(rx_count>=5) //超时后,若接收缓冲区有数则判断为收到一帧 { rx_ok=TRUE; } } void scomm() interrupt 4 using 3 //modbus RTU模式 {

远程调用的几种方式

远程调用的几种方式 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB 和JMS 等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍。 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO 来实现,其中传输协议有tcp、udp等等,tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输协议,网络IO,主要有bio、nio、aio三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。 应用级协议 远程服务通讯,需要达到的目标是在一台计算机发起请求,另外一台机器在接收到请求后进行相应的处理并将结果返回给请求端,这其中又会有诸如one way request、同步请求、异步请求等等请求方式,按照网络通信原理,需要实现这个需要做的就是将请求转换成流,通过传输协议传输至远端,远端计算机在接收到请求的流后进行处理,处理完毕后将结果转化为流,并通过传输协议返回给调用端。 原理是这样的,但为了应用的方便,业界推出了很多基于此原理之上的应用级的协议,使得大家可以不用去直接操作这么底层的东西,通常应用级的远程通信协议会提供: 1. 为了避免直接做流操作这么麻烦,提供一种更加易用或贴合语言的标准传输格式; 2. 网络通信机制的实现,就是替你完成了将传输格式转化为流,通过某种传输协议传输至远端计算机,远端计算机在接收到流后转化为传输格式,并进行存储或以某种方式通知远端计算机。 所以在学习应用级的远程通信协议时,我们可以带着这几个问题进行学习: 1. 传输的标准格式是什么? 2. 怎么样将请求转化为传输的流? 3. 怎么接收和处理流? 4. 传输协议是? 不过应用级的远程通信协议并不会在传输协议上做什么多大的改进,主要是在流操作方面,让应用层生成流和处理流的这个过程更加的贴合所使用的语言或标准,至于传输协议则通常都是可选的,在java领域中知名的有:RMI、XML-RPC、Binary-RPC、SOAP、CORBA、JMS,来具体的看看这些远程通信的应用级协议:

基于51单片机的双机串行通信课程设计 1000110061

基于AT89C51单片机的双机串行通信设计 姓名:杨应伟 学号:100110061 专业:机械设计制造及其制动化 班级:机电二班

前言 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。 在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。

基于51单片机的多机通信系统设计

单片机多机通信系统 一、引言 随着单片机技术的不断发展,单片机的应用已经从单机向多机互联化方向发展。单片机在实时数据采集与数据处理方面,有着成本低、能满足一般要求、开发周期短等优点,其在智能家居、计算机的网络通信与数据传输、工业控制自动化等方面有着广泛的应用。 本系统就是面向智能家居应用而设计的。在初期,采用红外无线通信方式,其传输距离短,适于一般家庭应用,且成本相对较低;待方案成熟、成本允许,可以改用GSM无线通信方式。 二、系统原理及方案设计 1 、系统框架介绍 本系统为基于51单片机的多机红外无线通信系统,由三个51单片机模块组成。其中一个作为主机(即上位机),负责接收来自从机1(即下位机)采集的数据信息,以及向从机2(即下位机)发送控制信息。从机1就是数据采集模块,采集温度、光强等室内数据,并将其发送给主机。主机经分析处理,作出相应判断,并给从机2发送控制信息,使由从机2控制的电机作出相应反应,调节室内环境状况。 系统总体框图如下图1所示,图2为红外收发模块简图:

图1 系统总体框图 图2 红外收发模块简图 2 、多机通信原理介绍 在多机通信系统中,要保证主机与从机间可靠的通信,必须要让通信接口具有识别功能,51单片机串行口控制寄存器SCON中的控制位SM2正就是为了满足这一要求而设置的。当串行口以方式2或方式3工作时,发送或接收的每一帧信息都就是11位的,其中除了包含SBUF 寄存器传送的8位数据之外,还包含一个可编程的第9位数据TB8或RB8。主机可以通过对TB8赋予1或0,来区别发送的就是数据帧还就是地址帧。 根据串行口接收有效条件可知,若从机的SCON控制位SM2为1,则当接收的就是地址帧时,接收数据将被装入SBUF并将RI标志置1,向

51单片机usart通信程序(有CRC校验)

#include #include #include #define uchar unsigned char #define uint unsigned int //uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar p[]={0x01,0x03,0x25,0x23,0x00,0x01}; /* CRC 高位字节值表*/ uchar const crchi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0/**/, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; /* CRC低位字节值表*/ uchar const crclo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06/**/, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

相关文档
最新文档