基于sockett和plc的远程控制系统本科学位论文.doc





《基于sockett和plc的远程控制系统本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于sockett和plc的远程控制系统本科学位论文.doc(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、有问题请EMAIL:vesor引言随着Internet的普及和远程控制策略的完善,基于Internet的远程控制成为可能。基于公众网络(Internet)的远程控制通过廉价的TCP/IP和Ethernet连接克服了工业网络的弊端,大大降低了网络的建设与维护成本,提高了已有设备的利用效率和联合生产能力,并广泛地延伸人类的工作空间。目前国际上已经成功地应用于远程机器人控制,满足在空间、海洋和医学显微环境中的特殊需求3。 Ferrel于1965就提出了在网络控制中时变的网络时延问题。华盛顿大学的T.J.Tarn教授与K.Brady是基于Internet机器人远程控制第一人。Wakita等人提出“智能
2、化监视”远程机器人控制系统,指出低带宽、需求的重要性。Bejczy等人提出远程控制中“虚拟机器人”的概念。Kuk-Hyun Han等人进行机器人系统在KAIST与UC Davis之间的Internet远程控制实验,使用由Java语言编制的GUI监视机器人的状态。Ren C. Luo等人实现了简单迷宫中多障碍存在条件下机器人自动路径寻优,该实现是远程控制与智能控制两种先进控制手段的典型结合。Rovetta等人使用优化的通讯媒介混合进行远程外科手术。德国空间研究项目ROTEX系统是公认的网络远程控制成功范例。它采用多个超前Kalman滤波器作预测,1993年装备于哥伦比亚航天飞机上。目前在国内还没
3、有对基于Internet的网络远程控制的系统性研究4。原来的基于公用电话网的远程控制系统6,虽然实现了双向传输,但是传送/接受速率太低。基于无线寻呼网络为基础的远程控制系统虽然传输速率较高,但只能单项传输,不能进行反馈。公用电话网和无线寻呼网,还由于网络覆盖情况等限制,不能应用到家庭。本文设计的基于socket和plc的远程控制系统,克服了以上两个网络的缺陷。本文在Winsock 的基础上采用 TCP/IP 传输控制协议来完成数据的远程通信。由于TCP/IP协议组是为跨越局域网和广域网环境的大规模互联网设计的,因此,利用因特网为传输媒介,满足了远程控制系统应用到家庭上时,对网络覆盖范围的需求。
4、另外,由于控制信息在因特网上传输时具有较快的速率,因此可以实现实时监控和实时控制。本系统在因特网上还可以实现信息反馈,使系统更加稳定、健全,实现一个完整的远程控制系统。用PLC作为本系统的可编程控制器,是因为PLC可以通过通信联网与服务器相连,实现分散控制,集中管理。PLC内有成百上千个可供使用的编程元件,有很强的功能,可以实现非常复杂的控制功能,具有很高的性能价格比2。 本设计的结构图,如下图所示:客户端1客户端2客户端3服务器端PLC风扇热水器空调反馈信息图-控制系统结构图2远程控制系统硬件部分及通信相关协议2.1PLC简介PLC主要由CPU模块、输入模块、输出模块和编程器组成。.中央处理
5、单元(CPU) 中央处理单元(CPU)是PLC的控制中枢。它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据;检查电源、存储器、I/O以及警戒定时器的状态,并能诊断用户程序中的语法错误。当PLC投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后按指令的规定执行逻辑或算数运算的结果送入I/O映象区或数据寄存器内。等所有的用户程序执行完毕之后,最后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行,直到停止运行。为了进一步提高PLC的可靠性,近年来对大型PLC还
6、采用双CPU构成冗余系统,或采用三CPU的表决式系统。这样,即使某个CPU出现故障,整个系统仍能正常运行。b. 输入(Input)模块和输出模块(Output)输入(Input)模块和输出模块(Output)简称为I/O模块,是联系外部现场设备和CPU模块的桥梁。输入模块用来接收和采集输入信号,开关量输入模块用来从按钮、选择开关、数字拨码开关、限位开关、接近开关、压力继电器等来的开关量输入信号。模拟量输入模块用来接收电位器,测速发动机和各种变送器提供的连续变化的模拟量电流电压信号。开关量输出模块用来控制接触器、电磁阀、指示灯数字显示装置和报警装置等输出设备,模拟量输出模块用来控制调节阀,变频器
7、等执行装置5。c. 编程器编程器用来生成用户程序,用它来进行编辑、检查、修改和监视用户程序的执行情况。使用编程软件可以在计算机的屏幕上直接生成和编辑梯形图和指令表程序,并可以实现不同编程语言之间的互换。程序被编译后下载到PLC,也可以将PLC中的程序上传到计算机。2.2 RS-232C协议RS-232-C是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道。 在多数情况下主要使用主通道,对于一般双工
8、通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。2.
9、3 TCP/IP协议TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当用户直接网络连接时,用户的计算机应提供一个TCP/IP程序的副本,此时接收所发送的信息的计算机也应有一个TCP/IP程序的副本。TCP/IP是一个两层的程序。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确地到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/I
10、P使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。 许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。 使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议
11、(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。 与TCP/IP协议相关的协议还包括用户数据报协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。2.客户端/服务器端(C/S)通信 Client(客户端) Server(服务器端) PLC 空调冰箱电视图2-1控制信息流程图如图2-1 客户端和服务器端之间通过Internet进行通信,采用了业界标准的协议组(TCP/IP)。因为(TCP/IP)协议组是为跨越局域网
12、和广域网环境的大规模互联网络设计的,因此,在互联网中进行远程控制,需采用(TCP/IP)协议组7。所有的网络在传输协议上都是分层的,层的集合通常称为栈。应用程序跟最高层通话,最底层则跟网络通话。图2-2显示了客户端和服务器端TCP/IP协议栈的结构9,每一层在逻辑上与另一端相对应的层进行连接和通信;物理数据是从协议栈的上部传送到底部,通过网络传输到另一端协议栈的底部,然后再从栈的低端往上传送到对应的层。图中右边是服务程序,左边是客户程序,可以把基于HTTP协议的WWW服务器程序认为是服务程序,把自己计算机上的浏览器程序认为是客户程序。TCPIPTCPIPHTTP客户HTTP客户以太网驱动程序以
13、太网驱动程序应用层传输层网络层链路层图2-2TCP/IP协议栈的结构2. 服务器和PLC之间通信PLC与服务器的comm端口进行通信,采用了RS-232C串行通信方式,PLC需安装FX2N232BD通信用功能扩展板,硬件接线如图2-3所示。RXD,TXD和SG分别是接收端、发送端和信号公共线。 232-BD 计算机(comm)RXDTXDSGRXDTXDSG图2-3串口通信结构计算机和PLC之间的数据流有三种形式:计算机从PLC中读数据;计算机向PLC写数据和PLC向计算机写数据。计算机读PLC的数据计算机从PLC中读取数据的过程分为三步:(1) 计算机向PLC发送读数据命令。(2) PLC接
14、收到命令以后,执行相应的操作,将计算机要读取的数据发送给它。(3) 计算机在接收到相应的数据后,向PLC发送确认响应,表示数据已经收到。计算机向PLC写数据计算机向PLC写数据的过程分为两步:(1) 计算机首先向PLC发送写数据命令。(2) PLC接收到写数据命令以后,执行相应的操作,执行完成后向计算机发送确认信号,表示写数据操作已完成。PLC发送请求式(on-demand)数据给计算机PLC直接向上位机发送数据,计算机收到后进行相应的处理,不会向PLC发送确认信息8。3远程控制系统软件部分3.1服务器端与客户端通信编程3.1.1采用VC+下的MFC框架编程MFC框架定义了应用程序的轮廓,并提
15、供了用户接口的标准实现方法。所以我们要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件;资源编辑器用于帮助直观地设计用户接口;ClassWizard用来帮助添加代码到框架文件;最后进行编译1。MFC提供了两个用于WinSock编程的类:CAsyncSocket和CSocket,它们避免了程序被挂起的可能,使得应用程序更高效。例如:通过套接字发送一个字符串到另一台主机,我们可以调用socket的Send()函数,此函数尝试发送数据,但如果套接字没有准备好并在等待则Sen
16、d()就返回;当套接字准备好时,一个消息发往套接字窗口,并由该窗口捕获消息并发送数据,这样就实现了异步Winsocket通信。此外,MFC还把复杂的Winsock API封装到类里,这使得编写应用程序更加容易。3.1.2客户端开发整体流程Sockets的大部分工作是基于连接的:两个应用程序在每一端使用一个套接字形成一个连接,此后应用程序沿着此连接发送及接收数据。WinSock支持两种类型的套接字:流式套接字(SOCK_STREAM)和数据包套接字(SOCK_DGRAM)。流式套接字提供了一个面向连接的,可靠的,数据无错的,无重复发送的及按发送顺序接收数据的服务。流式套接字使用传输控制协议(TC
17、P)。当用户想发送大批量数据时或想让发送的数据按顺序无重复的到达目的地时,使用流式套接字是最方便的。客户端程序的编写过程如下:()创建一个基于对话框的项目Client。(2)去掉Ok和Cancel两个按钮,增加IDC_BUTTON_CONNECT(连接)、IDC_BUTTON_EXIT(关闭)、IDC_BUTTON_SEND(空调开)等按钮,增加Edit控件IDC_EDIT_IPADDR(用来输入IP地址)和IDC_EDIT_PORT(用来输入端口号)。(3)CAsyncSocket类用DoCallBack()函数处理MFC消息,当一个网络事件发生时,DoCallBack()函数按网络事件类型
18、:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分别调用OnReceive()、OnSend()、OnAccept()、OnConnect()函数。由于MFC把这些事件处理函数定义为虚函数,所以要生成一个新的C+类以重载这些函数,具体做法如下:以Public方式继承CAsyncSocket类,生成新类MySocket;为MySocket添加虚函数OnReceive()、OnConnect()、OnSend()。3.3创建CAsyncSocket对象,生成套接字在使用一个套接字以前必须创建它,这个工作分为两步:首先构造一个CAsyncSocket对象,接着调用CAsy
19、cSocket类的成员函数Creat()来创建底层的套接字。CAsyncSocket:Creat()函数的声明如下:BOOL Creat(UINT nSocketPort=0,Int nSocketType=SOCKET_STREAM,long lEvent=FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSELPCTSTR lpszSocketAddress=NULL);其中,第一个参数nSocketPort指定一个分配给套接字的端口号,默认值为0。在很多情况下,特别是在服务器应用程序中,用户要明确地分配一个公认的的端口号给套接字,这个端
20、口一旦确定就不应该随意改动,因为客户端应用程序可以使用这个端口和服务器应用程序相连接。本程序中创建套接字的过程如下:首先创建CAsyncSocket对象m_clientSocket;再由m_clientSocket调用CAsyncSocket的成员函数Creat();m_clientSocket.Creat(0,SOCK_STREAM,FD_CONNECT);3.1.4套接字与服务器连接使用流式套接字就存在一个在客户端和服务器端建立连接的过程,只有在客户端和服务器端之间建立了连接,套接字才能进行数据传输工作。客户端应用程序的流式套接字可以使用Connect()成员函数来和服务器端进行连接。Co
21、nnect()成员函数,实际上是向服务器发出一个连接请求,这个连接请求如果被服务器接受,则两端的链接顺利实现;如果连接请求得不到响应,那么连接无法建立。对于异步事件,CAsyncSocket对象使用通知回调(notification callback)。在这种情况下,如果Connect()成员函数不能得到立即响应,它将返回FALSE。无论Connect()成员函数调用成功与否,在结束调用之后,OnConnect()事件处理函数都将被调用。本程序中套接字与服务器连接的过程如下:m_clientSocket.Connect(m_szServerAdr,m_szPort);其中m_szServerA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 sockett plc 远程 控制系统 本科 学位 论文

限制150内