三、模块化开发
我们在第一章中提到,SCADA系统可能应用于不同的部署框架中,包括“仪器-工控机”、“仪器-工控机-服务器-客户端”和“仪器-服务器-客户端”。为了应对这种情况,有两种开发模式:
1、开发一个大的系统,然后通过配置项启用或禁用某些部分的代码。
2、设计好接口,每个模块独立开发,最后产品像搭积木一样拼装每个模块发布。
本系统使用第二种开发模式。下面列举几个模块简要描述,具体见后面的章节。
3.1 链路模块
仪器跟上位机的连接,可能通过串口,可能通过网线,而使用网线时,可能作为TCP客户端、TCP服务端,也可能是使用UDP。我们把这些连接的方式称为链路。链路模块不需要知道数据的格式,对链路来说,所有的数据都是字节流(二进制数据或ASCII码数据在底层都是字节流)。链路模块的工作只有两个,就是读取字节流和写入字节流。
3.2 通信协议模块
通信协议模块的工作是解析数据,在采集时,它需要把仪器的数据格式,转换为设备因子模式,而在反控时,它需要把设备因子模式的数据,转换为仪器的数据格式。仪器无论使用何种格式的数据,其最终能转为字节流,字节流可以跟链路模块对接。
3.3 数据库模块
数据库模块的工作是比较简单的,定时采样,或根据一定的条件进行采样,把数据拼出SQL语句即可。
3.4 组态模块
组态模块对接的还是设备因子列表(从上一章可知,这一列表是系统的数据核心)。分两条路,一是数据更新,图随着更新,二是点击图中的元件,向外发出命令。
当仪器数据或状态改变时,采集到的设备因子列表发生改变。触发组态图的条件列表发生改变,从而改变图中的显示元素。
当用户点击组态图中的可控元件时,组态图向外输出命令,经协议解析,向仪器发出命令字节流。