以太网串口通信的纯软件实现

以太网串口通信的纯软件实现
以太网串口通信的纯软件实现

以太网串口通信的纯软件实现

1 纯软件实现以太网串口通信的原理

串口,一般就是指计算机的RS-232口或者RS-485口,是工业通信最常用的接口。本文介绍的就是如何利用以太网先组成局域网,再让2台或多台计算机都安装上即时通信软件进行联系,然后将即时通信软件接收到的信号发送到计算机的串口,并且可以将串口收到的信号通过即时通信软件发送到正在进行即时通信联系的远端计算机。这样就用纯软件方法实现了以太网串口通信。

近年来,随着网络技术高速发展,即时通信软件得到了大量的使用,包括基于以太网(局域网)的企业即时通讯软件和基于互联网的个人即时通讯软件。即时通信软件使得任何两个甚至多个用户借助于局域网或者互联网可以进行通信,但是目前仅仅局限于数据、文件等交换,还没有实现串口通信的功能。本文的方法在本质上就是把串口要发送的数据按照TCP/IP协议进行重新排列后通过即时通讯软件发送到以太网连接的局域网,同时也把以太网通过即时通讯软件从局域网收到的数据按照TCP/IP格式提取出来后再按照串口通信的格式组合后接收。常用的串口通信格式为(9600,N,8,1),意思就是通信的速率(波特率)为9600bps,即每秒9600位,N表示无奇偶校验位,8表示用8个字节表示一个数,1就是最后再加上1位附加位。以太网TCP/IP协议的数据包括帧同步、地址、类型、数据、校验。把串口要发送的一个数据去掉校验位和附加位提取出8个字节的纯数据,然后将它填充到以太网帧的数据部分,并且再补充任意38个字节到46个字节就可以构成一帧以太网的数据包发送出去。同理,把以太网收到的一帧数据包去掉帧同步、地址、类型和校验后得到46个字节的纯数据,只取前面的8个字节,然后加上校验位和附加位按照波特率由串口接收。

2 局域网串口即时通信软件

串口即时通信软件是一种在局域网甚至互联网内实现串口即时通信的软件。好灵通V11是局域网版本。只要2台或者多台计算机位于一个局域网内,那么借助于好灵通软件可以实现这些计算机的串口之间的即时通信,也可以实现透明传输和多机通信。好灵通V11同时是一款功能齐全的局域网聊天工具,最新的版本不再依赖特定的串口转换器,因而可以零硬件成本用纯软件实现以太网的串口通信。(专利:基于即时通信软件的串口控制器ZL201120133429)

(1)好灵通是一种能够实现串口硬件控制的即时通信软件,不仅仅能够即时交换信息,而且还能够对远端的串口设备进行控制。是世界上唯一具有串口通信功能的即时通信产品。(2)局域网版的好灵通v11可以在同一局域网段内部实现即时通信和串口控制,包括有线的以太网局域网和无线WIFI局域网。是一款很实用的局域网通信及串口控制工具,可以发送文字、文件、对话等、还可以设置串口COM号、波特率等。(3)可以实现有线或无线局域网内串口的透明传输。甚至不同波特率和格式也可以。(4)完全可以作为局域网聊天工具!可以聊天、

传送文件、存储记录、群聊(广播)。(5)无需任何设置,比以太网/串口转换器使用要方便许多。

在windows 7/xp下,按“开始”\“设置”\“控制面板”,点击“系统”,查看“系统属性”\“硬件”\“设备管理器”,展开“端口”,可以看到COM串口号,也可以继续看这个串口的“属性”\“设置”\“高级”,进一步修改COM口号码。运行好灵通setup安装完毕后,运行程序:好灵通v11.exe,先进入如下登录界面:

键入你自己取的昵称,选择头像,按“登录”进入工作界面。

“好灵通串行口”部分的COM口号就是本计算机的串口号,包括USB扩展的串口。单击头像为聊天、双击为传输文件。“广播数据”时聊天数据会发送到自己(抬头包括昵称:),但是广播数据时串口数据(无抬头)不发送给自己,以符合RS-232/RS-485多机通信规则。显然好灵通串口即时通信必须至少有2个用户,当然也支持多个用户。

有几个按键的使用功能,只要将鼠标放在上面几秒钟,就会提示功能。比如:1、改变好灵通串行口的COM号时,如果串口处于打开状态则要先关闭串口。2、好灵通串行口的进度条表示RThreshold值,就是触发串口中断响应的数据的长度,默认为5。3、对方IP的文字框,如果为空白则表示广播状态。注意在广播状态下,就是多机通信状态下,本机的发送数据会显示在本机的聊天接收框内,但是不会发送到本机的好灵通串口,以符合RS-232/485多机通信协议。4、单击头像为发送数据,双击头像为传输文件。5、“无声”—“有声”按钮,默认无声,建议串口通信时选无声以提高通信实时性。6、“刷新用户列表”有时在无线WIFI局域网可能要多刷新几次。7、“隐藏自己图标”功能仅仅是不显示自己的头像,正在通信的对方仍然会显示这个头像,通信功能也仍然存在,主要是便于用户区别自己和别人。

3、纯软件以太网串口通信的典型应用

3.1 本地计算机控制远程计算机的串口

本地计算机PC1和远程计算机PC2位于通过以太网组成的局域网内。此时本地计算机可以不用打开好灵通串口,远程计算机一定要在通信软件的界面上“打开串口”连接。本地计算机将发送框内的数据即时发送到远程的计算机接的串口。同时远程计算机串口收到的数据将即时发送到本地计算机并且显示在接收框内。

3.2 外接串口之间的透明传输

本地计算机PC1和远程计算机PC2位于通过以太网组成的局域网内。只要PC1与PC2之间是通过好灵通软件连接的,那么它们所接的串口之间是完全透明的。显然两台计算机的即时通信软件即使各自设置成为不同速率等也是可以通信的,也就是说还可以实现不同速率之间的串口透明传输。这是一般的串口远程通信无法实现的功能。

3.3 本地计算机与远程计算机之间的串口透明传输

本地计算机PC1和远程计算机PC2位于通过以太网组成的局域网内。此时本地计算机PC1必须有2个串口,如下图中左边的USB串口和计算机本身的串口COM-X,并且打开好灵通的串口。此时远程计算机PC2必须接串口,并且打开好灵通串口。

注意要将本地计算机PC1的两个串口COM-X与USB-串口连接起来。如果是使用RS-232口,注意RXD-TXD收发线交叉,GND-GND地接地。如果是使用RS-485,则A接A,B接B、GND接GND。注意本产品只支持只有RXD、TXD、GND的3线RS-232通信,不支持有握手信号的RS-232通信。本产品支持多级通信,选择“广播数据”即可。如果界面上的“对方IP:”为空白,就表明处于广播状态,就是多机通信状态。在广播状态下,计算机发送的数据不会发给自己,虽然在聊天框内会显示。以符合RS-232/RS-485多机通信规则。

这样本地计算机PC1从自带的串口COM-X发送的数据立即被本地的好灵通USB串口接收,并且通过即时通信软件即时发送到远程计算机PC2,远程计算机PC2又立刻将此数据发送到远程计算机接的串口。反过来,远程计算机的串口接收到的数据会通过即时通信软件发送到本地计算机,而且立刻从本地计算机接的好灵通串口发送给本地计算机的串口COM-X。

这样就实现了PC1的COM-X与PC2的串口之间的串口透明传输。显然两台计算机的即时通信软件即使各自设置成为不同速率等也是可以通信的,这是一般的串口远程通信无法实现的功能。

cc2530串口UART0通信实验(20200627130016)

/********************* 头文件*************************************************/ #include #include /********************* 宏定义*************************************************/ #define uint unsigned int #define uchar unsigned char // --------------- LED 控制端口------------------------------- // #define GLED P1_0〃绿色LED定义 #define RLED P1_1〃红色LED定义 // --------------- 按键输入端口------------------------------- // #define KEY1 P0_0 /********************* 全局变量**********************************************/ unsigned char Uart0_Rx; unsigned char Text_Data[]=" 海舟物联网教育!\r\n"; /********************* 函数声明***********************************************/ void Delay(uint); void Init_LED(void); void Init_Uart0(void); void Init_Sysclk(void); void Uart0_TX_Data(unsigned char *Data,int len); /****************************************************************************** * 函数名称: void Delay(uint n) * 函数功能: 软件延时函数 * 入口参数: * 出口参数: * 备注: ******************************************************************************/ void Delay(uint n) { uint i; for(i=0;i

串行通信接口典型应用举例

串行通信接口典型应用举例 SCI_FLAG .usect ".data0",1 ;SCI标志寄存器 TXD_PTR .usect ".data0",8 ;发送的数据存放区 RXD_PTR .usect ".data0",8 ;接收到的数据存放区 .include "F2407REGS.H" ;引用头部文件 .def _c_int0 ;(1)建立中断向量表 .sect ".vectors" ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B GISR1 ;PM 2 中断优先级1 4 INT2 B PHANTOM ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级3 6 INT4 B PHANTOM ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A中断优先级5 8 INT6 B PHANTOM ;PM C 中断优先级6 9 RESERVED B PHANTOM ;PM E (保留位) 10 SW_INT8 B PHANTOM ;PM 10 用户定义软件中断— … SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断— ;中断子向量入口定义pvecs .sect ".pvecs" ;定义子向量段 PVECTORS B PHANTOM ;保留向量地址偏移量0000h B PHANTOM ;保留向量地址偏移量0001h … B PHANTOM ;保留向量地址偏移量0005h B SCI_RX_ISR ;保留向量地址偏移量0006h SCI接收中断 B PHANTOM ;保留向量地址偏移量0007h … B PHANTOM ;保留向量地址偏移量0041h ;(2)主程序: .text _c_int0 SETC INTM CLRC SXM CLRC OV M CLRC CNF 214

UART串口通信设计实例

2.5 UART串口通信设计实例(1) 接下来用刚才采用的方法设计一个典型实例。在一般的嵌入式开发和FPGA设计中,串口UART是使用非常频繁的一种调试手段。下面我们将使用Verilog RTL编程设计一个串口收发模块。这个实例虽然简单,但是在后续的调试开发中,串口使用的次数比较多,这里阐明它的设计方案,不仅仅是为了讲解RTL编程,而且为了后续使用兼容ARM9内核实现嵌入式开发。 串口在一般的台式机上都会有。随着笔记本电脑的使用,一般会采用USB转串口的方案虚拟一个串口供笔记本使用。图2-7为UART串口的结构图。串口具有9个引脚,但是真正连接入FPGA开发板的一般只有两个引脚。这两个引脚是:发送引脚TxD和接收引脚RxD。由于是串行发送数据,因此如果开发板发送数据的话,则要通过TxD线1 bit接着1 bit 发送。在接收时,同样通过RxD引脚1 bit接着1 bit接收。 再看看串口发送/接收的数据格式(见图2-8)。在TxD或RxD这样的单线上,是从一个周期的低电平开始,以一个周期的高电平结束的。它中间包含8个周期的数据位和一个周期针对8位数据的奇偶校验位。每次传送一字节数据,它包含的8位是由低位开始传送,最后一位传送的是第7位。

这个设计有两个目的:一是从串口中接收数据,发送到输出端口。接收的时候是串行的,也就是一个接一个的;但是发送到输出端口时,我们希望是8位放在一起,成为并行状态(见图2-10)。我们知道,串口中出现信号,是没有先兆的。如果出现了串行数据,则如何通知到输出端口呢?我们引入“接收有效”端口。“接收有效”端口在一般情况下都是低电平,一旦有数据到来时,它就变成高电平。下一个模块在得知“接收有效”信号为高电平时,它就明白:新到了一个字节的数据,放在“接收字节”端口里面。

CSharp串口通信

using System; using System.Collections.Generic; using https://www.360docs.net/doc/111972964.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace SerialPorts { public partial class frm_Main : Form { #region Public Enumerations public enum DataMode { Text, Hex } public enum LogMsgType { Incoming, Outgoing, Normal, Warning, Error }; #endregion private Color[] LogMsgTypeColor = { Color.Orange, Color.Green, Color.Black, Color.Blue, Color.Red }; //禁用和启用程序中各控件的状态 private void EnableControls() { // 基于串口的打开与否,设置控件状态 gbPortSettings.Enabled = !ComPort.IsOpen; btns.Enabled = btnstop.Enabled = txtSendData.Enabled = btnSend.Enabled = ComPort.IsOpen; if (ComPort.IsOpen) btnOpenPort.Text = "关闭串口"; else btnOpenPort.Text = "打开串口"; } //初始化组件的数据,为串口提供相关参数 private void InitializeControlValues() { cmbParity.Items.Clear(); cmbParity.Items.AddRange(Enum.GetNames(typeof(Parity))); cmbStopBits.Items.Clear(); cmbStopBits.Items.AddRange(Enum.GetNames(typeof(StopBits))); cmbPortName.Items.Clear(); foreach (string s in SerialPort.GetPortNames()) cmbPortName.Items.Add(s); cmbPortName.Text = cmbPortName.Items[0].ToString(); cmbParity.Text = cmbParity.Items[0].ToString(); cmbStopBits.Text = cmbStopBits.Items[0].ToString(); cmbDataBits.Text = cmbDataBits.Items[0].ToString(); cmbParity.Text = cmbParity.Items[0].ToString(); cmbBaudRate.Text = cmbBaudRate.Items[0].ToString(); EnableControls(); } //十六进制转换字节数组 private byte[] HexStringToByteArray(string s)

profinet和以太网区别

profinet和工业以太网区别 什么是Profinet PROFINET由PROFIBUS国际组织(PROFIBUS InternaTIonal,PI)推出,是新一代基于工业以太网技术的自动化总线标准。 PROFINET为自动化通信领域提供了一个完整的网络解决方案,囊括了诸如实时以太网、运动控制、分布式自动化、故障安全以及网络安全等当前自动化领域的热点话题,并且,作为跨供应商的技术,可以完全兼容工业以太网和现有的现场总线(如PROFIBUS)技术,保护现有投资。 是新一代基于工业以太网技术的自动化总线标准。作为一项战略性的技术创新,PROFINET为自动化通信领域提供了一个完整的网络解决方案,囊括了诸如实时以太网、运动控制、分布式自动化、故障安全以及网络安全等当前自动化领域的热点话题,并且,作为

跨供应商的技术,可以完全兼容工业以太网和现有的现场总线(如PROFIBUS)技术,保护现有投资。 PROFINET是适用于不同需求的完整解决方案,其功能包括8个主要的模块,依次为实时通信、分布式现场设备、运动控制、分布式自动化、网络安装、IT标准和信息安全、故障安全和过程自动化。 PROFINET 技术定义了三种类型: PROFINET 1.0 基于组件的系统主要用于控制器与控制器通讯 PROFINET-SRT 软实时系统用于控制器与I/O 设备通讯 PROFINET-IRT 硬实时系统用于运动控制 什么是工业以太网 工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络。工业以太网,提供了一个无缝集成到新的多媒体世界的途径。企业内部互联网(Intranet),外部互联网(Extranet),以及国际互联网(Internet)提供的广泛应用不但已经进入今天的办公室领域,而且还可以应用于生产和过程自动化。继10M波特率以太网成功运行之后,具有交换功能,全双工和自适应的100M波特率快速以太网(Fast Ethernet,符合IEEE 802.3u 的标准)也已成功运行多年。采用何种性能的以太网取决于用户的需要。通用的兼容性允许用户无缝升级到新技术。 工业以太网是应用于工业控制领域的以太网技术,在技术上与商用以太网(即IEEE 802.3标准)兼容,但是实际产品和应用却又完全不同。这主要表现普通商用以太网的产品设计时,在材质的选用、产品的强度、适用性以及实时性、可互操作性、可靠性、抗干扰性、本质安全性等方面不能满足工业现场的需要。故在工业现场控制应用的是与商用以太网不同的工业以太网。

如何用VC++实现串口通信

用VC 6.0实现串行通信的三种方法 中国科学院王颖 ---- 摘要:本文介绍了在Windows平台下串行通信的实现机制,讨论了根据不同的条件用Visual C++ 设计串行通信程序的三种方法,并结合实际,实现对温度数据的接收监控。 ---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。依据不同的条件实现对串口的灵活编程控制是我们所需要的。 ---- 在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10S向主机发送一次采样数据,主机向单片机发送相关的控制命令,实现串行数据接收,处理,记录,显示,实时绘制曲线。串行通信程序开发环境为VC++ 6.0。 ---- Windows下串行通信 ---- 与以往DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows 操作系统提供的设备驱动程序来进行数据传递。串行口在Win 32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。与通信设备相关的结构有COMMCONFIG ,COMMPROP,COMMTIMEOUTS,COMSTAT,DCB,MODEMDEVCAPS,MODEMSETTINGS共7个,与通信有关的Windows API函数共有26个,详细说明可参考MSDN帮助文件。以下将结合实例,给出实现串行通信的三种方法。 ---- 实现串行通信的三种方法 ---- 方法一:使用VC++提供的串行通信控件MSComm 首先,在对话框中创建通信控件,若Control 工具栏中缺少该控件,可通过菜单Project --> Add to Project --> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对Windows 通讯驱动程序的API 函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。 ---- 在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm 控件共有27个属性,这里只介绍其中几个常用属性: ---- CommPort 设置并返回通讯端口号,缺省为COM1。 ---- Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 ---- PortOpen 设置并返回通讯端口的状态,也可以打开和关闭端口。 ---- Input 从接收缓冲区返回和删除字符。 ---- Output 向发送缓冲区写一个字符串。 ---- InputLen 设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内

非常重要的PLC知识之PROFINET(二)Profibus、Profinet、Ethernet有什么区别

非常重要的PLC知识之PROFINET(二)Profibus、Profinet、Ethernet有什么区别 关注VX公众号:工控猫PLC,获取更多教学知识 工控猫PLC PROFINET 是一种新的以太网通讯系统,是由西门子公司和Profibus 用户协会开发。PROFINET 具有多制造商产品之间的通讯能力,自动化和工程模式,并针对分布式智能自动化系统进行了优化。其应用结果能够大大节省配置和调试费用。PROFINET 系统集成了基于Profibus 的系统,提供了对现有系统投资的保护。它也可以集成其它现场总线系统。 简单来说,PROFINET=PROFIbus+etherNET,把Profibus的主从结构移植到以太网上,所以profinet会有Controller和Device,他们的关系可以简单的对应于profibus的Master和Slave,当然,是有区别的,但这样对应可以有助于理解。另外由于profinet是基于以太网的,所以可以有以太网的星型、树形、总线型等拓扑结构,而profibus只有总线型。所以profinet就是把profibus的主从结构和ethernet的拓扑结构相结合的产物,其他像等时性等西门子鼓吹的特性其实以太网也有,只不过profinet由于有Controller这样的控制单元可以提高等时性的精度而已。

PROFINET 是一种支持分布式自动化的高级通讯系统。除了通讯功能外,PROFINET 还包括了分布式自动化概念的规范,这是基于制造商无关的对象和连接编辑器和XML 设备描述语言。以太网TCP/IP 被用于智能设备之间时间要求不严格的通讯。所有时间要求严格的实时数据都是通过标准的Profibus DP 技术传输,数据可以从Profibus DP 网络通过代理集成到PROFINET 系统。PROFINET 是唯一使用已有的IT 标准,没有定义其专用工业应用协议的总线。它的对象模式的是基于微软公司组件对象模式(COM) 技术。对于网络上所有分布式对象之间的交互操作,均使用微软公司的DCOM 协议和标准TCP 和UDP 协议。

PC机之间串口通信的实现-Read

PC机之间串口通信的实现 一、实验目的 1.熟悉微机接口实验装置的结构和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.学会串行通信程序的编制方法。 二、实验内容与要求 1.基本要求 主机接收开关量输入的数据(二进制或十六进制),从键盘上按“传输”键(可自行定义),就将该数据通过8251A传输出去。终端接收后在显示器上显示数据。具体操作说明如下: (1)出现提示信息“start with R in the board!”,通过调整乒乓开关的状态,设置8位数据; (2)在小键盘上按“R”键,系统将此时乒乓开关的状态读入计算机I中,并显示出来,同时显示经串行通讯后,计算机II接收到的数据; (3)完成后,系统提示“do you want to send another data? Y/N”,根据用户需要,在键盘按下“Y”键,则重复步骤(1),进行另一数据的通讯;在键盘按除“Y”键外的任意键,将退出本程序。 2.提高要求 能够进行出错处理,例如采用奇偶校验,出错重传或者采用接收方回传和发送方确认来保证发送和接收正确。 三、设计报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单 5.设计结果和体会(包括遇到的问题及解决的方法) 四、8251A通用串行输入/输出接口芯片 由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。能够完成上述“串←→并”转换功能的电路,通常称为“通用异步收发器”(UART:Universal

dsp实验-UART串口通信实验

实验八、UART串口通信实验 一、实验目的 1. 了解RS232通信接口的基本原理; 2. 熟悉通信接口芯片(TL16C550C)在DSP I/O空间寄存器的地址映射 及工作原理; 3.了解异步通信中串口模式选择、设置数据传输格式、设置波特率、建立连接、传输数据和断开连接等功能。 二、实验设备 1. 集成开发环境CCS 2. 实验开发板TMS320VC5402DSK、RS232接口电缆线及附件 3.程序“串口调试程序v2.2.exe” 三、实验内容及步骤 实验操作流程参照前面实验。 1 在汇编环境调试Uart:(实现字符或文件的发送和回发功能) a. 实验代码main.s54、uartasm.cmd和uart_init.s54、dsp_init.s54 以及uartasm.h54,c5402_dsk.gel(说明同前)。 b. 串口调试程序“串口调试程序v2.2.exe” , 汇编调试中Build option设置情况与CODEC实验中的汇编调试设置及出错情况相同。 c. 程序文件介绍: 1)“uart.h54”定义了一些寄存器的地址以及函数类型。 2)“dsp_init.s54”与dsp工作有关的寄存器ST1、PMST、IMR、IFR和SWWSR,并且清除INTM位以及设定时钟模式。 3)“uart_init.s54”先检测UART模块是否工作正常,然后设定UART模块的寄存器,如CNTL1、CNTL2、LCR、MSB&LSB(设定波特率)、FCR、IER 等。 4)“main.s54”主程序查看标志位,检测是否UART存在有效接收数据。若有,则执行一定的处理,包括亮LED以及将接收的数据从UART回发。 d. 执行程序时,只要发送数据时,可在串口调试程序的接收窗口立即看到回发的数据。 e. 程序中UART工作参数设置如下: 1)波特率9600(或更低)、无数据校验、字符长度8比特、停止位1、

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.360docs.net/doc/111972964.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

Profibus和ProfiNET通信上的区别

P r o f i b u s和P r o f i N E T 通信上的区别 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

P r o f i b u s/P r o f i N E T通信上的区别一、PROFINET和PROFIBUS的区别 PROFINET和PROFIBUS是PNO组织推出的两种现场总线。 两者本身没有可比性,PROFINET基于工业以太网,而PROFIBUS基于RS485串行总线,两者协议上由于介质不同完全不同,没有任何关联。 两者相似的地方都具有很好的实时性,原因在于都使用了精简的堆栈结构。 基于标准以太网的任何开发都可以直接应用在PROFINET网络中,世界上基于以太网的解决方案的开发者远远多于PROFIBUS开发者,所以,有更多的可用资源去创新技术。 对于PROFIBUS,数据传输的带宽最大为12Mbps,对于PROFINET,数据传输的带宽为100Mbps。 对于PROFIBUS,数据传输的方式为半双工,对于PROFINET,数据传输的方式为全双工。 对于PROFIBUS,一致性数据最大为32bytes,对于PROFINET,一致性数据最大为254bytes。 对于PROFIBUS,用户数据的最大为244bytes,对于PROFINET,用户数据的最大为1400bytes。 对于PROFIBUS,12Mbps的最大总线长度为100m,对于PROFINET,设备之间的总线长度为100m。 对于PROFIBUS,引导轴必须在DP主站中运行,对于PROFINET,引导轴可以运行在任意SIMOTION中。

51单片机和计算机之间实现串口通信的电路图

51单片机和计算机之间实现串口通信的电路图 串口通讯参考程序如下: 来源:深入浅出AVR单片机 #include unsigned char UART_RX; //定义串口接收数据变量 unsigned char RX_flag; //定义穿行接收标记 /**************************************************************************************** ***** 函数名:UART串口初始化函数 调用:UART_init(); 参数:无 返回值:无 结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用) 备注:振荡晶体为12MHz,PC串口端设置[ 4800,8,无,1,无] /**************************************************************************************** ******/ void UART_init (void){ EA = 1; //允许总中断(如不使用中断,可用//屏蔽) ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**************************************************************************************** ******/ /**************************************************************************************** ***** 函数名:UART串口接收中断处理函数 调用:[SBUF收到数据后中断处理] 参数:无 返回值:无 结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收

UART串行口简介

UART异步串行口 UART异步串行口简介 数据通信的基本方式可分为并行通信与串行通信两种: 并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。 串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。 UART 异步串行口的传输格式 异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然 而在同一个字符中的两个相邻位代码间的时间间隔是固定的。 通信协议(通信规程):是指通信双方约定的一些规则。在使用异步串口传送一个 字符的信息时,对资料格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验位、停止位。通讯时序图如下: 开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为 起始位,然后出现在通信线上的是字符的二进制编码数据。 每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇 数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。 最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位 的时间宽度。 至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。 每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特 率为110,150,300,600,1200,2400,4800,9600 ,19200,38400,115200等。 S3C2410的异步串行口 1

各种工业以太网的区别

各种工业以太网的区别其实就是协议的区别,其中最主要的还是应用层协议的区别。 都是以太网通讯,只是每个公司的叫法不一样,西门子用PROFINET、AB用Ethernet IP、施耐德的MODBUS TCP/IP。 取个例子,以太网就像高速公路,Ethernet/IP、Profinet、Modbus TCP/IP分别像高速公路上的宝马、奔驰、奥迪车,都可以从一个城市把物品运送到另一城市。但是每个车上安装的零件无法和另一车上的零件进行更换。 EtherCAT(以太网控制自动化技术)是一个以以太网为基础的开放架构的现场总线系统,EterCAT名称中的CAT为ControlAutomation Technology(控制自动化技术)首字母的缩写。最初由德国倍福自动化有限公司(Beckhoff AutomationGmbH)研发。EtherCAT为系统的实时性能和拓扑的灵活性树立了新的标准,同时,它还符合甚至降低了现场总线的使用成本。EtherCAT的特点还包括高精度设备同步,可选线缆冗余,和功能性安全协议(SIL3)。 Ethernet/IP是一个面向工业自动化应用的工业应用层协议。它建立在标准UDP/IP与TCP/IP 协议之上,利用固定的以太网硬件和软件,为配置、访问和控制工业自动化设备定义了一个应用层协议西蒙公司开发 Ethernt/IP属于ODVA组织,Rockwell只是其中一个推广力度比较大的公司而已。施耐德也是ODVA组织的成员,施耐德所有PLC都可以支持Ethernt/IP协议。Ethernt/IP协议是十大总线之一,和Controlnet、Devicenet一起称为CIP总线。可以实现协议间路由,但是需要Rslinx 软件进行配置。通讯时需要设置RPI参数,没有任何客户端的反馈信息,因此不管现场客户端是否收到数据,数据一致由服务器不断的发,缺少相应的检测。 PROFINET由PROFIBUS国际组织(PROFIBUS International,PI)推出,是新一代基于工业以太网技术的自动化总线标准。作为一项战略性的技术创新,PROFINET为自动化通信领域提供了一个完整的网络解决方案,囊括了诸如实时以太网、运动控制、分布式自动化、故障安全以及网络安全等当前自动化领域的热点话题,并且,作为跨供应商的技术,可以完全兼容工业以太网和现有的现场总线(如PROFIBUS)技术,保护现有投资。 PROFINET是适用于不同需求的完整解决方案,其功能包括8个主要的模块,依次为实时通信、分布式现场设备、运动控制、分布式自动化、网络安装、IT标准和信息安全、故障安全和过程自动化。 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品。显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS 报文的用途。协议的最通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域总线或I/O 模块的网关服务的。 MODBUS/TCP协议是作为一种(实际的)自动化标准发行的。既然MODBUS已经广为人知,该规范只将别处没有收录的少量信息列入其中。然而,本规范力图阐明MODBUS中哪种功能对于普通自动化设备的互用性有价值,哪些部分是MODBUS作为可编程的协议交替用于PLC’s的“多余部分”。 它通过将配套报文类型“一致性等级”,区别那些普遍适用的和可选的,特别是那些适用于特殊设备如PLC’s的报文。 Modbus TCP/IP由Modbus IDA组织提出,有施耐德旗下的Modicon公司主推,在目前施耐德所有PLC产品中都支持,同时也支持Ethernet/IP协议,Modbus TCP/IP是免费的、全开放协议,可以用VB等高级编程语言调用winsock控件即可实现与PLC的数据通讯,因此,很

MFC实现对串口通信的编写

在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。计算机和单片机(如MCS-51)都具有串行通信口,可以设计相应的串口通信程序,完成二者之间的数据通信任务。 实际工作中利用串口完成通信任务的时候非常之多。已有一些文章介绍串口编程的文章在计算机杂志上发表。但总的感觉说来不太全面,特别是介绍32位下编程的更少,且很不详细。笔者在实际工作中积累了较多经验,结合硬件、软件,重点提及比较新的技术,及需要注意的要点作一番探讨。希望对各位需要编写串口通信程序的朋友有一些帮助 一.串行通信的基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 串口通信程序的流程如下图: 二.串口信号线的接法 一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍是以25芯的RS-232C为例。 ①主要信号线定义: 2脚:发送数据TXD; 3脚:接收数据RXD; 4脚:请求发送RTS; 5脚:清除发送CTS; 6脚:数据设备就绪DSR;20脚:数据终端就绪DTR;8脚:数据载波检测DCD; 1脚:保护地; 7脚:信号地。 ②电气特性: 数据传输速率最大可到20K bps,最大距离仅15m. 注:看了微软的MSDN 6.0,其Windows API中关于串行通讯设备(不一定都是串口RS-232C或RS-422或RS-449)速率的设置,最大可支持到RS_256000,即256K bps! 也不知道到底是什么串

SPI、I2C、UART三种串行总线的原理、区别及应用

简单描述: SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI和I2C是做在电路板上的。而UART和SMBUS是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了

51单片机串口通信的原理与应用流程解析

51单片机串口通信的原理与应用流程解析 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。

PROFIBUSROFINETEthernet三者的区别

PROFIBUS,PROFINET,Ethernet三者的区别【工控老鬼】 简单一点说,PROFINET=PROFIbus+etherNET,把Profibus的主从结构移植到以太网上,所以profinet会有Controller和Device,他们的关系可以简单的对应于profibus 的Master和Slave,当然,是有区别的,但这样对应可以有助于理解。另外由于profinet是基于以太网的,所以可以有以太网的星型、树形、总线型等拓扑结构,而profibus只有总线型。所以profinet就是把profibus的主从结构和ethernet的拓扑结构相结合的产物,其他像等时性等西门子鼓吹的特性其实以太网也有,只不过profinet 由于有Controller这样的控制单元可以提高等时性的精度而已。 PROFINET 是一种新的以太网通讯系统,是由西门子公司和 Profibus 用户协会开发。 PROFINET 具有多制造商产品之间的通讯能力,自动化和工程模式,并针对分布式智能自动化系统进行了优化。其应用结果能够大大节省配置和调试费用。PROFINET 系统集成了基于 Profibus 的系统,提供了对现有系统投资的保护。它也可以集成其它现场总线系统。 PROFINET 是一种支持分布式自动化的高级通讯系统。除了通讯功能外,PROFINET 还包括了分布式自动化概念的规范,这是基于制造商无关的对象和连接编辑器和 XML 设备描述语言。以太网 TCP/IP 被用于智能设备之间时间要求不严格的通讯。所有时间要求严格的实时数据都是通过标准的 Profibus DP 技术传输,数据可以从 Profibus DP 网络通过代理集成到 PROFINET 系统。 PROFINET 是唯一使用已有的IT 标准,没有定义其专用工业应用协议的总线。它的对象模式的是基于微软公司组件对象模式 (COM) 技术。对于网络上所有分布式对象之间的交互操作,均使用微软公司的 DCOM 协议和标准 TCP 和 UDP 协议。 在 PROFINET 概念中,设备和工厂被分成为技术模块,每个模块包括机械、电子和应用软件。这些组件的应用软件可使用专用的编程工具进行开发并下载到相关的控制

相关文档
最新文档