论文部分内容阅读
摘 要:下位机为PROTEUS结合Keil C编程的模拟仿真电路,上位机使用VC++ MFC编制界面,依据RS232串行通信协议,通过虚拟串口将上下位机进行联机的电路模拟仿真演示,并介绍上位机的串口编程程序,以及上下位机串口设置。根据仿真实验以及编程操作表明,对串口通讯技术具有较大意义。
关键词:上位机;下位机;虚拟串口;仿真电路
0 引言
单片机的使用在现今的电子技术时代中使用的越来越频繁,电路系统也就越来越复杂了,因此所涉及到的实验实践环节比较多,硬件投入大。而在具体工程实践中,如果由于设计思路有误而进行了相应的产品开发设计,会浪费较多的时间和经费。利用计算机软件的仿真技术,可以充分的仿真比较复杂电路。本文所述的就是在利用PROTEUS结合Keil C编程来仿真测试系统时的串口通讯技术。
1 总体思路
本论文中上位机主要使用了Proteus电路仿真软件并结合Keil C编程软件,下位机利用VC++ MFC编程创建控制界面,在上、下位机联机工作时,它们之间通过虚拟串口,依照串行通信协议进行通信达到仿真实际电路的效果。最终焊制出实际电路,其中上位机界面与实际电路之间的通信采用的是自制串口通信线。上位机的通信端口为PC机上的物理串行口,下位机通信端口为每个单片机的TXD,RXD引脚上,通信线将上、下位机通信端口连接,这样就能实现上下位机的通信了。而在电路模拟仿真时由于都在PC机内进行通信,那么物理通信端口无法使用,那么需下载一个虚拟串口软件,对上、下位机和虚拟串口进行相关设置后即可使用。但是串口并不是联机上了就能使用,还必须上位机界面对串口编程,所以在此也将列出了串口的相关程序。
1.1 PC机串口通讯
上位机与下位机在发送指令或者接收数据等工作时,它们之间需要一种方式进行沟通,这样就需使用了串口来为它们架起了桥梁。
串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议,很多GPIB兼容的设备也带有RS—232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
串口用于ASCII码字符的传输。通信使用3根线完成:1)地线;2)发送;3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配,本设计使用的是:9600,n,8,1。
1.2 虚拟串口
一般在焊接电路之前,应先绘制出上、下位机模拟电路和界面进行仿真,电路仿真的串口不能使用PC机上的物理串口,所以就需要下载一个虚拟串口来进行通信。本设计中使用的虚拟串口为VSPM,它可以将TCP/IP连接、UDP广播,映射成本机的虚拟COM口,应用程序通过访问虚拟串口,就可以完成远程控制、数据传输等功能。
在第一次启动虚拟串口时要选择他的工作模式,共有五种工作模式,分别为:1)运行在用户端模式,支持运行在服务器端模式的设备;2)运行在服务器端模式,支持运行在客户端模式的设备;3)运行在客户端模式,支持运行在服务器端模式下的以太网控制器产品;4)运行在服务器端模式,支持运行在客户端模式下的以太网控制器产品;5)UDP广播模式。如图2,被设计中选择的是在UDP广播模式下工作。并添加两个虚拟串口,由于物理串口被规定为COM1,因此下位机串口选择为COM3,上位机串口选择为COM4。
1.3 串口编程
在VC++中对串口的使用是使用的对MSComm控件进行编程。首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project——>Add to Project——> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,只需要关心控件所提供的对Windows通讯驱动程序中API函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。
打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发OnComm事件,CommEvent 属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反m_MSComm.SetOutBufferCount(0); // 控件事件的响应声明
MSComm控件通过串口进行数据接收和发送的方式可以有查询和事件驱动方式。对数据接收和发送的相关操作是MSComm控件操作的关键处。如接收数据的部分关键代码如下:
1.4 基于虚拟串口的电路仿真
上面我们曾经说过,电路在进行仿真时在需要串口来与上位机通信,虚拟串口就是在这个时候用来进行通信。首先下位机的PROTEUS ISIS图打开,将虚拟串口COMPIM右击再左击后修改对话框中的Physical port:COM3、Physical Baud Rate:9600、Physical Data Bites:8、Physical Parity:NONE。点击OK,完成了修改,拨动联机/单机开关到联机。同时打开上位机界面修改串口为COM4,波特率为9600。最后打开虚拟串口以UDP广播模式工作,新增串口COM3,COM4。UDP接收地址和发送地址下拉选择本机此时的的IP地址,设置COM4的接收端口为COM3的发送端口,发送端口为COM3的接收端口即可。这时使上位机与下位机开始运行便可以进行仿真了。
2 总结
本课题经过了多次模拟仿真实验,编制出以VC++为软件的上位机界面,使用虚拟串口,进行模拟通讯。并根据PROTEUS仿真电路以及串口通讯协议,制作出实际电子电路以及PC机串口通讯线,完成了对PROTEUS仿真电路完善。
参考文献:
[1]程刚、李会方,瞬断瞬通测试技术,电子测量技术,2006.
[2]陆建明、王月明、杨子亮,电气接插件瞬断测试技术,仪器仪表标准化与计量,2008.
[3]彭为编,单片机典型系统设计实例精讲,北京:机械工业出版社,2007.
[5]戴佳编著,51单片机C语言应用程序设计实例精讲,北京:电子工业出版社,2006.
[6]周鸣扬编著,Visual C++界面编程技术,北京:北京希望电子出版社,2003.
关键词:上位机;下位机;虚拟串口;仿真电路
0 引言
单片机的使用在现今的电子技术时代中使用的越来越频繁,电路系统也就越来越复杂了,因此所涉及到的实验实践环节比较多,硬件投入大。而在具体工程实践中,如果由于设计思路有误而进行了相应的产品开发设计,会浪费较多的时间和经费。利用计算机软件的仿真技术,可以充分的仿真比较复杂电路。本文所述的就是在利用PROTEUS结合Keil C编程来仿真测试系统时的串口通讯技术。
1 总体思路
本论文中上位机主要使用了Proteus电路仿真软件并结合Keil C编程软件,下位机利用VC++ MFC编程创建控制界面,在上、下位机联机工作时,它们之间通过虚拟串口,依照串行通信协议进行通信达到仿真实际电路的效果。最终焊制出实际电路,其中上位机界面与实际电路之间的通信采用的是自制串口通信线。上位机的通信端口为PC机上的物理串行口,下位机通信端口为每个单片机的TXD,RXD引脚上,通信线将上、下位机通信端口连接,这样就能实现上下位机的通信了。而在电路模拟仿真时由于都在PC机内进行通信,那么物理通信端口无法使用,那么需下载一个虚拟串口软件,对上、下位机和虚拟串口进行相关设置后即可使用。但是串口并不是联机上了就能使用,还必须上位机界面对串口编程,所以在此也将列出了串口的相关程序。
1.1 PC机串口通讯
上位机与下位机在发送指令或者接收数据等工作时,它们之间需要一种方式进行沟通,这样就需使用了串口来为它们架起了桥梁。
串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议,很多GPIB兼容的设备也带有RS—232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
串口用于ASCII码字符的传输。通信使用3根线完成:1)地线;2)发送;3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配,本设计使用的是:9600,n,8,1。
1.2 虚拟串口
一般在焊接电路之前,应先绘制出上、下位机模拟电路和界面进行仿真,电路仿真的串口不能使用PC机上的物理串口,所以就需要下载一个虚拟串口来进行通信。本设计中使用的虚拟串口为VSPM,它可以将TCP/IP连接、UDP广播,映射成本机的虚拟COM口,应用程序通过访问虚拟串口,就可以完成远程控制、数据传输等功能。
在第一次启动虚拟串口时要选择他的工作模式,共有五种工作模式,分别为:1)运行在用户端模式,支持运行在服务器端模式的设备;2)运行在服务器端模式,支持运行在客户端模式的设备;3)运行在客户端模式,支持运行在服务器端模式下的以太网控制器产品;4)运行在服务器端模式,支持运行在客户端模式下的以太网控制器产品;5)UDP广播模式。如图2,被设计中选择的是在UDP广播模式下工作。并添加两个虚拟串口,由于物理串口被规定为COM1,因此下位机串口选择为COM3,上位机串口选择为COM4。
1.3 串口编程
在VC++中对串口的使用是使用的对MSComm控件进行编程。首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project——>Add to Project——> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,只需要关心控件所提供的对Windows通讯驱动程序中API函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。
打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发OnComm事件,CommEvent 属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反m_MSComm.SetOutBufferCount(0); // 控件事件的响应声明
MSComm控件通过串口进行数据接收和发送的方式可以有查询和事件驱动方式。对数据接收和发送的相关操作是MSComm控件操作的关键处。如接收数据的部分关键代码如下:
1.4 基于虚拟串口的电路仿真
上面我们曾经说过,电路在进行仿真时在需要串口来与上位机通信,虚拟串口就是在这个时候用来进行通信。首先下位机的PROTEUS ISIS图打开,将虚拟串口COMPIM右击再左击后修改对话框中的Physical port:COM3、Physical Baud Rate:9600、Physical Data Bites:8、Physical Parity:NONE。点击OK,完成了修改,拨动联机/单机开关到联机。同时打开上位机界面修改串口为COM4,波特率为9600。最后打开虚拟串口以UDP广播模式工作,新增串口COM3,COM4。UDP接收地址和发送地址下拉选择本机此时的的IP地址,设置COM4的接收端口为COM3的发送端口,发送端口为COM3的接收端口即可。这时使上位机与下位机开始运行便可以进行仿真了。
2 总结
本课题经过了多次模拟仿真实验,编制出以VC++为软件的上位机界面,使用虚拟串口,进行模拟通讯。并根据PROTEUS仿真电路以及串口通讯协议,制作出实际电子电路以及PC机串口通讯线,完成了对PROTEUS仿真电路完善。
参考文献:
[1]程刚、李会方,瞬断瞬通测试技术,电子测量技术,2006.
[2]陆建明、王月明、杨子亮,电气接插件瞬断测试技术,仪器仪表标准化与计量,2008.
[3]彭为编,单片机典型系统设计实例精讲,北京:机械工业出版社,2007.
[5]戴佳编著,51单片机C语言应用程序设计实例精讲,北京:电子工业出版社,2006.
[6]周鸣扬编著,Visual C++界面编程技术,北京:北京希望电子出版社,2003.