串口通信协议

串口通信协议

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

什么是串口

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:

a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数

据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

什么是RS-232

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

DB-9针连接头

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

从计算机连出的线的截面。

RS-232针脚的功能:

数据:

TXD(pin 3):串口数据输出(Transmit Data)

RXD(pin 2):串口数据输入(Receive Data)

握手:

RTS(pin 7):发送数据请求(Request to Send)

CTS(pin 8):清除发送(Clear to Send)

DSR(pin 6):数据发送就绪(Data Send Ready)

DCD(pin 1):数据载波检测(Data Carrier Detect)

DTR(pin 4):数据终端就绪(Data Terminal Ready)

地线:

GND(pin 5):地线

其他

RI(pin 9):铃声指示

什么是RS-422

RS-422(EIA RS-422-AStandard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。

什么是RS-485

RS-485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。

DB-9 引脚连接

-------------

\ 1 2 3 4 5 /

\ 6 7 8 9 /

-------

从计算机连出的线的截面。

RS-485的引脚的功能

数据:1(DATA-) 2(DATA+)

地线:5

什么是握手

RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodem。

a,软件握手:我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModem允许用户使能或者禁止用户使用两个控制字符XON和OXFF。这些字符在通信中由接收方发送,使发送方暂停。

例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON,典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,L abWindows发送XOFF。此外,如果XOFF传输被打断,LabWindows会在buffer

达到75%和90%时发送XOFF。显然,发送方必须遵循此守则以保证传输继续。

b,硬件握手:第二种是使用硬件线握手。和Tx和Rx线一样,RTS/CTS和DT R/DSR一起工作,一个作为输出,另一个作为输入。第一组线是RTS(Request to Send)和CTS(Clear toSend)。当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线是DT

R(DataTerminal Ready)和DSR(Data SetReady)。这些现主要用于Modem通信。使得串口和Modem通信他们的状态。例如:当Modem已经准备好接收来自P C的数据,它置高DTR线,表示和电话线的连接已经建立。读取DSR线置高,PC 机开始发送数据。一个简单的规则是DTR/DSR用于表示系统通信就绪,而RTS/CT S用于单个数据包的传输。

在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:

当PC发送数据:

RS-232库必须检测CTS线高后才能发送数据。

当PC接收数据:

如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。

如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。

如果端口队列近乎空了,库函数置高RTS,但使DRT维持高电平。

如果端口关闭,库函数置低RTS和DTR。

c,XModem握手:最后讨论的握手叫做XModem文件传输协议。这个协议在M odem通信中非常通用。尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem应用对用户隐藏了。只要PC和其他设备使用XModem协议,在文件传输中就使用Lab Windows的XModem函数。函数是XModemConfig,XModemSend和XModemRe ceive。

XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、w ait_delay、start_delay、max_tries、packet_size。这些参数需要通信双方认定,标准的XModem有一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。

由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。这导致接收的数据比原数据多。在XModem情况下一定不要使用XON/XOFF,因为XModem发送方发出包的数目很可能增加到XON/OFF控制字符的值,从而导致通信故障。

RJ45接口通常用于数据传输,最常见的应用为网卡接口。

RJ45是各种不同接头的一种类型(例如:RJ11也是接头的一种类型,不过它是电话上用的);RJ45头跟据线的排序不同的法有两种,一种是橙白、橙、绿白、蓝、蓝白、绿、棕白、棕;另一种是绿白、绿、橙白、蓝、蓝白、橙、棕白、棕;因此使用RJ45接头的线也有两种即:直通线、交叉线。

RJ45型网卡接口

10 100base tx RJ45接口是常用的以太网接口,支持10兆和100兆自适应的网络连接速度,

网卡上以及Hub 上接口的外观为8 芯母插座,如图:

RJ45接口pc端的,网线为8 芯公插头

10 100base tx RJ45接口引脚定义如下

RJ45接口引脚定义

RJ45型网线插头

RJ45 型网线插头又称水晶头,共有八芯做成,广泛应用于局域网和ADSL 宽带上网用户的网络设备间网线(称作五类线或双绞线)的连接。在具体应用时,RJ4

5 型插头和网线有两种连接方法(线序),分别称作T568A 线序(图1)和T568

B 线序(图2)。

RJ45 型网线插头引脚号的识别方法是:手拿插头,有8 个小镀金片的一端向上,有网线装入的矩形大口的一端向下,同时将没有细长塑料卡销的那个面对着你的眼睛,从左边第一个小镀金片开始依次是第1 脚、第2 脚、…、第8 脚。

图1:RJ45 型网线插头的T568A 线序接法示意图

T568A

T568A 线序的适用范围

这种接法用于网络设备需要交叉互连的场合,所谓交叉是指网线的一端和另一端与RJ45 网线插头的接法不同,一端按T568A 线序接(图1),另一端按T568B 线序接(图2),即有几根网线在另一端是先做了交叉才接到RJ45 插头上去的,适用的连接场合有:

1. 电脑←—→电脑,称对等网连接,即两台电脑之间只通过一条网线连接就可以互相传递数据;

2. 集线器←—→集线器;

3. 交换机←—→交换机。

如图1 所示,RJ45 型网线插头各脚与网线颜色标志的对应关系是:

插头脚号网线颜色

1————绿白

2————绿

3————橙白

4————蓝

5————蓝白

6————橙

7————棕白

8————棕

图2:RJ45 型网线插头的T568B 线序接法示意图

T568B

T568B 线序的适用范围

一、直连线互连

网线的两端均按T568B 接

1. 电脑←—→ADSL 猫

2. ADSL猫←—→ADSL 路由器的WAN 口

3. 电脑←—→ADSL 路由器的LAN 口

4. 电脑←—→集线器或交换机

二、交叉互连

网线的一端按T568B 接,另一端按T568A 接

1. 电脑←—→电脑,即对等网连接

2. 集线器←—→集线器

3. 交换机←—→交换机

如图2 所示,RJ45 型网线插头各脚与网线颜色标志的对应关系是:插头脚号网线颜色

1————橙白

2————橙

3————绿白

4————蓝

5————蓝白

6————绿

7————棕白

8————棕

工业网络是指安装在工业生产环境中的一种全数字化、双向、多站的通信系统。具体有以下三种类型:

(1)专用、封闭型工业网络:该网络规范是由各公司自行研制,往往是针对某一特定应用领域而设,效率也是最高。但在相互连接时就显得各项指标参差不齐,推广与维护都难以协调。专用型工业网络有三个发展方向:①走向封闭系统,以保证市场占有率。②走向开放型,使它成为标准。③设计专用的Gateway与开放型网络连接。

(2)开放型工业网络:除了一些较简单的标准是无条件开放外,大部分是有条件开放,或仅对成员开放。生产商必须成为该组织的成员,产品需经过该组织的测试、认证,方可在该工业网络系统中使用。

(3)标准工业网络:符合国际标准IEC61158、IEC62026、ISO11519或欧洲标准EN50170的工业网络,它们都会遵循ISO/OSI7层参考模型。工业网络大都只使用物理层、数据链路层和应用层。一般工业网络的制定是根据现有的通信界面,或是自己设计通信IC,然后再依据应用领域设定数据传输格式。例如,DeviceNet的物理层与数据链路层是以CANbus为基础,再增加适用于一般I/O点应用的应用层规范。

目前IEC61158认可的八种工业现场总线标准分别是:Fieldbus Type1、Profib us、ControlNet、P-NET、Foundation Fieldbus、SwiftNet、WorldFIP和Interbus。

工业网络的特点

网络技术的产生对工业控制来说有以下优点:(1)安装布线方便;(2)模块化;(3)易于诊断;(4)自我建构;(5)企业化管理。虽然工业控制网络有这些优点,但实际上工业控制网络的进展却远不及商业网络,主要原因有二:(1)工业网络标准太多。各厂商从自身利益考虑会极力推行自己的网络标准。不同的网络协议针对特定的应用领域,因而具有各自的特点,各有其存在的环境和价值。而且新的协议还在不断产生,这样用户往往无所适从,担心一旦选用了一种协议后,会被某些厂商钳制。(2)网络化所必须增加的成本对用户来讲往往是一项沉重的负担。所以直到现在,具有网络接口的元件还很少,运动控制器也是如此。

工业网络的架构

现有的工业控制网络可以根据其应用场合的不同分为以下几种[1]:

(1)SensorBus:低阶网络,通常用来连接低阶的传感器、执行器等现场设备,传输数据量最少,例如AS-i、Interbus-S。

(2)DeviceBus:它界定的范围最广,只要是能对网络化设备提供通信或诊断功能的都属于这种类型。例如CANOpen、DeviceNet、LonWorks、Profibus-DP。

(3)FieldBus:通常是架构在Devicebus之上,用来传输大批量的数据,但传输速度较慢。有的也提供一些设备终端控制的功能,例如WorldFIP、Foundation Fiel dbus、Profibus-PA。

(4)ControlBus:提供高阶控制设备(例如PLC,CNC)间的对等网络通信(Peer-to -Peer),例如ControlNet。

(5)EnterpriseNet:企业的骨干网络,一般为Ethernet TCP/IP。

这五类网络的连接方式是,先将同一类型的网络串接起来,然后再把不同类型的网络通过Gateway连接起来。

工业以太网

工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络。利用工业以太网,SI MATIC NET 提供了一个无缝集成到新的多媒体世界的途径。企业内部互联网(Intranet),外部互联网(Extranet),以及国际互联网(Internet) 提供的广泛应用不但已经进入今天的办公室领域,而且还可以应用于生产和过程自动化。继10M波特率以太网成功运行之后,具有交换功能,全双工和自适应的100M波特率快速以太网(Fast Ethernet,符合IEEE 802.3u 的标准)也已成功运行多年。采用何种性能的以太网取决于用户的需要。通用的兼容性允许用户无缝升级到新技术。

为用户带来的利益

----市场占有率高达80%,以太网毫无疑问是当今LAN(局域网)领域中首屈一指的网络。以太网优越的性能,为您的应用带来巨大的利益:

通过简单的连接方式快速装配。

通过不断的开发提供了持续的兼容性,因而保证了投资的安全。

通过交换技术提供实际上没有限制的通讯性能。

各种各样联网应用,例如办公室环境和生产应用环境的联网。

公司之间的通讯

通过接入WAN(广域网)可实现公司之间的通讯,例如,ISDN 或Internet 的接入。

----SIMATIC NET基于经过现场应用验证的技术,SIMATIC NET已供应多于40 0,000个节点,遍布世界各地,用于严酷的工业环境,包括有高强度电磁干扰的区域。

工业以太网络的构成

----一个典型的工业以太网络环境,有以下三类网络器件:

网络部件

连接部件:

FC 快速连接插座

ELS(工业以太网电气交换机)

ESM(工业以太网电气交换机)

SM(工业以太网光纤交换机)

MC TP11(工业以太网光纤电气转换模块)

通信介质:

普通双绞线,工业屏蔽双绞线和光纤

SIMATIC PLC控制器上的工业以太网通讯处理器。用于将SIMATIC PLC连接到工业以太网。

PG/PC 上的工业以太网通讯处理器。用于将PG/PC连接到工业以太网。

工业以太网重要性能

----为了应用于严酷的工业环境,确保工业应用的安全可靠,SIMATIC NET 为以太网技术补充了不少重要的性能:

工业以太网技术上与IEEE802.3/802.3u兼容,使用ISO和TCP/IP 通讯协议10/100M 自适应传输速率

冗余24VDC 供电

简单的机柜导轨安装

方便的构成星型、线型和环型拓扑结构

高速冗余的安全网络,最大网络重构时间为0.3 秒

用于严酷环境的网络元件,通过EMC 测试

通过带有RJ45 技术、工业级的Sub-D 连接技术和安装专用屏蔽电缆的Fast Connect连接技术,确保现场电缆安装工作的快速进行

简单高效的信号装置不断地监视网络元件

符合SNMP(简单的网络管理协议)

可使用基于web 的网络管理

使用VB/VC 或组态软件即可监控管理网络

工业以太网联网设备基本知识

今天的控制系统和工厂自动化系统,以太网的应用几乎已经和PLC一样普及。但现场工程师们对以太网的了解,大多来自他们对传统商业以太网的认识。很多控制系统工程的实施甚至是直接让IT部门的技术人员来实施。但是,IT工程师们对于以太网的了解,往往局限于办公自动化商业以太网的实施经验,可能导致工业以太网在工业控制系统中实施的简单化和商业化,不能真正理解工业以太网在工业现场的意义,也无法真正利用工业以太网内在的特殊功能,常常造成工业以太网现场实施的不彻底,给整个控制系统留下不稳定因素。

那么选择正确的工业以太网要考虑哪些因素?简单的来说,要从以太网通讯协议、电源、通信速率、工业环境认证考虑、安装方式、外壳对散热的影响、简单通信功能和通信管理功能、电口或光口的考虑。这些都是最基本需要了解的产品选择因素。如果对工业以太网的网络管理有更高要求,则需要考虑所选择产品的高级功能如:信号强弱、端口设置、出错报警、串口使用、主干(TrunkingTM)冗余、环网冗余、服务质量(QoS)、虚拟局域网(VLAN)、简单网络管理协议(SNMP)、端口镜像等等其他工业以太网管理交换机中可以提供的功能。不同的控制系统对网络的管理功能要求不同,自然对管理型交换机的使用也有不同要求。控制工程师们应该根据其系统的设计要求,挑选适合自己系统的工业以太网产品。

由于工业环境对工业控制网络可靠性能的超高要求,工业以太网的冗余功能应运而生。从快速生成树冗余(RSTP)、环网冗余(RapidRingTM)到主干冗余(TrunkingTM),都有各自不同的优势和特点,控制工程师们可以根据自己的要求进行选择。为了更好

地帮助大家了解和学习工业以太网冗余技术的特点,让我们首先回顾以下以太网设备的发展过程。

集线器(Hub)

相信绝大多数人都熟悉集线器。很多人使用这种简易设备去连接各种基于以太网的设备,如个人计算机,可编程控制器等。集线器接收到来自某一端口的消息,再将消息广播到其它所有的端口。对来自任一端口的每一条消息,集线器都会把它传递到其它的各个端口。在消息传递方面,集线器是低速低效的,可能会出现消息冲突。然而,集线器的使用非常简单-实际上可以即插即用。集线器没有任何华而不实的功能,也没有冗余功能。

非管理型交换机(Unmanaged Switch)

集线器的发展产生了一种叫非管理型交换机的设备。它能实现消息从一个端口到另一个端口的路由功能,相对集线器更加智能化。非管理型交换机能自动探测每台网络设备的网络速度。另外,它具有一种称为“MAC地址表”的功能,能识别和记忆网络中的设备。换言之,如果端口2收到一条带有特定识别码的消息,此后交换机就会将所有具有那种特定识别码的消息发送到端口2。这种智能避免了消息冲突,提高了传输性能,相对集线器是一次巨大的改进。然而,非管理型交换机不能实现任何形式的通信检测和冗余配置功能。

管理型交换机(Managed Switch)

以太网连接设备发展的下一代产品是管理型交换机。相对集线器和非管理型交换机,管理型交换机拥有更多更复杂的功能,价格也高出许多-通常是一台非管理型交换机的3~4倍。管理型交换机提供了更多的功能,通常可以通过基于网络的接口实现完全配置。它可以自动与网络设备交互,用户也可以手动配置每个端口的网速和流量控制。一些老设备可能无法使用自动交互功能,因此手动配置功能是必不可缺的。

绝大多数管理型交换机通常也提供一些高级功能,如用于远程监视和配置的SN MP(简单网络管理协议),用于诊断的端口映射,用于网络设备成组的VLAN(虚拟局域网),用于确保优先级消息通过的优先级排列功能等。利用管理型交换机,可以组建冗余网络。使用环形拓扑结构,管理型交换机可以组成环形网络。每台管理型交换机能自动判断最优传输路径和备用路径,当优先路径中断时自动阻断(block)备用路径。

工业以太网应用安全的研究

工业以太网是当前工业控制领域的研究热点。工业以太网重点在于利用交换式以太网技术为控制器和操作站,各种工作站之间的相互协调合作提供一种交互机制并和上层信息网络无缝集成。目前工业以太网开始在监控层网络上逐渐占据主流位置,正在向现场设备层网络渗透。工业以太网相对于以往自动化技术有很多优势,然而事物

是相对的,在我们享受开放互联技术进步的成果同时应该对它们存在的隐患和可能带来的严重后果要有深刻认识。

1 工业以太网的特点及安全要求

虽然脱胎于Intranet、Internet等类型的信息网络,但是工业以太网是面向生产过程,对实时性、可靠性、安全性和数据完整性有很高的要求。既有与信息网络相同的特点和安全要求,也有自己不同于信息网络的显著特点和安全要求:(1)工业以太网是一个网络控制系统,实时性要求高,网络传输要有确定性。

(2)整个企业网络按功能可分为处于管理层的通用以太网和处于监控层的工业以太网以及现场设备层(如现场总线)。管理层通用以太网可以与控制层的工业以太网交换数据,上下网段采用相同协议自由通信。

(3)工业以太网中周期与非周期信息同时存在,各自有不同的要求。周期信息的传输通常具有顺序性要求,而非周期信息有优先级要求,如报警信息是需要立即响应的。

(4)工业以太网要为紧要任务提供最低限度的性能保证服务,同时也要为非紧要任务提供尽力服务,所以工业以太网同时具有实时协议也具有非实时协议。

基于以上特点,有如下安全应用要求:

(1)工业以太网应该保证实时性不会被破坏,在商业应用中,对实时性的要求基本不涉及安全,而过程控制对实时性的要求是硬性的,常常涉及生产设备和人员安全。

(2)当今世界舞台,各种竞争异常激烈。对于很多企业尤其是掌握领先技术的企业,作为其技术实际体现的生产工艺往往是企业的根本利益。一些关键生产过程的流程工艺乃至运行参数都有可能成为对手窃取的目标。所以在工业以太网的数据传输中要防止数据被窃取。

(3)开放互联是工业以太网的优势,远程的监视、控制、调试、诊断等极大的增强了控制的分布性、灵活性,打破了时空的限制,但是对于这些应用必须保证经过授权的合法性和可审查性。

2 工业以太网的应用安全问题分析

(1)在传统工业工业以太网中上下网段使用不同的协议无法互操作,所以使用一层防火墙防止来自外部的非法访问,但工业以太网将控制层和管理层连接起来,上下网段使用相同的协议,具有互操作性,所以使用两级防火墙,第二级的防火墙用于屏蔽内部网络的非法访问和分配不同权限合法用户的不同授权。另外还可用根据日志记录调整过滤和登录策略。

要采取严格的权限管理措施,可以根据部门分配权限,也可以根据操作分配权限。由于工厂应用专业性很强,进行权限管理能有效避免非授权操作。同时要对关键性工作站的操作系统的访问加以限制,采用内置的设备管理系统必须拥有记录审查功能,

数据库自动记录设备参数修改事件:谁修改,修改的理由,修改之前和之后的参数,从而可以有据可查。

(2)在工业以太网的应用中可以采用加密的方式来防止关键信息窃取。目前主要存在两种密码体制:对称密码体制和非对称密码体制。对称密码体制中加密解密双方使用相同的密钥且密钥保密,由于在通信之前必须完成密钥的分发,该体制中这一环节是不安全的。所以采用非对称密码体制,由于工业以太网发送的多为周期性的短信息,所以采用这种加密方式还是比较迅速的。对于工业以太网来说是可行的。还要对外部节点的接入加以防范。

(3)工业以太网的实时性目前主要是由以下几点保证:限制工业以太网的通信负荷,采用100M的快速以太网技术提高带宽,采用交换式以太网技术和全双工通信方式屏蔽固有的CSMA/CD机制。随着网络的开放互连和自动化系统大量IT技术的引入,加上TCP/IP协议本身的开放性和层出不穷的网络病毒和攻击手段,网络安全可以成为影响工业以太网实时性的一个突出问题。

1)病毒攻击。

在互联网上充斥着类似Slammer、“冲击波”等蠕虫病毒和其它网络病毒的袭击。以蠕虫病毒为例,这些蠕虫病毒攻击的直接目标虽然通常是信息层网络的PC机和服务器,但是攻击是通过网络进行的,因此当这些蠕虫病毒大规模爆发时,交换机、路由器会首先受到牵连。用户只有通过重启交换路由设备、重新配置访问控制列表才能消除蠕虫病毒对网络设备造成的影响。蠕虫病毒攻击能够导致整个网络的路由震荡,这样可能使上层的信息层网络部分流量流入工业以太网,加大了它的通信负荷,影响其实时性。在控制层也存在不少计算机终端连接在工业以太网交换机,一旦终端感染病毒,病毒发作即使不能造成网络瘫痪,也可能会消耗带宽和交换机资源。

2)MAC攻击。

工业以太网交换机通常是二层交换机,而MAC地址是二层交换机工作的基础,网络依赖MAC地址保证数据的正常转发。动态的二层地址表在一定时间以后(AGE TIME)会发生更新。如果某端口一直没有收到源地址为某一MAC地址的数据包,那么该MAC地址和该端口的映射关系就会失效。这时,交换机收到目的地址为该MA C地址的数据包就会进行泛洪处理,对交换机的整体性能造成影响,能导致交换机的查表速度下降。而且,假如攻击者生成大量数据包,数据包的源MAC地址都不相同,就会充满交换机的MAC地址表空间,导致真正的数据流到达交换机时被泛洪出去。这种通过复杂攻击和欺骗交换机入侵网络方式,近来已有不少实例。一旦表中MAC 地址与网络段之间的映射信息被破坏,迫使交换机转储自己的MAC地址表,开始失效恢复,交换机就会停止网络传输过滤,它的作用就类似共享介质设备或集线器,C SMA/CD机制将重新作用从而影响工业以太网的实时性。

交换机安全技术

目前信息层网络采用的交换机安全技术主要包括以下几种。

流量控制技术,把流经端口的异常流量限制在一定的范围内。访问控制列表(A CL)技术,ACL通过对网络资源进行访问输入和输出控制,确保网络设备不被非法访问或被用作攻击跳板。安全套接层(SSL)为所有HTTP流量加密,允许访问交换机上基于浏览器的管理GUI。802.1x和RADIUS 网络登录控制基于端口的访问,以进行验证和责任明晰。源端口过滤只允许指定端口进行相互通信。Secure Shell (SSHv1/SSHv2)加密传输所有的数据,确保IP网络上安全的CLI远程访问。安全FTP 实现与交换机之间安全的文件传输,避免不需要的文件下载或未授权的交换机配置文件复制。不过,应用这些安全功能仍然存在很多实际问题,例如交换机的流量控制功能只能对经过端口的各类流量进行简单的速率限制,将广播、组播的异常流量限制在一定的范围内,而无法区分哪些是正常流量,哪些是异常流量。同时,如何设定一个合适的阈值也比较困难。一些交换机具有ACL,但如果ASIC支持的ACL

少仍旧没有用。一般交换机还不能对非法的ARP(源目的MAC为广播地址)进行特殊处理。网络中是否会出现路由欺诈、生成树欺诈的攻击、802.1x的DoS攻击、对交换机网管系统的DoS攻击等,都是交换机面临的潜在威胁。

在控制层,工业以太网交换机,一方面可以借鉴这些安全技术,但是也必须意识到工业以太网交换机主要用于数据包的快速转发,强调转发性能以提高实时性。应用这些安全技术时将面临实时性和成本的很大困难,目前工业以太网的应用和设计主要是基于工程实践和经验,网络上主要是控制系统与操作站、优化系统工作站、先进控制工作站、数据库服务器等设备之间的数据传输,网络负荷平稳,具有一定的周期性。但是,随着系统集成和扩展的需要、IT技术在自动化系统组件的大力应用、B/S监控方式的普及等等,对网络安全因素下的可用性研究已经十分必要,例如猝发流量下的工业以太网交换机的缓冲区容量问题以及从全双工交换方式转变成共享方式对已有

网络性能的影响。所以,另一方面,工业以太网必须从自身体系结构入手,加以应对。

Can网络即控制器局域网CAN——Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通讯网络,其总线规范已被ISO 国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。CAN总线的应用范围遍及从高速网络到低成本的多线路网络,广泛应用于控制系统中的各检测和执行机构之间的数据通信。由于其设计成本低,通讯可靠,在电力系统中得到了广泛应用,尤其是在早期的变电站综合自动化系统建设中起了很大作用

现场总线

百科名片

现场总线结构图

现场总线是指以工厂内的测量和控制机器间的数字通讯为主的网络,也称现场网络。也就是将传感器、各种操作终端和控制器间的通讯及控制器之间的通讯进行特化的网络。原来这些机器间的主体配线是ON/OFF、接点信号和模拟信号,通过通讯的数字化,使时间分割、多重化、多点化成为可能,从而实现高性能化、高可靠化、保养简便化、节省配线(配线的共享)。

现场总线简介

它是一种工业数据总线,是自动化领域中底层数据通信网络。

按照IEC的解释

现场总线是指安装在制造或过程区域的现场装置与控制室内的自动装置之间的数字式、串行、多点通信的数据总线。

简单说,现场总线就是以数字通信替代了传统4-20mA模拟信号及普通开关量信号的传输。

定义

是连接智能现场设备和自动化系统的全数字、双向、多站的通信系统。主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信以及这些现场控制设备和高级控制系统之间的信息传递问题。

主要用于

制造业、流程工业、交通、楼宇、电力等方面的自动化系统中。

典型的现场总线技术

2003年4月,IEC61158 Ed.3现场总线标准第3版正式成为国际标准,规定1 0种类型的现场总线。

Type 1 TS61158现场总线

Type 2 ControlNet和Ethernet/IP现场总线

Type 3 Profibus现场总线

Type 4 P-NET现场总线

Type 5 FF HSE现场总线

Type 6 SwiftNet现场总线

Type 7 World FIP现场总线

Type 8 Interbus现场总线

Type 9 FF H1现场总线

Type 10 PROFInet现场总线

现场总线的特点及优点

(1) 全数字化通信

(2) 开放型的互联网络

(3) 互可操作性与互用性

(4) 现场设备的智能化

(5) 系统结构的高度分散性

(6) 对现场环境的适应性

现场总线的特点

现场控制设备具有通信功能,便于构成工厂底层控制网络。

通信标准的公开、一致,使系统具备开放性,设备间具有互可操作性。

功能块与结构的规范化使相同功能的设备间具有互换性。

控制功能下放到现场,使控制系统结构具备高度的分散性。

现场总线的优点

现场总线使自控设备与系统步入了信息网络的行列,为其应用开拓了更为广阔的领域;

一对双绞线上可挂接多个控制设备,便于节省安装费用;

节省维护开销;

提高了系统的可靠性;

为用户提供了更为灵活的系统集成主动权。

现场总线技术的发展趋势

发展趋势

从现场总线技术本身来分析,它有两个明显的发展趋势:

一是寻求统一的现场总线国际标准

二是Industrial Ethernet走向工业控制网络

统一、开放的TCP/IP Ethernet是20多年来发展最成功的网络技术,过去一直认为,Ethernet是为IT领域应用而开发的,它与工业网络在实时性、环境适应性、总线馈电等许多方面的要求存在差距,在工业自动化领域只能得到有限应用。事实上,这些问题正在迅速得到解决,国内对EPA技术(Ethernet for Process Automation)也取得了很大的进展。

随着FF HSE的成功开发以及PROFInet的推广应用,可以预见Ethernet技术将会十分迅速地进入工业控制系统的各级网络。

工业以太网的发展

国际上形成的工业以太网技术的四大阵营:

主要用于离散制造控制系统的是:

Modbus-IDA工业以太网

Ethernet/IP工业以太网

PROFInet工业以太网

主要用于过程控制系统的是:

Foundation Fieldbus HSE工业以太网

随着科学技术的快速发展,过程控制领域在过去的两个世纪里发生了巨大的变革。150多年前出现的基于5-13psi的气动信号标准(PCS,Pneumatic Control System气动控制系统),标志着控制理论初步形成,但此时尚未有控制室的概念;2 0世纪50年代,随着基于0-10mA或4-20mA的电流模拟信号的模拟过程控制体系被提出并得到广泛的应用,标志了电气自动控制时代的到来,三大控制论的确立奠定了现代控制的基础,设立控制室、控制功能分离的模式也一直沿用至今;20世纪7 0年代,随着数字计算机的介入,产生了“集中控制”的中央控制计算机系统,而信号传输系统大部分是依然沿用4-20mA的模拟信号,不久人们也发现了伴随着“集中控制”,该系统存在着易失控、可靠性低的缺点,并很快将其发展为分布式控制系统(D CS,Distributed Control System分布式控制系统);微处理器的普遍应用和计算机可靠性的提高,使分布式控制系统得到了广泛的应用,由多台计算机和一些智能仪表以及智能部件实现的分布式控制是其最主要的特征,而数字传输信号也在逐步取代模拟传输信号。随着微处理器的快速发展和广泛的应用,数字通信网络延伸到工业过程现场成为可能,产生了以微处理器为核心,使用集成电路代替常规电子线路,实施信息采集、显示、处理、传输以及优化控制等功能的智能设备。设备之间彼此通信、控制,在精度、可操作性以及可靠性、可维护性等都有更高的要求。由此,导致了现场总线的产生。

现场总线的实质和优点

1984年,现场总线的概念得到正式提出。IEC(International Electrotechnical Commission,国际电工委员会)对现场总线(Fieldbus)的定义为:现场总线是一种应用于生产现场,在现场设备之间、现场设备和控制装置之间实行双向、串形、多结点的数字通信技术。

现场总线的本质体现

不同的机构和不同的人可能对现场总线有着不同的定义,不过通常情况下,大家公认在以下六个方面:

现场通信网络

用于过程自动化和制造自动化的现场设备或现场仪表互连的现场通信网络。

现场设备互联

依据实际需要使用不同的传输介质把不同的现场设备或者现场仪表相互关联。

互操作性

用户可以根据自身的需求选择不同厂家或不同型号的产品构成所需的控制回路,从而可以自由地集成FCS。

分散功能块

FCS 废弃了DCS 的输入/输出单元和控制站, 把DCS 控制站的功能块分散地分配给现场仪表, 从而构成虚拟控制站,彻底地实现了分散控制。

通信线供电

通信线供电方式允许现场仪表直接从通信线上摄取能量, 这种方式提供用于本

质安全环境的低功耗现场仪表, 与其配套的还有安全栅。

开放式互联网络

现场总线为开放式互联网络,既可以与同层网络互联,也可与不同层网络互联,还可以实现网络数据库的共享。

从以上内容我们可以看到,现场总线体现了分布、开放、互联、高可靠性的特点,而这些正是DCS系统的缺点。DCS通常是一对一单独传送信号,其所采用的模拟信号精度低,易受干扰,位于操作室的操作员对模拟仪表往往难以调整参数和预测故障,处于“失控”状态,很多的仪表厂商自定标准,互换性差,仪表的功能也较单一,难以满足现代的要求,而且几乎所有的控制功能都位于控制站中。FCS则采取一对多双向传输信号,采用的数字信号精度高、可靠性强,设备也始终处于操作员的远程监控和可控状态,用户可以自由按需选择不同品牌种类的设备互联,智能仪表具有通信、控

制和运算等丰富的功能,而且控制功能分散到各个智能仪表中去。由此我们可以看到FCS相对于DCS的巨大进步。

也正是由于FCS的以上特点使得其在设计、安装、投运到正常生产都具有很大的优越性:首先由于分散在前端的智能设备能执行较为复杂的任务,不再需要单独的控制器、计算单元等,节省了硬件投资和使用面积;FCS的接线较为简单,而且一条传输线可以挂接多了设备,大大节约了安装费用;由于现场控制设备往往具有自诊断功能,并能将故障信息发送至控制室,减轻了维护工作;同时,由于用户拥有高度的系统集成自主权,可以通过比较灵活选择合适的厂家产品;整体系统的可靠性和准确性也大为提高。这一切都帮助用户实现了减低安装、使用、维护的成本,最终达到增加利润的目的。

现场总线的现状

由于各个国家各个公司的利益之争,虽然早在1984年国际电工技术委员会/国际标准协会(IEC/ISA)就着手开始制定现场总线的标准,至今统一的标准仍未完成。很多公司也推出其各自的现场总线技术,但彼此的开放性和互操作性还难以统一。目前现场总线市场有着以下的特点:

多种现场总线并存

目前世界上存在着大约四十余种现场总线,如法国的FIP,英国的ERA,德国西门子公司Siemens的ProfiBus,挪威的FINT,Echelon公司的LONWorks,Phenix Contact公司的InterBus,RoberBosch公司的CAN,Rosemounr公司的HART,C arloGarazzi公司的Dupline,丹麦ProcessData公司的P-net,PeterHans公司的F-Mux,以及ASI(ActraturSensorInterface),MODBus,SDS,Arcnet,国际标准组织-基金会现场总线FF:FieldBusFoundation,WorldFIP,BitBus,美国的DeviceN et与ControlNet等等。这些现场总线大都用于过程自动化、医药领域、加工制造、交通运输、国防、航天、农业和楼宇等领域,大概不到十种的总线占有80%左右的市场。

各种总线都有其应用的领域

每种总线大都有其应用的领域,比如FF、PROFIBUS-PA适用于石油、化工、医药、冶金等行业的过程控制领域;LonWrks、PROFIBUS-FMS、DevieceNet适用于楼宇、交通运输、农业等领域;DeviceNet、PROFIBUS-DP适用于加工制造业,而这些划分也不是绝对的,每种现场总线都力图将其应用领域扩大,彼此渗透。

每种现场总线都有其国际组织和支持背景大多数的现场总线都有一个或几个大型跨国公司为背景并成立相应的国际组织,力图扩大自己的影响、得到更多的市场份额。比如PROFIBUS以Siemens公司为主要支持,并成立了PROFIBUS国际用户组织WorldFIP以Alstom公司为主要后台,成立了WorldFIP国际用户组织。

多种总线成为国家和地区标准

为了加强自己的竞争能力,很多总线都争取成为国家或者地区的标准,比如PR OFIBUS已成为德国标准,WorldFIP已成为法国标准等。

设备制造商参与多个总线组织

为了扩大自己产品的使用范围,很多设备制造商往往参与不止一个甚至多个总线组织。

各个总线彼此协调共存

由于竞争激烈,而且还没有哪一种或几种总线能一统市场,很多重要企业都力图开发接口技术,使自己的总线能和其他总线相连,在国际标准中也出现了协调共存的局面。

工业自动化技术应用于各行各业,要求也千变万化,使用一种现场总线技术也很难满足所有行业的技术要求;现场总线不同于计算机网络,人们将会面对一个多种总线技术标准共存的现实世界。技术发展很大程度上受到市场规律、商业利益的制约;技术标准不仅是一个技术规范,也是一个商业利益的妥协产物。而现场总线的关键技术之一是彼此的互操作性,实现现场总线技术的统一是所有用户的愿望。

主流现场总线简介

下面就几种主流的现场总线做一简单介绍。

1基金会现场总线(FoundationFieldbus 简称FF)

这是以美国Fisher-Rousemount公司为首的联合了横河、ABB、西门子、英维斯等80家公司制定的ISP协议和以Honeywell公司为首的联合欧洲等地150余家公司制定的WorldFIP协议于1994年9月合并的。该总线在过程自动化领域得到了广泛的应用,具有良好的发展前景。

基金会现场总线采用国际标准化组织ISO的开放化系统互联OSI的简化模型(1,2,7层),即物理层、数据链路层、应用层,另外增加了用户层。FF分低速H1和高速H2两种通信速率,前者传输速率为31.25Kbit/秒,通信距离可达1900m,可支持总线供电和本质安全防爆环境。后者传输速率为1Mbit/秒和2.5Mbit/秒,通信距离为750m和500m,支持双绞线、光缆和无线发射,协议符号IEC1158-2标准。FF

的物理媒介的传输信号采用曼切斯特编码。

CAN(ControllerAreaNetwork 控制器局域网)

最早由德国BOSCH公司推出,它广泛用于离散控制领域,其总线规范已被ISO 国际标准组织制定为国际标准,得到了Intel、Motorola、NEC等公司的支持。CAN 协议分为二层:物理层和数据链路层。CAN的信号传输采用短帧结构,传输时间短,具有自动关闭功能,具有较强的抗干扰能力。CAN支持多主工作方式,并采用了非破坏性总线仲裁技术,通过设置优先级来避免冲突,通讯距离最远可达10KM/5Kbps

单片机串口通信协议程序

#include #include #define R55 101 #define RAA 202 #define RLEN 203 #define RDATA 104 #define RCH 105 //#define unsigned char gRecState=R55; unsigned char gRecLen; unsigned char gRecCount; unsigned char RecBuf[30]; unsigned char gValue; void isr_UART(void) interrupt 4 using 1 { unsigned char ch; unsigned char i; unsigned char temp; if (RI==1) { ch=SBUF; switch(gRecState) { case R55: // wait 0x55 if (ch==0x55) gRecState=RAA; break;

case RAA: if (ch==0xaa) gRecState=RLEN; else if (ch==0x55) gRecState=RAA; else gRecState=R55; break; case RLEN: gRecLen=ch; gRecCount=0; gRecState=RDATA; break; case RDATA: RecBuf[gRecCount]=ch; gRecCount++; if (gRecCount>=gRecLen) { gRecState=RCH; } break; case RCH: temp=0; for(i=0;i

串口通讯协议

串口通讯协议 波特率9600,数据位8位,起始位1位,停止位2位,校验采用16位CRC校验,校验包括头部信息和数据。 帧定义: 主机发送事件数据定义

u16 const crc_table[256] = { 0x0000U, 0x1021U, 0x2042U, 0x3063U, 0x4084U, 0x50a5U, 0x60c6U, 0x70e7U, 0x8108U, 0x9129U, 0xa14aU, 0xb16bU, 0xc18cU, 0xd1adU, 0xe1ceU, 0xf1efU, 0x1231U, 0x0210U, 0x3273U, 0x2252U, 0x52b5U, 0x4294U, 0x72f7U, 0x62d6U, 0x9339U, 0x8318U, 0xb37bU, 0xa35aU, 0xd3bdU, 0xc39cU, 0xf3ffU, 0xe3deU, 0x2462U, 0x3443U, 0x0420U, 0x1401U, 0x64e6U, 0x74c7U, 0x44a4U, 0x5485U, 0xa56aU, 0xb54bU, 0x8528U, 0x9509U, 0xe5eeU, 0xf5cfU, 0xc5acU, 0xd58dU, 0x3653U, 0x2672U, 0x1611U, 0x0630U, 0x76d7U, 0x66f6U, 0x5695U, 0x46b4U, 0xb75bU, 0xa77aU, 0x9719U, 0x8738U, 0xf7dfU, 0xe7feU, 0xd79dU, 0xc7bcU, 0x48c4U, 0x58e5U, 0x6886U, 0x78a7U, 0x0840U, 0x1861U, 0x2802U, 0x3823U, 0xc9ccU, 0xd9edU, 0xe98eU, 0xf9afU, 0x8948U, 0x9969U, 0xa90aU, 0xb92bU, 0x5af5U, 0x4ad4U, 0x7ab7U, 0x6a96U, 0x1a71U, 0x0a50U, 0x3a33U, 0x2a12U, 0xdbfdU, 0xcbdcU, 0xfbbfU, 0xeb9eU, 0x9b79U, 0x8b58U, 0xbb3bU, 0xab1aU, 0x6ca6U, 0x7c87U, 0x4ce4U, 0x5cc5U, 0x2c22U, 0x3c03U, 0x0c60U, 0x1c41U, 0xedaeU, 0xfd8fU, 0xcdecU, 0xddcdU, 0xad2aU, 0xbd0bU, 0x8d68U, 0x9d49U, 0x7e97U, 0x6eb6U, 0x5ed5U, 0x4ef4U, 0x3e13U, 0x2e32U, 0x1e51U, 0x0e70U, 0xff9fU, 0xefbeU, 0xdfddU, 0xcffcU, 0xbf1bU, 0xaf3aU, 0x9f59U, 0x8f78U, 0x9188U, 0x81a9U, 0xb1caU, 0xa1ebU, 0xd10cU, 0xc12dU, 0xf14eU, 0xe16fU, 0x1080U, 0x00a1U, 0x30c2U, 0x20e3U, 0x5004U, 0x4025U, 0x7046U, 0x6067U, 0x83b9U, 0x9398U, 0xa3fbU, 0xb3daU, 0xc33dU, 0xd31cU, 0xe37fU, 0xf35eU, 0x02b1U, 0x1290U, 0x22f3U, 0x32d2U, 0x4235U, 0x5214U, 0x6277U, 0x7256U, 0xb5eaU, 0xa5cbU, 0x95a8U, 0x8589U, 0xf56eU, 0xe54fU, 0xd52cU, 0xc50dU, 0x34e2U, 0x24c3U, 0x14a0U, 0x0481U, 0x7466U, 0x6447U, 0x5424U, 0x4405U, 0xa7dbU, 0xb7faU, 0x8799U, 0x97b8U, 0xe75fU, 0xf77eU, 0xc71dU, 0xd73cU, 0x26d3U, 0x36f2U, 0x0691U, 0x16b0U, 0x6657U, 0x7676U, 0x4615U, 0x5634U, 0xd94cU, 0xc96dU, 0xf90eU, 0xe92fU, 0x99c8U, 0x89e9U, 0xb98aU, 0xa9abU, 0x5844U, 0x4865U, 0x7806U, 0x6827U, 0x18c0U, 0x08e1U, 0x3882U, 0x28a3U, 0xcb7dU, 0xdb5cU, 0xeb3fU, 0xfb1eU, 0x8bf9U, 0x9bd8U, 0xabbbU, 0xbb9aU, 0x4a75U, 0x5a54U, 0x6a37U, 0x7a16U, 0x0af1U, 0x1ad0U, 0x2ab3U, 0x3a92U, 0xfd2eU, 0xed0fU, 0xdd6cU, 0xcd4dU, 0xbdaaU, 0xad8bU, 0x9de8U, 0x8dc9U, 0x7c26U, 0x6c07U, 0x5c64U, 0x4c45U, 0x3ca2U, 0x2c83U, 0x1ce0U, 0x0cc1U, 0xef1fU, 0xff3eU, 0xcf5dU, 0xdf7cU, 0xaf9bU, 0xbfbaU, 0x8fd9U, 0x9ff8U, 0x6e17U, 0x7e36U, 0x4e55U, 0x5e74U, 0x2e93U, 0x3eb2U, 0x0ed1U, 0x1ef0U }; u16 crc16(u16 crc,const u8 *data, u32 len )len可以为u8,u16,u32 { while (len--) crc = crc_table[(crc >> 8 ^ *(data++)) & 0xffU] ^ (crc << 8); return crc; } 例:u8 *buf=”123456789”;

串口通信协议

串口通讯—通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。 3.有关串行通信的物理标准 为使计算机、电话以及其他通信设备互相沟通,现在,已经对串行通信建立了几个一致的概念和标准,这些概念和标准属于三个方面:传输率,电特性,信号名称和接口标准。 1、传输率:所谓传输率就是指每秒传输多少位,传输率也常叫波特率。国际上规定了一个标准波特率系列,标准波特率也是最常用的波特率,标准波特率系列为110、300、600、1200、4800、9600和19200。大多数CRT终端都能够按110到9600范围中的任何一种波特率工作。打印机由于机械速度比较慢而使传输波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲

51串口通信协议(新型篇)

51串口通信协议(新型篇) C51编程:这是网友牛毅编的一个C51串口通讯程序! //PC读MCU指令结构:(中断方式,ASCII码表示) //帧:帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //公司名称:*** //模块名:protocol.c //创建者:牛毅 //修改者: //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其他说明:只提供对A T89c51具体硬件的可靠访问接口 //版本:1.0 //信息:QQ 75011221 ///////////////////////////////////////////////////////////////////// #include #include //预定义 //帧 #define F_ST1 0x6e //帧头标志n #define F_ST2 0x79 //帧头标志y #define F_R 0x72 //帧类型读r #define F_W 0x77 //帧类型写w #define F_D 0x64 //帧类型数据帧d #define F_B 0x62 //帧类型写回应帧b #define F_C 0x63 //帧类型重发命令帧c #define F_Q 0x71 //帧类型放弃帧q #define F_ADDR 0x31 //器件地址0-9 #define F_END 0x7a //帧尾标志z #define F_SPACE 0x30 //空标志0 #define F_ERR1 0x31 //错误标志1,flagerr 1 #define F_ERR2 0x32 //错误标志2 2 //常数 #define S_MAXBUF 16 //接收/发送数据的最大缓存量 #define FIELD_MAXBUF 48 //最小场缓存,可以大于48字节,因为协议是以20字节为

系统串口通讯协议

ZHET 系统串口通讯协议 通 讯 技 术 手 册 型号:SYRDS1-485 (SYRDSSS1) SYRDL1-485 (SYRLSSS1) 玺瑞国际企业有限公司 SYRIS International Corp.

通讯技术手册 通讯协议(Protocol) 卡片阅读机模块(Reader Module)的通讯协议(Protocol)皆出自于SYRIS 的一种标准通讯协议,这种协议格式如下表: 1.SOH 和 END 都是一个字节的控制字符: SOH 控制器端定义为 <0x09> 模块端定义为 <0x0A> END 控制器及模块端均固定为 <0x0D> 其中 <0x> 为十六进制表示法. 2.TYPE 为模块型式编号,固定为一个字节,本型式编号固定为“A”. 3.ID为模块端的识别代码,这一字节的 ASCII 字符必须是在 1 <0x31> 到 8 <0x38> 的范围内,假如控制器端传送之ID值与模块地址编号相同时, 则该模块将会接收控制器端所传送的数据,而模块响应时,也会传回相同的地址编号.

4.FC是通讯功能码(Function Code)和资料(DATA)有相关性,固定为一个 字节,这些资料请参考通讯协议表及相关说明. 5.错误讯息判断代码(Error Code)为两个字节,第一个字节为固定为 <0x0E> ,第二个字节为错误代码,请参考错误讯息代码表. 6.8 BITS BCC是所有字符的检查字段,为二个字节,有关 8 BITS BCC 的 信息和范例程序,请参考附录A. 7.RS485传输协议请设定为”E,8,1”,速率为”19200”. 错误讯息代码表(Error Code Table) ※ Error Code #1固定为 <0x0E>.

USB基本知识与通信协议书范本

串口通信协议 什么是串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇

AB DF1串口通讯协议API接口

Fax: 1-703-709-0985 https://www.360docs.net/doc/541149354.html, Allen-Bradley DF1 Serial Communication Interface API The DASTEC Corporation Allen-Bradley DF1 Serial Communication Interface API allows the user to implement bi-directional serial communications to exchange data between applications running on a Windows/WinCE-based system with other devices supporting the Allen-Bradley DF1 full-duplex serial protocol. The devices can be AB devices, other host computers or even other system applications using the API. The Allen-Bradley DF1 Serial Communication Interface API enables a system to acts as a client device to other Allen-Bradley peer devices, initiating read and write operations on behalf of the system applications. The API also allows the system to emulate an Allen-Bradley PLC to respond to read and write requests and thus acts as a “virtual PLC” to other AB peers. The API is available for different Windows/WinCE-based systems/platforms and can be used with C/C++ or Visual Basic. The API consists of two component functionalities, client side and server side. The client side functionality is implemented with a single API DLL. Server side functionality is implemented with a DLL/executable pair. Together these components manage all aspects of the protocol and data exchange including responding to peers with proper acknowledgements, error/success codes and protocol data byte ordering. The system application need only to deal with the data values exchanged in native byte order. The user can employ either the API’s client, server or both functionalities with minimal code implementation.

串口通讯—通信协议

串口通讯—串口通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,串口通信协议通常有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1、串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM 时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA与TTL电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。采用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。

SPI串口通信协议

SPI串口通信协议 1.1 SPI串口通信介绍 SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200. SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 (1)SDO –主设备数据输出,从设备数据输入 (2)SDI –主设备数据输入,从设备数据输出

(完整版)高速公路ETC系统DSRC设备串行口通讯协议

高速公路ETC系统DSRC设备串行口通讯协议 1 串行通讯方式 串行口采用半双工的异步串行通讯方式,协议格式为“115200,N,8,1”,即波特率115200bps,无奇偶校验,8位数据,1个停止位。 1.1 串口通讯数据帧格式 RSU和PC通讯的数据帧格式如图1-1: 图1-1 空应答如图1-2: 图1-2 说明见表1-1: 表1-1 RSU和PC通讯的数据帧格式说明

1.2 特殊字节转义处理 数据帧开始标志为FFFFH,帧结束标志为FFH。其他字段不能出现FFH,如果数据确实为FFH,需对其进行转义处理。 发送数据时,如果在待发送字段中出现FFH字节时,将FFH分解为FEH和01H这两个字节来发送;如果在待发送字段出现FEH字节时,需将FEH分解为FEH和00H这两个字节来发送。 接收数据时,如果出现“FE 01”这样连续两个字节时将之合为一个字节FFH;如果出现“FE 00”这样连续两个字节时将之合为一个字节FEH。 RSU送上来的所有整型数据,未特定说明,其字节排序均为高位在前,低位在后。 1.3 命令的应答要求 PC必须对RSU的命令作出应答,可以是携带应答也可以是空应答,RSU不一定对PC的每个命令都要应答。 应答时,PC将接收到的命令帧的RSCTL的高半字节和低半字节交换,作为应答帧的RSCTL。

图1-3 串口通讯流程 2 RSU/PC通信帧数据结构 2.1 PC发往RSU的指令: 指令名称代码功能说明 初始化指令C0H 对RSU关键参数如功率、车道模式等进行初始化/设置 对PC收到RSU发来的信息的应答,表示收到信息并要求继续继续交易指令C1H 处理指定OBU 对PC收到RSU发来的信息的应答,表示收到信息并要求当前停止交易指令C2H 不再继续处理指定OBU

串口协议

串口协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。(5)进行TTL 与EIA电平转换:CPU 和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C 接口标准所要求的信号线:远距离通信采用MODEM 时,需要9根信号线;近距离零MODEM 方式,只需要3 根信号线。这些信号线由接口电路提供,以便与MODEM 或终端进行联络与控制。 2、串行通信接口电路的组成 为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL 电平转换器以及地址译码电路组成。其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。

串口通信协议

1 串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。 2 串行通信的传输方向 2.1 单工 单工是指数据传输仅能沿一个方向,不能实现反向传输。 2.2 半双工 半双工是指数据传输可以沿两个方向,但需要分时进行。 2.3 全双工 全双工是指数据可以同时进行双向传输。 单工半双工全双工 3 重要参数 串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配。 3.1 波特率 这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 常用的波特率有,1200,2400,4800,9600,19200,38400,115200等。 3.2 数据位 这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

串口通信协议

串口通信协议 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。 什么是串口 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数

SPI串行通信协议

SPI串行通信协议 同步串行外设接口(S PI)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。 SPI(Serial Peripheral Interface)是一种串行串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。 总线协议 该总线通信基于主-从(所有的串行的总线均是这样,USB,IIC,SPI等)配置,而且下面提到的方向性的操作合指代全部从主设备的角度说得。它有以下4个信号: MOSI:主出/从入 MISO:主入/从出 SCK:串行时钟 SS:从属选择;芯片上“从属选择”(slave-select)的引脚数决定了可连到总线上的器件数量。 在SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时钟脉冲(好像也可以是IO上的电平的模拟时钟),摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态,而CPHA定义相对于SO-数据位的时钟相位。CPOL和CPHA的设置决定了数据取样的时钟沿。 数据方向和通信速度 SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI 串行器件传输速度能达到5MHz。 SPI总线接口及时序 SPI总线包括1根串行同步时钟信号线以及2根数据线。 SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI接口时序如图3、图4所示。

串口通信协议程序

串口通信协议程序 主机程序: /* 主机主要处理 : 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10];

void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据 TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do {

串口通信协议程序

主机程序: /* 主机主要处理: 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10]; void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据

TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do { do { SBUF=addr; //发送从机地址 while(TI!=1); TI=0; } while(RI!=1); //一直等待从机响应 //while循环里可加入出错处理temp_addr=SBUF; RI=0; } while(temp_addr!=addr); //一直等到从机回应的地址相同 //while循环里可加入出错处理 TB8=0; //发送数据第9位为0 // SM2=0; // 接收到第九位为1时才置位RI //每次一个数据 SBUF=cmd; while(TI!=1); TI=0; TB8=1; // SM2=1; RI=0; TI=0; //不处理期间发生的中断 EA=1; signal=1; //释放总线 }

c串口通信协议设计

c串口通信协议设计 篇一:RS-232-C串口通讯协议解析 RS-232-C串口通讯协议解析 串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过 改进而形成的。所以,以RS-232C为主来讨论。 在讨论RS-232C接口标准的内容之前,先说明两点.首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了 其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者

都是DTE,因此双方都能发送和接收。 RS- 323C标准是美国EIA(电子工业联合会)与BELL 等公司一起开发的1969年公布的通信协议。它适合于数据传输速率在0~XX0b/s范围内的通信。这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。由于通行设备厂商都生产与RS-232C 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。 一、RS-232-C RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecomme ed standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、 EIA�RS-423A、EIA�RS-485。这里只介绍EIA�RS-232-C(简称232,RS232)。例如,目前在IBM PC机上的COM1、 COM2接口,就是RS-232C接口。 1.电气特性

相关文档
最新文档