串行通信的工作方式

2024-07-24

串行通信的工作方式(精选8篇)

串行通信的工作方式 第1篇

串行通信的工作方式数据按时间顺序(分时)先后一位一位地通过单通信通路传送的通信方式。

①从通信距离上看:并行通信适宜于近距离的数据传送,通常小于30米。而串行通信适宜于远距离传送,可以从几米到数千公里。

②从通信速率上看:在短距离内,并行接口的数据传输速率显然比串行接口的传输速率高得多,但远距离串行数据传送速率比并行数据传送速率易于提高。由于串行通信的通信时钟频率较并行通信容易提高,因此许多高速外部设备如数字摄像机与计算机之间的通信也往往使用串行通信方式。

③从抗干扰性能上看:串行通信由于只有少数几根信号线,信号间的互相干扰比较小。

④从设备和费用上看:随着大规模和超大规模集成电路的发展,逻辑器件价格趋低,而通信线路费用趋高,因此对远距离通信而言,串行通信的费用显然会低得多。另一方面串行通信还可利用现有的电话网络来实现远程通信,降低了通信费用。

串行通信的工作方式 第2篇

一、实验目的及要求

1、了解掌握RS-232接口标准以及 DB9的主要引脚功能;

2、了解掌握串口通信的基本原理;

3、学习掌握RS-232电缆的制作和测试方法;

4、学习掌握使用串口调试程序进行串口之间的通信实验。

二、实验原理

1、异步串行通信原理

在计算机系统中,每个字符一般使用一个 8 位二进制代码表示。在数据通信中,通常将 传送的每个字符的二进制代码按照由低位到高位的顺序依次发送的方式称为串行通信。图 2-1 是串行通信的示意图。由于串行通信只需在发送方和接收方之间建立一条通信信道,因 此可以减小通信系统的造价。在远程通信中,一般采用串行通信方式。

图 1-1 串行通信示意图

同步是数据通信中必须解决的一个重要问题。所谓同步就是要求通信的收发双方在时间基准上保持一致。在串行通信中,“异步”是同步收发双方通信的重要方式。在异步串行通信中,每个字符作为一个独立的整体进行发送,字符之间的时间间隔可以是任意的。为了实现同步,需要在每个字符的第一位前加 1 位起始符(逻辑 1),并在字符的最后一位后加 1位、1.5 位或 2 位停止位(逻辑 0)。异步串行传输的比特流结构如图 2-2所示。

图 1-2 异步串行传输的比特流结构

常用的串行通信接口标准包括RS-232、RS-449、V.24、V.35等。其中,RS-232是最常 用的串行通信标准之一。个人计算机及终端系统中配备的串行接口几乎都符合 RS-232 标准。

2、RS-232 接口标准

串行口是一种最基本的通信接口,基本上所有的个人计算机及通信终端设备都配有这种接口。RS-232 的主要内容就 是定义数据终端设备DTE(data terminal equipment)和数据通信设备DCE(data circuit equipment)之间的接口标准。RS-232 是美国电子工业协会 EIA 推荐使用的串行通信标准。其初衷是为了促进利用电话网进行数据通信应用的发展,现在也普遍应用于各类计算机或终端设备之间的短距离连接。

RS-232 使用的连接器包括 DB-

25、DB-15 和 DB-9 等几种类型,不同类型连接器使用的引脚定义也各不相同。

计算机 RS-232 串行通信的基本过程。图 1-4 异步串行通信实验总体结构示意图

三、实验过程与实验步骤

1、使用制作的 RS-232电缆将 2台计算机的可用 COM 口连接起来。

2、复制串口调试助手到硬盘上。

3、直接双击 “串口调试助手 3.0”运行软件。检查串口线是否连接到计算机和设备上。确定串口(本机为com1)。在串口调试助手中打开串口:com1。

4、使用字符串收发

5、使用文件传输功能

使用文件传输功能,在 2 台电脑上传输文件,这对于某些特定场合可以用到该功能。首先由接收一端在打开串口后,按下接收文件按钮。

之后会弹出一个对话框,等待对方发送文件。

发送一端在打开串口后,先选择发送文件(如下图)

选择文件后,按下发送按钮,文件开始传输中,这时 2 端都可以看到发送的进度条。发送完毕后,软件会提示!

四、实验结果与分析:串口(com1)

1、正常发送:

(1)A机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)结果:A机发“你好”,B机收“你好”,(图1); B机发“哈哈”,A机收“哈哈”,(图2);

图1

图2(2)、A机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)

B机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)结果:A机发“我很好”,B机收“我很好”;图3); B机发“你呢”,A机收“你呢”;图4);

图3

图4

2、波特率不同

A机:波特率相同(4800)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“01 02 03”,B机收“胉”;(图5); B机发“yjw”,A机收“?”;(图6); 分析: 图6

图5 波特率控制采样时间间隔,波特率不相同,收发双方在 相等时间内接收和发送数据 不一致。

3、数据位不同

A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(6)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“040506”,B机收“?”,(图7); B机发“lys”,A机收“,9>”,(图8); 分析:数据位不相同,收发双方在相等时间内接收和发送数据不一致,所以结果不相同

图7

图8

4、奇偶校检不同

(1)A机:波特率相同(9600)、校验位相同(EVE)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“54 85 96 75”;(图9)B机发“第五种”,A机收“第五种”;(图10)分析:因为校验位用于检验 接收和发送的数据的正确性的,在最终转换时会去除校验位,所以接收到的有效数据和发送的有效数据相同,发送与接收结果一样。

图9

图10(2)A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(1)

B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“

”;(图11)

B机发“第六种”,A机收“第六种”;(图12)

分析:由于A机无校验位,B机有校验位,所以B机在收到数据并校检,后会自动去除校检位以致发双方的有校数据不一致,结果不一样。

相反的。当A机为接收方时,虽然A机无检验位,但是因为A机已接收到8位数据故不接收B机发送的校检位。结果一样。

图11

图12

5、停止位不同

A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(2)

图13

结果:A机发“B机收“B机发“

”,A机收“

”,”;(图13)”;(图14)

图14 分析:

5、发送文件

A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)B机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)结果分析:

当有校检位时,不可以接收文件;波特率不同、校验位不同、数据位同或停止位不同时,文件无法接收;即唯有当波特率相同、数据位相同、停止位相同且无校检位时,方可以正确接收文件。

五、思考并回答以下问题:

(1)在本实验中,RS—232 串口电缆处于 OSI 参考模型的什么位置?它的作用是什么?

答:处于OSI 参考模型的物理层,其作用是作为传输介质,连接通信的网络节点,实现比特流的透明传输,为数据链路层提供数据传输服务。

(2)在本实验中,数据和信号分别体现在 OSI参考模型的什么位置?两者之间有何区别?

答:数据体现在数据链路层,信号体现在物理层。两者区别在:数据链路层:为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。物理层:OSI模型的最底层。它提出了网络的物理特性,比如连接的电缆类型。这里是二进制值0和1的世界,也就是数据以信号的电特性(高低电平)来表示。

(3)什么是波特率?为何两台 PC 的波特率不同就不能正常通信?

答:波特率又称调制速率、传码速率,记为Nbd,是指在数据通信系统中,每秒钟传输信号码元个数,单位是波特。

串行通信的工作方式 第3篇

1.图形符号相似

它们都是用接点和线圈来绘制电路图或编制梯形图, 且图形符号相似。PLC继承了继电器接点和线圈控制理论。

2.电路结构相似

它们都有两条母线。在电路图中, 母线表示电流源。在梯形图中, 母线表示能流源。在电路图中, 只要回路被导通, 线圈就能励磁工作。在梯形图中, 只要梯级被导通, 能流就能激活线圈。

3.工作原理相同

无论是电路图, 或者是梯形图, 它们回路中的元件或梯级中的编程元素, 都按预设的功能, 完成预期的控制目的。对同一受控设备而言, 电路图与梯形图基本的工作原理是相同的。比如, 控制接点 (或称编程元素) 的导通 (ON) 或断开 (OFF) 及它们的组合, 完成预期的控制目的。

4.逻辑规律相同

无论是电路图, 还是梯形图的控制过程, 只要前提条件具备, 就会得到预期的结果。对同一受控设备而言, 在电路图中, 是通过接点与接点或接点与线圈的连接和组合体现基本逻辑或复合逻辑。如常开串联为与逻辑;常开并联为或逻辑;常开与常闭串联为非逻辑。在梯形图中, 是通过编程元素 (存储位) 的导通与断开及其组合, 来实现基本逻辑或复合逻辑, 其逻辑规律是相同的, 其逻辑规律是通过程序控制实现的。

因此对于初学者, 在编制用户程序梯形图时, 最简单直接的方法就是先设计绘制出继电接触器控制电路图, 然后按编程原则将电路图中的电器符号改为对应PLC的“线圈”和“触点”符号, 这样就很容易地画出了用户程序梯形图 (从而也就很容易写出指令语句表) 。所以根据继电接触器控制电路图设计梯形图, 不失为一条捷径。

那么是不是任何情况下都可以将继电接触器控制电路图直接转换成梯形图呢?不是的。在将继电接触器控制电路图转换成梯形图时, 除了要考虑画梯形图时应注意的事项外, 还要考虑串行工作方式对梯形图控制结果的影响。

一般来说, 在学习PLC之前都是先学习传统的继电器——接触器控制, 因为PLC最初就是在传统的继电器——接触器控制的基础上发展起来的, 掌握了传统的继电器——接触器控制技术之后再学习PLC技术往往有着事半功倍的效果, 但是这样一来也有一个缺点——很容易把两者工作方式搞混。因为PLC与继电接触器控制的重要区别之一就是工作方式不同。继电接触器控制系统是按“并行”方式工作的, 也就是说是按同时执行的方式工作的, 只要形成电流通路, 就可能有几个电器同时动作。而PLC是以“串行”方式工作的, PLC在循环执行程序时, 是按照语句的书写顺序自上而下进行逻辑运算, 而前面逻辑运算的结果会影响后面语句的逻辑运算结果。因此梯形图编程时, 各语句的位置也会对控制功能产生关键影响。所以对传统继电接触器控制系统更新改造时, 不能简单地将继电器 (或接触器) 触点与PLC触点相置换, 必须对实际电路的控制功能进行分析, 给出相应的控制梯形图。

下面通过例子来说明。

例1图1 (a) 中用一个按钮开关X0 (输入信号) 控制3个输出量:Y0、Y1、Y2。电路中Y0与Y2具有相同的响应速度。X0闭合Yl接通Y0、Y2同时接通, 即不存在滞后现象。根据继电器控制进行置换转化成如下梯形图1 (b) 。

我们通过三个扫描周期来说明控制过程中输出的滞后问题:

第一个扫描周期:输入信号还未进入映像区, X0输入映像寄存器中的状态为输出“0FF”, 所有Y0、Y1、Y2当然均为“0FF”。

第二个扫描周期:在输入采样阶段, X0信号进入映像区, X0输入映像寄存器中的状态变为“ON”。由于在扫描到Y0时, Y1尚处在断开状态, 所以Y0=“OFF”;而在第二周期中, 程序执行后Y1在输出映像寄存器中的状态变为“ON”, 所以, 后扫描的Y2在其输出映像寄存器中的状态也变为“ON”。这样, 第二周期的结果是输出端子Y0=“OFF”, Y1=Y2=“ON”。

第三个扫描周期:由于Y1在其输出映像寄存器中的状态已为“ON”, 此时Y0才能接通为“ON”。显然, Y0的响应滞后Y2一个扫描周期, 在输入条件为“ON”时, Y0输出延迟响应。若在梯形图中, 将Y0和Y2互换位置, 则执行结果使Y2的响应滞后于Y0一个扫描周期。

如果将梯形图稍作调整, 改为图1 (c) 所示, 当X0输入映像寄存器中的状态为“ON”, 在第一个周期, 所有输出Y0、Y1、Y2均为“ON”。因此, 在将继电接触器控制电路图转换成梯形图时要适当地根据情况调整梯形图。

例2图2中梯形图 (a) 和 (b) 从结构上看是一样的, 但上下顺序不一样, 首先看图2 (a) , PLC读梯形图的顺序如图中的数字 (1) ~ (7) 所示。当输入继电器X1动作时, 在第一个扫描周期: (1) X1常闭接点断开, (2) 由于还未读到Y1线圈, Y1线圈还未得电, 所以Y1接点断开, (3) Y0接点断开, (4) X2常闭接点闭合, (5) 由于电路不通, Y0线圈不得电, (6) X1接点闭合, (7) 线圈Y1得电。在第二个扫描周期:Y1接点闭合, 其他不变。

当输入继电器X1失电时, 在第一个扫描周期: (1) X1常闭接点闭合, (2) Y1接点己闭合, (3) Y0接点断开, (4) X2常闭接点闭合, (5) 由于电路己通, Y0线圈得电, (6) X1接点断开, (7) 线圈Y1失电。在第二个扫描周期:Y1接点断开, 但Y0接点闭合, 所以Y0线圈得电自锁。

再看图2 (b) , 当输入继电器X1动作时, 其结果和上述一样, 但是当输入继电器X1失电时结果就不一样了, Y0、Y1线圈都不得电。

所以说, 梯形图中继电器线圈的接点在线圈之前和在线圈之后, 对它的控制结果是有影响的。

图3 (a) 是点动连续混合控制电路, 它要求点动按钮SB3常开接点和常闭接点的动作有较长的过渡时间差才能起到点动控制作用, 是一个有接点竞争的电路。把它转换成梯形图, 看看是否能起到点动控制作用。如图3 (b) 所示, 当按钮X3按下动作时, Y0得电, 当按钮X3松开时, X3常开接点断开, 但X3常闭接点闭合, 且Y0自锁接点是闭合的, Y0线圈仍得电自锁, 所以不能起到点动控制。

可见, 有的控制电路图是不可以直接转变成梯形图的, 对于这种情况, 可以采用改变接点顺序的方法来解决。可根据控制原理要求需要, 加入一些所用输入或输出继电器的“软”触点和辅助继电器, 而这些“软”触点在程序中的使用次数是无限制的, 它和辅助继电器都是被编程元件内部使用, 不占用I/O点。如图4所示, 用常闭接点M0代替常闭接点X3, 而M0线圈在接点M0后面, 这样接点M0比X3晚一个扫描周期, 即可实现点动控制。

参考文献

[1]隋振有, 隋凤香.PLC应用与编程技术[M].北京:中国电力出版社, 2009.

[2]樊金荣.欧姆龙CJ1系列PLC原理与应用[M].北京:机械工业出版社, 2008.

串行通信的工作方式 第4篇

关键词:串行通信;RS-232串口;LabVIEW

中图分类号:TP273 文献标识码:A文章编号:1007-9599 (2011) 11-0000-01

Double Computer Serial Communication Based on LabVIEW

Xu Qiujing1,Zhao Qiuying2,Song Yi1

(1.Harbin Huade University,Harbin150025,China;2.Northeast Petroleum University Huarui Institute,Harbin150028,China)

Abstract:When Terminal and computer orbetween computers exchanging information,in addition to the use of parallel means of communication,often uses serial communication mode.The paper used LabVIEW as a programming language,introducing in the LabVIEW programming environment,how to realize the double computer serial communication.

Keywords:Serial communication;RS-232 serial port;LabVIEW

一、串行通信

串行通讯是我们最容易接触到的一种通讯方式。终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。串行通讯是指数据一位一位地按顺序传送,当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。当两台RS-232串口设备通信距离较近时(一般在十米左右),可以用电缆线直接将两台设备的RS-232端口连接;若通信距离较远时,需附加调制解调器。

在实际使用中常使用串口通信线将两个串口设备连接起来。串口线的制作方法非常简单:准备两个9针的串口接线端子(因为计算机上的串口为公头,因此连接线为母头),准备3根导线(最好采用3芯屏蔽线),按图1所示将导线焊接到接线端子上。

图1.串口通信线的制作

图1所示的2号接收脚与3号发送脚交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请求发送RTS有效和数据终端准备好DTR有效就能开始发送和接收。

二、LabVIEW

LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。

LabVIEW中有关串口的函数选板它位于函数→仪器I/O→串口,主要包括VISA配置串口、VISA写入、VISA读取、VISA关闭、VISA串口字节数、VISA串口中断、VISA设置I/O缓冲区大小、VISA清空I/O缓冲区八个函数构成。注意:在LabVIEW需安装VISA的驱动程序才能正常使用串口。

三、LabVIEW主要程序面板设计如图2

图2.LabVIEW程序面板设计

四、LabVIEW前面板设计及运行

在两台计算机上分别运行此程序,运行结果如图3所示:

图3.LabVIEW前面板设计及运行结果

参考文献:

[1]马秀龙,董浩斌.基于LabVIEW串口通讯的多路数据采集系统[J].工业控制计算机,2008,21(5):14-15

[2]张桐,陈国顺.精通LabVIEW程序设计[M].北京:电子工业出版社,2008

串行通信的工作方式 第5篇

(1)打开和关闭串行端口

CreateFile函数用于打开串行口。

hPort=CreateFile(TEXT(“COM1:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL)。注意COM1后要有一个冒号。最后一个参数dwFlagsAndAttributes必须为0,因为Windows CE只支持非重叠I/O。第3个参数dwShareMode也必须为0,通信端口不能像文件一样被共享。这个函数的返回值是已打开的串行端口的句柄或者是INVALID_HANDLE_VALUE。

关闭串行口可以调用CloseHandle(hPort)。

(2)配置串行端口

配置串行口主要是用DCB结构配置端口设置,包括波特率、停止位、数据位长度、校验位、流量控制等等,还有配置超时值。

首先打开串行端口,用GetCommState函数获得当前打开串口配置,然后根据需要修改DCB成员,最后用SetCommState函数设置新的串口配置。

DCB PortDCB; //创建DCB变量

Port.DCB.DCBlength=sizeof(DCB);

GetCommState(hPort,&PortDCB); //获取当前串口配置修改DCB成员

PortDCB.BaudRate=9600; //波特率

PortDCB.Parity=NOPARITY; //校验位

PortDCB.StopBits=ONESTOPBIT; //停止位

PortDCB.ByteSize=8;

.

.

.

SetCommState(hPort,&PortDCB); //设置新的串口配置

对串行端口来说,必须配置超时值,否则程序可能陷入到一个循环来等待来自串口的字符。这对采用Windows CE的设备来说,将大大减少设备电池的使用时间,所以超时值是需要配置的。另外一种解决办法就是采用多线程。多线程将在下一部分讲述。

通常,配置超时值和配置串口类似。首先用GetCommTimeouts函数获得当前串口的超时值。然后可以修改COMMTIMEOUT成员,最后用SetCommTimeouts函数设定超时值。

COMMTIMEOUTS CommTimeouts; //定义COMMTIMEOUTS结构

GetCommTimeouts(hPort,&CommTimeouts); //获得当前的超时值

//修改COMMTIMEOUT成员

CommTimeouts.ReadIntervalTimeout=MAXDWORD;

CommTi

meouts.ReadTotalTimeoutMultiplier=0;

CommTimeouts.ReadTotalTimeoutConstant=0;

CommTimeouts.WriteTotalTimeoutConstant=1000;

CommTimeouts.WriteTotalTimeoutMultiplier=10;

SetCommTimeouts(hPort,&CommTimeouts); //设定超时值

(3)读写串行端口

用ReadFile和WriteFile函数读写串行口。

int rc;

DWORD cBytes;

BYTE ch;

Rc=ReadFile(hPort,&ch,1,&cBytes,NULL);

其中第一个参数是串口句柄,第2个参数是读回的字符,第3个参数是要读取的字符数量,第4个参数返回实际读取到的字符数量。

Int rc;

DWORD cBytes;

BYTE ch=TEXT(“a”);

Rc=WriteFile(hPort,&ch,1,&cBytes,NULL);

其中第一个参数是串口句柄,第2个参数是要写入的字符,第3个参数是要写入的字符数量,第4个参数返回字符写入的字符数量。

需要注意的是Windows CE不支持重叠I/O,所以如果在主线程进行大量读写串口操作时,有可能使整个程序陷入缓慢的串口等待中去,因此一般都采用多线程来进行读写串口操作。

(4)通信事件

在Windows CE编程中,除了可以采用单独的线程来处理读写串口操作外,还可以采用利用通信事件的方法。通信事件就是当发生重要事件时,Windows CE向应用程序发送的通知。利用WaitCommEvent函数阻塞线程,直到特定的事件发生。一般的使用方法是:先用SetCommEvent函数指定要查找的一个或多个事件,然后,调用WaitCommEvent函数,并指定导致这个函数返回的事件。当WaitCommEvent函数返回后,循环调用ReadFile函数,读回所有接收到的字符。最后再次调用SetCommEvent函数,指定下次要查找的事件。

3 Windows CE下的多线程

Windows CE是一个完全的多任务、多线程的操作系统。Windows CE同时最多可以运行32个进程。每个进程有一个主线程,而且可以有多个附加线程。附加线程的多少仅受可用内存和线程堆栈的进程地址空间的限制。

Windows CE是以抢先方式调度线程的。线程以时间片为单位来运行,通常是25ms。线程拥有优先级,所有高优先级的线程都将在低优先级的线程之前运行。在可以调度被设定为特定优先级的线程之前,所有拥有高优先级的线程都必须被阻塞。同等优先级的线程以循环方式来调度。如果高优先级的线程停止阻塞,而低优先级的线程目前正在运行,则低优先级的线程会立刻被挂起,同时去调度高优先级的线程。低优先级的线程永远不会抢占高优先级的线程,当然也有例外:一种是线程具有优先级THREAD_PRIORITY_TIME_CRITICAL,它永远不会被抢占;另一种就是低优先级的线程拥有高优先级的线程正在等待的`资源,出现优先级倒置。在Windows CE中,线程可以有8种优先级。

下面是一个创建线程和线程函数的例子:

HANDLE hThread;

DWORD dwThreadID=0;

Int nParameter=5;

HThread=CreateThread(NULL,0,Thread,nParameter,0,&dwThreadID); //创建线程

CloseHandle(hThread); //关闭线程

//线程函数

DWORD WINAPI Thread (PVOID pArg)

{

int nParam=(int)pArg;

.

.

.

return 0x15;

}

CreateT

hread函数在许多参数在Windows CE下都不支持,所以被设为NULL或0。第3个参数指向线程函数的开始,第4个参数是CreateThread函数传到线程函数的唯一参数。CreateThread函数返回线程句柄,当这个句柄不需要时,调用CloseHandle函数关闭它。线程函数在被终止之前一直运行,调用ExitThread函数可终止线程的执行。

对于在系统中运行的多个线程,需要协调它们的活动,也就是实现同步。在Windows CE中,采用的方法是使用同步对象。一个线程等待一个同步对象,当用信号通知该对象时,解除阻塞正在等待的线程并调度该线程。同步对象包括事件和互斥体。在这里我们只介绍事件。

事件对象就是一种有两种状态――有信号和元信号的同步对象。事件被创建后自动被置为信号状态。事件可以被命名,从而被不同进程共享。采用下面的函数创建事件:

HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPTSTR lpName);

函数的第1个参数应为0,第2个参数表示事件成为有信号后应该人工重置或自动重置为无信号状态,第3个参数表示创建时事件是有信号还是无信号状态,最后一个参数指向事件名。被命名的事件可以被进程共享,否则就设为NULL。创建事件后,就可以采用SetEvent函数或者是PulseEvent函数用信号通知该事件。

SetEvent函数是自动重置事件,只释放一个线程来运行;PulseEvent函数是人工重置事件,释放所有等待那个事件的线程。最后可以用CloseHandle函数破坏事件对象。

事件的用法通常是,线程使用了下列函数中的一个来等待事件:WaitForSingleObject、WaitForMultipleObjects、MsgWaitForMultipleObjects或MsgWaitForMultipleObjectsEx。当线程被这些函数的其中一个阻塞时,线程只消耗少量的电能和CPU处理能力。需要注意的是:应用程序的主线程不能被WaitForSingleObject或WaitForMultipleObjects阻塞,否则主线程无法处理消息循环。通常的做法是采用多线程,主线程处理消息循环,附加线程处理需要在事件上阻塞的共享资源。

4 实际应用

在车载定位系统中,导般计算机需要接受多种传感器的数据输入,其中最常用到的就是GPS数据。通常GPS接收机的通信方式是串行RS232接口,所以导航程序的GPS模块的功能就是接收从串口收到的数据,然后进行处理。

程序采用多线程,主线程负责消息处理,另外还有读写两个附加线程,使用一个事件触发。读线程负责从串口读回GPS数据,写线程由事件触发。在网络补充版(收集整理)中给出GPS数据接收程序的代码。

PLC和PC机间的串行通信 第6篇

HG-2003型温升测控装置是笔者与我国北京某科学研究联联合开发的一套专门用于高压晶闸管阀温升检测试验的测控装置。考虑到PLC及其网络已被公认为现代测控装置开发的几大支柱之一,而且从近几年的统计数字来看,PLC产品在世界范围内的产量、销量高居各测控器件榜首,因此笔者决定本测控系统的核心器件采用可编程控制器(PLC),其基本功能可通过软件编程实现。PLC的三大亮点是:(1)集电控、电传、电仪三电于一体;(2)网络的性能价格比高;(3)可靠性高。这些亮点就使得整个测控设备结构简单、可靠性高,同时也为实现系统控制功能的二次开发奠定了良好的技术基础。本文主要讨论设备中所采用的西门子公司的S7-200型PLC和PC机之间的串行通信问题。

1、温升测控系统整体介绍

1.1 HG-2003测控装置的测控对象及结构

先来介绍一下该温升试验测控装置的基本工作流程。10kV电源进线经过进线框中的高压断路器CB和高压隔离开关柜中的隔离开关G(用于在设备检修或维护时形成一个明显的断点)后,加在10kV转换变压器T1上。该变压器将三相电转化为单相电。这主要是由于做实验时负载电流很大,如果使用三相电源,容易造成负荷电流的不平衡从而造成试验故障。在转换变压器的输出端(二次侧)连接单相温升试验变压器T2。该温升变压器的一次侧应加装用于无功功率补偿的电容柜,二次侧则通过有载分接开关直接连接试验品(即高压晶闸管阀)进行温升试验。

从基本工作流程不难知道测控装置的测控对象,本装置的具体测控对象如表1所示。

表1 测控对象表

测控装置的物理结构分为两部分:操作控制台和试区控制箱。其中,试区控制箱即PLC控制箱被安装在试验区的隔离开关框内。操作控制台即PC机人机办是非曲直操作台则安装在控制室内。由于二者之间相距约40m,所以采用PC/PPI电缆传输测控信号时需加装中继器。

1.2 HG-2003测控装置的基本功能

本测控系统的基本功能包括:开关分合控制指示功能;设备和试品的过流、过压、过热报警及保护功能;各种操作连锁功能,如电源开关柜内10kV电源断路器和隔离开关柜内的手动隔离开关、控制室门触点、试验大厅门触点间的连锁保护功能等,并设有相关的报警提示画面。这些功能可以避免操作顺序出错。

2、S7-200通信程序的设计与实现 2.1 PC机与S7-200的通信方式

西门子S7-200 PLC的通信功能较强,有多种通信方式可供用户选择,如:单主站方式、多主站方式以及使用调制解调器的远程通信方式等。在本测控装置中,笔者采用单主站方式。在运行Windows或Windows NT操作操作的个人计算机(PC机)上安装STEP 7-Micro/WIN32编程软件后,PC机就可作为通信中的主站。它可与一个或多个从站相连,STEP 7-Micro/WIN 32每次和一个S7-200 CPU通信,但可以访问网络上的所有CPU。该通信方式的硬件配置为PLC到PC机通信口的电缆连接器,即带RS-232口的隔离型PC/PPI电缆,用五个DIP开关设置波特率和其它配置项。它支持的波特率为9.6kbps或19,2kbps,支持的协议为PPI协议。这里并没有使用PPI协议,而是使用PC/PPI电缆和自由端口通信功能来实现S7-200 CPU与PC机间的通信。自由端口模式是计算机或其它带有串行通信接口的设备与S7-200 CPU之间通信的一种廉价和灵活的方法。它以用户定义的通信协议为基础,通过使用相关的中断指令和专用的通信指令控制S7-200 CPU通信口的操作模式,实现与多种智能设备的连接。

具体地说,所谓自由通信端口模式是指CPU的串行通信接口可由用户程序控制的一种通信操作模式,其梯形图程序可以使用接收完成中断、字符接收中断、发送完成中断、发送指令(XMT)和接收指令(RCV)等控制通信过程。在该模式下,通信协议完全由用户程序控制。

CPU处于STOP模式时,自由通信端口模式被禁止,CPU重新建立使用其它协议的通信,例如与编程设备的通信。只有当CPU处于RUN模式时,才能使用自由通信端口模式。通过将特殊寄存器字节SM30或SM130的协议选择域(mm)置1可以将通信端口设置为自由端口模式,处于该模式时不能与编程设备通信。

可以用反映CPU模块上的工作方式开关当前位置的特殊存储器位SM0.7来控制自由端口模式的进入。当SM0.7为1时,工作方式开关处于RUN位置,可选择自由端口模式;当SM0.7为0时,工作方式开关处于TEM位置,应选择PC/PPI协议模式,以便用于编程设备监视或控制CPU模块的操作。

2.2 自由端口模式下PLC串行通信程序的编程要点

计算机与可编程控制器通信时,为了避免通信中的各方争用通信线,一般采用主从工作方式,即计算机为主机,可编程控制器为从机;只有主机才有权主动发送请求报文,从机收到后返回响应报文。下面主要谈一谈编程过程中应注意的几个问题。

首先是电缆切换时间的处理。因为使用了PC/PPI电缆,所以在S7-200 CPU的用户程序中应考虑电缆的切换时间。S7-200 CPU接收到RS232设备的请求报文到它发送响应报文的延迟时间必须大于等于电缆的切换时间。波特率为9600bps和19200bps,电缆的切换时间分别为2ms和1ms。在梯形图程序中可用定时中断实现切换延时。

其次就是通信可靠性的处理,校验码的采用是提高通信可靠性最常用的措施之一。用得较多的是异或校验,即将每一帧中的第一个字符(不包括起始字符)到该帧中正文的最后一个字符作异或运算,并将异或的结果(展品或校验码)作为报文的一部分发送到接收端。接收方接收到数据后计算出所接收到的数据的展品或校验码,再与发送方传过来的校验码比较,如果不同,可以判断通信有误。

最后需注意的是防止起始字符、结束字符与数据字符的混淆。因为报文的起始字符和结束字符只有8位,接收到的报文数据区内出现与起始字符或结束字符相同的数据字符的机率很大,这可能会引起字符混淆。可以在发送前对数据作某种处理,例如选择起始字符和结束字符为某些特殊的值,而将数字字符转化为BCD码或ASCII码后再发送,这样可以避免出现上述的情况,但是会增加编程的工作量和数据传 送的时间。2.3 通信程序中关键指令的使用与说明

发送指令XMT(Transmit)用于启动自由端口模式下数据缓冲区(TBL)数据的发送,指令格式如图1所示。通过指定的通信端口(PORT),将存储在数据缓冲区(TBL)中的信息发送。使ENO=0的错误条件:SM4.3(运行时间),0006(间接寻址),009(在端口0同时XMT/RCV),000B(在端口1同时XMT/RCV)。

XMT指令可以方便地发送1~255个字符,如果有中断程序连接到发送结束事件上,在发送完缓冲区中的最后一个字符时,端口0会产生中断事件9,端口1会产生中断事件26。可以监视发送完成状态位SM4.5和SM4.6的变化,而不是用中断进行发送。数据缓冲区中的起始字符和结束字符是可选项,第一个字节的“字符数”是要发送的字节数,它本身并不发送出去。

接收指令RCV(Receive)可以方便地接收一个或多个字符,最多可接收255个字符。通过指令的通信端口(PORT),将接收信息存储在数据缓冲区(TBL)中。数据缓冲区中的第一个字节用来累计接收到的字节数,它本身不能接收到,起始字符和结束字符是可选项。如果有中断程序连接到接收结束事件上,在接收完最后一个字符时,端口0产生中断事件23,端口1产生中断事件24。

使ENO=0的错误条件:SM86.6和SM186.6(RCV参数错误),SM4.3(运行时间),0006(音接寻址),009(在端口0同时XMT/RCV),000B(在端口1同时XMT/RCV)。CPU不是在自由端口模式。

可以监视SM86.6或SM186.6的变化,而不是用中断进行报文接收。SM86.6或SM186.6为非零时,RCV指令未被激活或接收已经结束。正在接收报文时,它们为0。

当超时或校验错误时,要自动中止报文接收功能。必须为报文接收功能定义一个启动条件和一个结束条件。

RCV指令允许通过参数设定选择报文开始条件和报文结束条件,即设定特殊存储器字节SM86~SM94(用于端口0)和SM186~SM194(用于端口1)。

另外两个比较重要的指令是获取与设置通信口地址指令。获取通信口地址指令(GET ADDR指令)用来读取PORT指定的CPU口的站地址,并将数值放入ADDR指定的地址中。设置通信口地址指令(SET ADDR指令)用来将通信口(PORT)站地址设置为ADDR指定的数值。设置的新地址不能永久保存,断电后又上电,通信口地址将恢复为上次的地址值(用系统块下载的地址)。图2为使用RCV指令和接收完成中断接收数据的通信程序流程图。

3、计算机通信程序的设计与实现

3.1 Windows环境下的PC机通信程序 在Windows环境下,操作系统通过驱动程序控制各硬件资源,不允许用户像在DOS环境下那样直接对串口进行底层的操作。为此,Visual Basic提供了一个串行通信控件:MSComm控件。程序员只需设置和监视MSComm控件的属性和事件,就可以劲易而易举地实现串行通信。

3.2 MSComm控件的属性

MSComm控件主要属性如下:(1)Comm Port:设置并返回通信端口号。(2)Settings:以字符的形式设置并返回波特率、奇偶校验位、数据位和停止位。其中字符n、o、e分别代表无校验、奇校验、偶校验。(3)Port Open:设置并返回通信端口状态。设置为Ture时,打开端口;设置为Flase时,关闭端口。另外,还有Input、Output、Input Mode、In Buffer Count等属性,这里不再一一介绍。3.2 MSComm控件处理接收信息的方式

MSComm控件提供两种处理方式:(1)事件驱动方式:RTHreshold属性非0时,收到字符或传输线发生变化时就会产生串口事件On Comm。通过查询CommEvent属性可以捕获并处理这些通信事件。(2)查询方式:通过查询Iuput Buffer Count(接收缓冲区的字节数)属性值,处理接收到的信息。本装置中采用事件驱动方式。

用Visual Basic语言设计串行通信程序简单实用,关键是如何形成一个友好的用户界面。编程的细节这里不再详述。

无线串行通信技术总结 第7篇

与传统的有线串行(RS232)通信不同,无线串行通信具有设备移动方便(特别在通信设备空间相互隔离不便连线的情况下)、通信距离远(可达几十km)等特点。

无线串行通信应用领域非常广,常用的有:无线抄表;工业遥控、遥测;无线数据传输;银行POS系统;无线数据采集;楼宇自动化、无线监控、门禁系统;智能家居、工业控制;汽车检测设备;无线LED显示屏系统。

目前,比较常用的无线串行通信技术有红外、蓝牙、ZigBee和无线数传等四种。四种方式都有不少公司推出了标准模块,价廉物美,特别适用于嵌入式系统及PC机之间的串行通信。

1、红外串行通信,符合IrDA1.x标准,利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且收发端必须是直线对射。

红外转RS232模块有武汉波士电子的IR232、北京水木行的SMH-IR220等,波特率可达115.2Kbps,通信距离在1m以上。

2、蓝牙串行通信,符合蓝牙协议(BlueTooth)V1.x,使用2.4GHz的ISM(工业、科学、医学)频段。频道共用23个或79个,频道间隔均为 1MHz,采用时分双工方式,调制方式为BT= 0.5的GFSK。蓝牙的数据传输率可达1Mbs,与红外一样,蓝牙的传输距离也较短。

生产蓝牙转RS232模块的公司也有不少,例如:南京国春电气设备有限公司的GC-232-1,深圳蓝色飞舞科技的BF10等。

3、ZigBee串行通信,Zigbee是IEEE 802.15.4协议的代名词,这个协议规定的技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低功耗、低成本。主要适合用于无线测控、无线抄表、智能家电、安防报警等领域,可以嵌入各种设备。其最高波特率可达384K,传输距离在1000m以内。

ZigBee转RS232典型产品有:赫立讯科技(北京)公司的IP-Link 2220H,深圳市鼎泰克电子有限公司的DTK系列等。

双机串行通信设计 第8篇

单片机技术作为计算机技术的一个重要分支, 由于单片机体积小, 系统运行可靠, 数据采集方便灵活, 成本低廉等优点, 在通信中发挥着越来越重要的作用。但能在一些相对复杂的单片机应用系统中, 仅仅一个单片机资源是不够的, 往往需要两个或多个单片机系统协同工作。这就对单片机通信功能的要求不断增加。因此, 单片机通信功能是否满足设计要求是设计中的一个关键问题。

单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少, 长距离传输时成本低, 且可以利用电话网等现成的设备, 所以本系统采用串行通信来实现单片机之间可靠的, 有效的数据交换。

一、概述

1、系统概述

MCS-51单片机系列是Intel公司推出的功能强、速度快的8位高档单片微型计算机系列产品, 是当前工业测试系统中较理想的一种, 内部有一个可编程的全双工的串行通信口, 即串行通信和发送缓冲器 (SBUF) , 这两个在物理上是独立的接收发送器, 既可以发送数据, 也可以接收数据。全双工的串行通信只需要一根输出线 (发送数据TXD) 和一根输入线 (接收数据RXD) 。串行通信中主要有两种技术问题, 一个是数据传送, 另一个是数据转换。具体说, 在发送端, 要把并行数据转换为串行数据;而在接收端, 则要把接收到的串行数据转换为并行数据。

串行数据传送是将构成字符的每个二进制数据按一定的顺序进行传送的方式,

串行通信协议规定字符数据的传送格式如图1所示, 每个串行数据由起始位、数据位、奇偶校检位和停止位组成。本系统就是利用单片机的串行口, 以串行通信方式, 实现两单片机之间的数据交换, 信息共享。

2、方案设计

本系统利用单片机的串行口, 由软件和硬件两部分协调实现两单片机的串行数据传输。硬件电路以AT89C51单片机为核心, 外围电路包括键盘电路 (数据的输入) , 显示电路 (数据的输出) 。工作在硬件电路基础上的软件主要完成数据的输入, 存储, 显示, 发送和接收。由于两单片机相距很近, 可以直接将其串行口相连。系统整体电路图如图2所示。

3、研究方向和技术关键

本系统主要研究两单片机之间的串行数据传输, 实现两单片机之间的信息共享。将P1口连接2个键盘, 作为输入数据控制端。利用单片机的定时/计数器T1来设定P2口的数据显示, 并通过传输线把数据发送给另外一个单片机。本系统的技术关键在于准确的, 高效率的传输信息。主要技术指标: (1) 比特吞吐特性 (2) 有效性 (3) 数据的安全性

二、设计原理

此设计以AT89C51单片机为核心, 利用其内部的串行口, 通过硬件与软件相结合的方式, 实现双机的全双工的串行通信。硬件电路包括键盘电路, 显示电路, 单片机主控电路, 串行通信线和电源电路。软件包括键盘扫描程序, 显示程序, 发送程序和接受程序。发送和接收都采用

中断方式。硬件电路的组成如图3所示。

由于两个单片机应用系统相距很近, 近程通信时 (通信距离小于15米) , 可以

不使用调制解调器, 将它们的串行口直接相连就可以实现全双工的串行通信。

1、硬件设计

(1) 系统组成

下面就以1号机为例, 介绍硬件。硬件电路包括AT89C51单片机, 共阳性LED数码管以及传输线。

AT89C51是一个低电压, 低功耗, 高性能CMOS 8位单片机, 40个引脚, 32个外部双向输入/输出 (I/O) 端口, 同时内含2个外设中断口, 2个16位可编程定时计数器, 2个全双工串行通信口。AT89C51可以按照常规的方法进行编程, 也可以在线编程。片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器 (RAM) , 器件采用ATMEL公司的高密度、非易失性存储技术生产, 兼容标准MCS-51指令系统。

共阳极七段LED数码管见图4所示。

(2) 单片机主控电路

AT89C51是片内有ROM/EPROM的单片机, 用其构成最小应用系统时, 只要将单片机接上时钟电路和复位电路即可。

(1) 晶振电路

AT89C51单片机的时钟信号通常有两种形式:一种是内部时钟方式, 另外一种是外部时钟方式。内部时钟方式是在单片机的XTAL1和XTAL2引脚外接石英晶体, 就构成了自激震荡并在单片机内部产生时钟脉冲信号。本设计采用内部时钟方式, 可以不受设备条件的影响。

(2) 复位电路

当在AT89C51单片机的RST引脚引入高电平并保持两个机器周期时, 单片机内部就执行复位操作。在实际应用中, 复位操作有两个基本形式:一种是上电复位, 另一种是上电与按键均有效的复位。本系统采用上电与按键均有效的复位。

开机瞬间RST引脚获得高电平, 随着电容C的充电, RST引脚的高电平将获得下降。RST引脚的高电平只能保持足够的时间 (2个机器周期) , 单片机就可以进行复位操作。另外在单片机运行期间, 还可以利用按键完成复位操作。

(3) 键盘电路

按键实际上就是简单的开关, 当按键按下时, 相当于开关闭合;当按键松开时, 相当于开关断开。操作员通过键盘输入数据或命令, 实现简单的人机对话。

按键有独立式按键和行列式按键。独立式按键的各个按键相互独立, 每一个按键独立地与一根数据输入线相连。独立式按键配置灵活, 软件结构简单, 但每个按键必须占用一根口线, 在按键数量多时, 口线占用多。所以, 独立式按键常用于按键数量不多的场合。由于此系统所用的按键较少, 故选用独立式按键。

(4) 显示电路

显示器是单片机应用系统常用的设备, 主要包括LED和LCD。LED显示器由若干个发光二极管组成。当发光二极管导通时, 相应的一个笔画或一个点就发光, 控制相应的二极管导通, 就能显示出对应字符。七段LED通常构成字型“8”, 还有一个发光二极管用来显示小数点。由于LED显示器成本低廉, 配置灵活, 并且与单片机接口方便, 所以本系统选用七段LED显示器 (共阳极) 。

(5) 总体硬件电路图

本设计总体硬件电路图如图5所示。

2、系统软件设计

(1) 总体方案

此系统欲实现双机的全双工的串行通信。甲乙两机的内部软件是完全相同的, 1号机和2号机都能发送和接收数据信息, 能同时进行数据交换。

假设1号机为发送方, 2号机为接收方。当按下发送按键时, 1号机开始发送数据, 存储在R7中并通过显示器显示。按下2号机的接收按键, 2号机开始接收数据, 每接收一个数值就直接送到显示器显示。本设计通过键盘输入数据。利用软件控制键盘进行加1或者减1操作, 可以使其输入0~F之间的任意一个数。

(2) 模块说明

(1) 串行口工作方式

单片机的串行通信口是可编程的, 在工作之前应该初始化, 对它初始化编程只需将两个控制字分别写入特殊功能寄存器SCON[98H]和电源控制寄存器PCON[97H]即可。

串行控制寄存器SCON是一个特殊功能寄存器, 用以设定串行口的工作方式、发送/接收控制以及设置控制状态标志。字节地址为98H, 可进行位寻址, SM0和SM1 (SCON.7和SCON.6) :串行口工作方式选择位, 可选择4种工作方式 (见表1)

本系统采用串行口方式1 (SM0置0, SM1置1) 进行通信, 一帧信息为10位, 其中有1个起始位, 8个数据位和1个停止位。

(2) 中断口设定

AT89C51单片机有5个中断源, 在应用之前应该初始化。

本系统用到外部中断, 外部中断, 作为发送中断, 入口地址是0003H。当此键按下, 转到中断服务程序 (执行发送程序) 。作为接收中断, 入口地址是0013H。当此键按下, 转到中断服务程序 (执行接收程序) 。

中断控制寄存器TCON中IT0位, IT1位应置0, 采用电平触发方式。中断允许控制寄存器IE中EX0、EX1、ES位应置1, 允许中断。

(3) 键盘工作设定

本系统采用独立式按键结构。对于是否有按键按下的信息输入方式有中断方式和查询方式, 本系统采用查询方式。

本系统的键盘控制程序分为以下几个部分:

(1) 判断有无键按下;

(2) 用软件编程的方式控制键盘的输入数值;

(3) 可靠的逻辑处理方法。

(4) 显示工作设定

显示程序用查表法显示, 七段数码管 (共阳性) 显示段选码如表2所示。

三、调试

本设计采用软件和硬件结合的方式进行串行数据传送。在电路板检查完好的前提下, 重在软件的调试。程序写好后, 用Keil C编译软件进行编译检查, 没有语法错误。再用Keil C调试软件对程序进行单步运行, 通过各窗口观察程序每一步的执行结果, 程序工作正常, 程序调试结束。

四、结论

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【串行通信的工作方式】相关文章:

串行通信协议08-13

串行通信网络06-01

高速光纤串行总线光纤通信论文04-12

浅谈几种串行通信总线接口技术09-12

基于FPGA的串行总线设计09-11

串行通讯05-20

串行设计07-11

串行优化算法07-19

高速串行通道08-24

异步串行传输09-06

上一篇:贯彻落实“八项规定”文件精神汇报材料下一篇:“黑豆豆”500字_四年级作文_小学作文