3.2 模拟量输入输出与数字量处理任务
模拟量输入输出任务属于周期性执行的任务。它包括几个组成部分:模拟信号量的输入,控制算法的运算,产生控制输出。任务首先从物理通道读取经过A/D转换后的传感器信号,对其进行平滑滤波、工程单位转换和报警检测后与控制给定值进行比较,其误差经过内置的PID控制功能块运算后,得到相应的控制量,此控制量经过工程单位转换后直接送给D/A转换输出给现场执行机构,控制其输出,从而实现了现场化的闭环控制。
数字量指的是变量的输入或输出值只能是0或者1这两种状态中的一种。与模拟量输入输出任务相同,数字量处理任务也属于周期性执行的任务,它负责读取现场开关量状态并完成对离散输出的控制。相对来说读取数字量输入是比较简单的任务,对数字量的基本操作,就是微处理器的相应的端口进行读写。比较复杂的是对于脉冲累计型的输入信号和要求以预定义的一定频率转换输出状态的输出信号,在嵌入式实时操作系统下可以通过设定任务的执行间隔来得到简化
3.3 Web Server守护任务
服务器功能是通过Web Server守护任务来实现,它的服务是被动的,需要用户对它进行访问,然后响应用户的请求。系统通过监听来自客户机的连接请求,一旦监听到连接建立请求并建立连接后,接收来自客户端的数据,并根据相应的命令返回所请求的页面作为响应。任务实现的流程图如图3所示。
图3 Web Server守护任务流程图
3.4 通讯任务
网络通信任务是基于C/S模式的,即客户/服务器模式。现场设备作为服务方,它在等待客户的请求,提供数据和信息,客户方是控制方,它可以运行于工业现场的同等现场设备,也可以是远程浏览器,客户方提出请求,对应着双方约定好的命令,现场设备在验证命令后,开始根据不同的命令字发送相关数据或者修改本地参数变量。通讯任务主要完成两方面的任务,一方面考虑到工业现场中,不同的控制节点之间有相互数据交换的需求,另一方面用于响应客户端浏览器中嵌入的applet通过Socket连接向服务器请求实时数据的请求,二者的区别在于通过不同的通信端口向服务器请求数据。
通讯任务主要通过Socket编程实现,现场设备控制器和现场设备之间的通信采用TCP协议,通信端口选择1000;而浏览器内嵌的applet与服务器的通讯则选择2000端口。应用于工业现场的程序应该是“健壮”的,然而在实际中,已经打开的TCP Socket连接随时可能会中断,原因是多方面的,可能是网络问题引起的连接超时,或者是接收端发出了RST重置标识或放弃连接等等。因此在应用程序中设计了一个状态机检测机制,随时检测TCP Socket上的连接状态,根据当前连接的不同状态采取相应的处理方法,这样就增强了程序的“健壮性”。程序中先后对两个端口的Socket连接进行监视并根据其不同状态转入不同条件下处理,由于对两个端口的操作原理基本相同,区别在于Socket连接建立后,自定义的通信内容的不同所引起的服务器对其响应的不同。