1.2 Modem接口设计
本系统利用主控制器的 UART2进行模拟 Modem通信的基本过程:DS80C400先把准备写入串行设备的数据发送到 UART的寄存器中,再通过 FIFO传送到串行设备。
Modem接口电路我们采用芯片 MAX213EAI。
MAXZ13EAI是 5V工作电源的 RS-232电平转换芯片。
它集成了 4个输入和 5个输出的 RS-232电平转换口,可以很好的满足 Modem接口标准传输的需要。
接口电路如图 3所示。
2 嵌入式 WEB服务器软件设计从设计角度,则可将嵌入式软件分为 4个模块:网络通讯模块、接口管理模块、人机交互模块和远程加载模块。
2.1 网络通讯模块设计
2.1.1 以太网接入 的实现
嵌入式 WEB服务器是沟通客户和控制现场的重要桥梁,客户通过认 Web浏览器来实现远程监控的功能。
本 WEB服务是以 TCP/IP协议来传输数据,以 HTTP协议来进行客户端与服务器之间的请求和响应,其体系结构如图 4所示。
当客户在界
当客户在界面上进行操作时,如点击复选框或在文本框中输入数据。
Applet根据用户的操作进行响应,从而构造出新的命令字,向嵌入式 WEB服务器发出请求,服务器根据新的命令字驱动控制系统中相应的执行机构,并将新的状态信息和数据信息返回到客户端,客户端解析返回的数据,并进行实时显示。
2.1.2公用电话网接入 的实现
为保证能在无以太网环境的情况下进行通信,系统还采用了串口外接调制解调器通过电话网来实现与远程客户机的通信。
网络建立的实现就要用到 PPP协议(Point to Point Protocol点对点协议)。
在程序运行的时候先要读取 PPP通信的控制信息,判断是否使用 PPP进行通信,否则默认使用 来进行数据的传输。
而不是同时开启这两种模式。
由于 PPP通信并不区分客户端和服务器,把负责认证和 IP分配的端认为是服务器,而不需要认证和使用服务器提供 IP的端认为是客户端。
设计了 LinkManger类、PPPDaemon类、PPPModemLink类、ModemCommand类、PPPException类,用来实现 PPP通信。
其中 LinkManger类:用于管理 PPP连接,启动经由网络接到远端服务器的出站连接,生成一个 PPPDaemon实例用来设置 IP,验证用户名和密码。
并实现接收 PPP事务。
PPPModemLink类首先打开一个串口并进行初始化,初始化完成后,把一个串口的对象传递给 PPP,然后创建 ModemCommand对象来控制与调制解调器的串行通信,并通过 SerialPortEvenlistener接口监视 CD以检测调制解调器是否挂起。
其定义了 Modem的初始化和复位方法:initializeLink()和 resetModem()。
ModemCommand类负责和 modem具体的串行通信,其分别定义了 mand()、 waitFoResponse()和 receiveCommand()方法。
分别用来发送、等待和接收命令。
当操作超时,则抛出 DataLinkException;waitforMatc()主要用来供 sendCommand()和 receiveCommand()进行调用,用来判断接收到的字符串是否和匹配字符串一致。
当相应操作超时,则抛出 DataLinkException。
2.2 电子邮件功能的实现
在系统设计时,考虑到系统的存储容量,不可能将采集的数据全部存储在本地的系统中,为了保存系统的日志,可以采取定时向指定邮箱发送数据。
本系统用 Java语言开发了后台自动发送邮件的功能。
邮件采用 BASE64编码,并且支持 SMTP认证。
在本系统中,只需要完成 SMTP的发送方式,而不要求其完成 SMTP的接收方式,这样就简化了编程的难度。
SMTP开服务器和 SMTP客户之间的对话过程:首先建立 TCP连接,然后客户端发送 HELO命令以标识发件人的身份,客户端发送 MAIL命令,服务器端以 OK作为响应,表明准备接收。
接下来客户端发送 RCPT命令,以标识该电子邮件的计划接收人,服务器端如表示愿意为收件人接收邮件。
则在协商结束后发送邮件,用命令 DATA发送,将输入内容一起发送出去。
最后结束此次发送,用 QUIT命令退出。
所有的命令都是以换行符作为结束。
2.3 嵌入式 Web服务器接口模块的实现
在本系统中为了满足不同工业控制系统的需要,设计有串口、CAN总线接口、Modem接口和 RS-485接口。
系统在启动时,从系统的 FLASH中读取 120个字节的初始化信息,并据此来判断是否开启接口,并对所开启的接口进行初始化。
由于各个模块的初始化函数己经存在,因此系统初始化时,只要调用相应的函数就够了。
PPP已经在网络模块部分介绍,而 RS-485的使用和普通串口的初始化相似,本部分主要介绍 RS-232和 CAN。
2.3.1 RS-232串口驱动函数设计
系统的开发语言是 Java,但 Java本身不提供对串口操作的类,要实现对串口的读写操作,需要用第三方 API函数完成,实际的开发过程中,使用串口通讯协议开发包m.jar,它是 J2SE的标准扩展,支持 RS-231串口,并提供了一种与平台无关的串口通信机制。
串口驱动主要实现对串口的读写操作,给应用程序提供发询接收数据的接口。
串口正常工作之前,需要进行初始化设置,因此驱动中还有初始化函数。
串口的驱动函数串口的驱动函数主要包括: serialInit()用来初始化 UART、serialRead()用来接收字节组、 serialWrite()用来发送字节组。
2.3.2 CAN总线模块 CAN接口在工业控制系统的运用越来越广泛,操作系统提供了对 CAN进行操作的
.CanBus类,如要对 CAN进行操作,首先要建立一个 CAN的对象。
CanBus canTest = new CanBus(CanBus.CANBUS0);
由于 DS80C400只提供一个 CAN控制器,所以只能选用 CANBUS0。
一旦对象被初始化,就需要设置 CAN的速率。
CAN速率的设置通过设置 Prescaler,TSEGI,TSEGZ和同步段来完成。
CAN的计算速率为:CAN波特率=晶振频率/Prescaler+(TSEG1+TSEG2)。
将上述设置完成后,就可以使 CAN控制器使能了:canTest.enableController();要想完成帧的发送和接收,除了在信息中心设置接收和发送模式外,还必须先定义一个 CanFrame的对象即 CanFrame frame =new CanFrame();要接收一个 CAN的帧时,信息是以 CanFrame对象的形式进行接收,并且调用 canTest.receive(frame);如要发送数据,也必须将数据封装层 CanFrame对象的形式进行发送,并且调用 canTest.sendFrame(frame)。
2.4人机接口模块
本系统将浏览器/服务器(B/S)结构和客户端/服务器(C/S)结构相结合,客户端仍只需使用易于操作的 Web浏览器,使用该模式不仅统一了用户界面,为用户对系统的查询和操作提供了极大的方便,系统还通过 Java Applet平衡了服务器端与浏览器端的负载状况。
为了对控制对象进行远程操作, Web页面需要给用户提供三个功能:一是现场设备查询,主要是对现场设备的运行状态和采集数据进行查询;二是设备远程控制,提供对运行现场某些参数的修改能力;三是报警 (如高限报警、下限报警等 ),如果现场设备超过设定的报警值,一方面会在网页上发出声音警报。
此外还会在后台向指定的邮箱发送报警邮件。
2.4.1 网页的交互方式
Web系统主要采用 HTTP协议。
HTTP采用请求/响应的握手方式,每个 HTTP交互都由从客户端发往服务器的请求和从服务器发往客户端的响应组成。
HTTP采用 TCP连接,而且该连接状态仅在此次连接中保持,无论服务器或是浏览器都不会记忆上次的连接状态。
在设计中首先采用包中的 http类,实现在 80端口等待客户端的请求。
其主要实现如下:
HTTPServer httpd = new HTTPServer(80); 然后给出将对应的 HTML页面返回到浏览器。
httpd.setIndexPage(“index.html”);初始化结束后,Web服务器进入正常的工作状态以轮询的方式来进行处理。
2.5 系统的远程加载和调试
为了使系统满足不同任务的需要,有时需要对嵌入式系统中运行的软件进行动态更新。
本系统可以直接将新版本的监控软件通过计算机网络传送到现场的嵌入式系统,对原有的软件进行更换,从而实现软件的远程动态更新。
利用操作系统自带的 FTP和 功能,就可以实现系统的远程更新和调试。
在系统初始化结束后开始运行,一个线程创建了服务器套接字(Server Socket)来侦听客户端的 FTP和 连接请求。
我们利用 和 FTP技术,可以实现在 上对嵌入式节点的远程操作,包括程序的运行和停止、程序下载、在线更新、调试、配置等。
3 总结
本文的创新点是采用 Java技术进行软件开发,在实现传统的数据采集和发布的基础上,还增加了电子邮件功能,使得系统保存日志更为方便,增加了远程文件的上传和下载,使得系统可以远程更新;其次,对原有的操作系统进行重新编译,实现了对 Rash的加载。
从而省去了传统的通过电池保护电路来完成掉电后的数据保存;最后,系统设计了多个接口可以和不同接口的控制设备相连,增强了系统的通用性。
在网络接入模式上以太网和 PPP相结合使得系统的灵活性大为增强。
农历春节将至,腾讯云开启了热门爆款云产品首单特惠秒杀活动,上海/北京/广州1核2G云服务器首年仅38元起,上架了新的首单优惠活动,每天三场秒杀,长期有效,其中轻量应用服务器2G内存5M带宽仅需年费38元起,其他产品比如CDN流量包、短信包、MySQL、直播流量包、标准存储等等产品也参与活动,腾讯云官网已注册且完成实名认证的国内站用户均可参与。活动页面:https://cloud.tencent.c...
目前,我们都在用哪个FTP软件?喜欢用的是WinSCP,是一款免费的FTP/SFTP软件。今天在帮助一个网友远程解决问题的时候看到他用的是FlashFXP FTP工具,这个工具以前我也用过,不过正版是需要付费的,但是网上有很多的绿色版本和破解版本。考虑到安全的问题,个人不建议选择破解版。但是这款软件还是比较好用的。今天主要是遇到他的虚拟主机无法通过FTP连接主机,这里我就帮忙看看到底是什么问题。一...
digital-vm在日本东京机房当前提供1Gbps带宽、2Gbps带宽、10Gbps带宽接入的独立服务器,每个月自带10T免费流量,一个独立IPv4。支持额外购买流量:20T-$30/月、50T-$150/月、100T-$270美元/月;也支持额外购买IPv4,/29-$5/月、/28-$13/月。独立从下单开始一般24小时内可以上架。官方网站:https://digital-vm.com/de...