CDM-570L远控软件的设计与实现
2013-09-17王怀周杨思祥贾跃伟
方 华,王怀周,杨思祥,续 欣,贾跃伟
(1.解放军理工大学通信工程学院,江苏南京210007;2.兰州军区68036部队工程办,陕西西安710061)
0 引言
Comtech公司提供的各种型号的卫星调制解调器在全球范围内的卫星链路中得到了广泛的应用。其中CDM-570L非常适合于优化卫星通信链路设计,其设计满足低成本终端的需求,为传统的上/下变频提供了 70/140MHz的接口,提供了 EIA-530/442、V.35、RS-485、RS-232、G.703、T1/E1 等接口。具有如下特征:快速捕获解调、可变调制解调方式、数据速率范围广、具有多种前向纠错方式等,可以从前面板或通过远程监控端口来配置和监控调制解调器[1]。
1 远控需求
从前面板进行配置和监控存在如下不足:一是由于设备本身的显示屏很小,只能通过多层界面进行操作,繁琐不直观,不利于快速配置;二是只能一对一进行配置,如果有多台设备,重复操作很多且容易出错;三是不能嵌入到自己设计的卫星通信系统。例如在自主设计管理的单路单载波/按需分配(SCPC/DAMA)卫星通信系统[2]中要从单纯的窄带业务扩展到支持宽带业务,在不改变原有调制解调程序的基础上,一种简单可行的方案就是在系统中加入CDM-570L设备。由于是按需分配,因此发频、收频等一系列参数需要动态配置,这显然是无法从面板上进行操作的。基于以上原因,亟需对CDM-570L进行远程控制,通过远控软件完成所有的配置和监控功能。
CDM-570L提供了多种远控的方式,可以基于RS-485接口或者RS-232接口,还可以基于网络接口。其中基于485接口可以实现一对多的远控,232接口只能支持一对一远控,但这两者的通信协议相同,仅仅地址字段不同。基于网络接口提供了标准的简单网络管理(SNMP)协议接口,因此基于网络接口的远控软件可以使用开源的Agent++等类似软件架构进行开发。文中主要讨论基于RS-485或RS-232接口的远控软件的设计与实现。
2 接口协议
CDM-570L基于RS-485或RS-232接口的通信协议如图1所示。从远控软件发出的命令必须满足该格式,从CDM-570L返回的数据也遵循该格式。双方遵循如下约定:
图1 CDM-570L远控协议Fig.1 CDM-570L remote-control protocol
1)帧开始,一字节,表示传输方向:
‘<’表示控制端发往CDM-570L;
‘>’表示CDM-570L发往控制端。
2)目地地址,由4个字节表示。
如果使用RS-232接口地址固定为‘0000’。注意不是字符串‘‘0000”,不包含最后的‘ ’。下文中用‘xx’的记号来表示多个字符,强调不是字符串。
如果使用RS-485接口,则需要填写具体的设备地址。该设备485的地址需首先通过面板进行设置,远控软件发往其命令的地址必须和设置的地址一致。
3)分隔符,一个字节。固定为‘/’。
4)指令字,三个字节,表示不同的指令类型。
例如‘TFQ’表示发送频率,‘RFQ’表示接收频率,‘RMD’表示接收解调方式等等。CDM-570L能配置和监控的参数非常多,因此对应的指令字有百余个。
5)指令限定符,一个字节,通常为‘=’、‘?’。
远控软件发的命令若为‘=’表示设置操作,‘?’表示查询操作;CDM-570L返回时通常为‘=’,表示设置或查询成功,为其它字符时说明出错。
6)可选参数,若干字节。
有的命令带参数则有该字段,具体参数的字节数根据不同指令字不同。但一旦指令字确定了则可选参数字节数就定了。例如远控软件要设置发送频率,指令字为‘TFQ’,指令限定符为‘=’,则可选参数形式为‘xxxx.xxxx’,必须是9字节。如要设置为980.12MHz,参数必须填写为‘0980.1200’。
7)帧结束符,一个或两个字节。控制端到设备为{CR},设备到控制端为{CR}{LF}。
3 远控软件设计
由以上交互协议可以看出远控软件的本质是发出一些命令,期待CDM-570L回应符合协议的信息,基本上属于一问一答的形式。对于这一类问题最常见的软件结构是对接收到的数据根据指令字和指令限定符分别进行处理,由于指令字是三个字符,一般情况下需要用某个函数将其转为整数,然后用两层的switch…case结构进行分别处理。由于指令字的个数非常多,因此这种结构必然非常臃肿,而且改动起来非常困难。比如在现有的基础上需要增加一条命令,必然要改动原有已经写好的程序,不能做到对修改封闭而对扩展开放。
传统的这种解决思路其实是典型的面向过程的设计方法,一般是先划分成功能模块,再对模块进行细分,直到获得最小的设计单元——函数为止,对每个函数还要列出输入、输出、处理步骤等[3]。最终得到是系统的结构图、流程图等,如图2和图3所示。
图2 传统远控软件结构Fig.2 Structure of traditional remote-control software
对于一些功能确定的场合,如仅仅只是要求能设置、查询CDM-570L的发频、收频、调制解调方式、编码方式这些功能,这种软件设计架构和方法还是管用的。但在实际的应用中,远控软件的要求可能会发生变化,例如需要监控温度,增加温度告警功能,这就需要考虑到软件的可复用、可扩展和可维护性。此时,面向过程的设计应对起来就比较困难了,因为它必然涉及到修改原有的代码和架构。
针对CDM-570L远控软件可能的功能扩展、指令字繁多,需要多人合作编写,需要软件可复用性强、且要易于维护的特点,必须采用新的设计思路。
图3 传统软控软件流程Fig.3 Diagram of traditional remote-control software
采用面向对象的方法,参考成熟的设计模式,设计了全新的远控软件架构。设计模式中最重要的面向对象设计原则和设计理念有[3]:
1)设计模式的最根本意图是适应需求变化;
2)针对接口编程,而不要针对实现编程;
3)优先使用聚合,而不是继承;
4)每一层绝不使用上一层提供的服务,即层与层之间不能造成双向依赖或循环引用。
在以上原则指导下重新对CDM-570L的远控软件进行了设计。首先考虑的可扩展功能是能跨操作系统运行,虽然目前远控软件运行在Linux操作系统上,但今后很有可能要求在 Windows或 vx-Works操作系统上也能运行。因此必须将和操作系统相关的部分进行分离抽象,提供统一的接口,这就是模板模式的典型应用,结合工厂模式还能进一步提高抽象层次,使得交互接口不一定是串口。例如对于串口的操作,不同操作系统调用函数不同,首先定义统一的接口函数,然后不同操作系统派生不同的具体实例,如图4所示。其它和操作系统相关的部分,都可以按照这种方法进行设计。
其次考虑的可扩展功能是可能会增加某些远控功能。仍以前述需要增加温度告警功能为例,要求做到尽量少修改原有代码。首先抽象出命令类,然后派生出具体的命令实例类,这样已经实现的部分就相对固定了。需要增加温度告警功能,只需要增加温度监控命令的派生类即可,原有架构保持不变。这就是对修改封闭而对扩展开放,如图5所示。
图4 跨操作系统移植代码设计Fig.4 Code design for cross-operating system transplantation
图5 对修改封闭而对扩展开放设计Fig.5 Code design based on the open-closed principle
整个设计的架构如图6所示。远控主体类聚合了命令接口类、数据交互工厂类、协议处理类、线程类等。命令类派生出各种控制命令,处理该指令码的发送和接收;数据交互工厂类生产出具体的通信接口实体,如RS-232串口;协议处理类处理本通信协议,从通信接口对象接收的数据经过协议类处理后就是符合协议的帧;线程类也是操作系统无关的接口类,派生类可以生成不同的线程。在该架构下功能扩展方便,需移植到不同操作系统运行时,只需派生出操作系统下的具体接口再重新编译一下即可运行;增加控制功能方便快捷,基本无需改变原有程序代码。
图6 基于面向对象的远控软件结构Fig.6 Object-orientation-based software structure
4 结语
上述的设计方案和软件结构,已经在实际的系统中得以实现,在原有窄带Ku卫星通信系统上快速增加了宽带业务支持。此外,程序还编译运行在了Linux和Windows操作系统上,目前正往vxWorks系统上移植,移植工作主要集中在操作系统相关类的派生,方便快捷,充分说明该软件可复用性、可扩展性和可维护性好,健壮性强。
[1] Comtech EF Data Corporation.CDM-570L Satellite Model Installation and Operation Manual[M].CA:Comtech EF Data Corporation ,2006:1-258.
[2] 方华,续欣,丁科,等.SCPC/DAMA卫星地球站软件设计与实现[J].通信技术,2010,43(12):26-28.FANG Hua,XU Xin,DING Ke,et al.Software Design and Implementation of SCPC/DAMA Satellite Station[J].Communications Technology,2010,43(12):26-28.
[3] 王咏武,王咏刚.道法自然-面向对象实践指南[M].北京:电子工业出版社,2005:40-95.WANG Yong-wu,WANG Yong-gang.Imitation of Nature-Object-oriented Practice Guidelines[M].Bei-Jing:Electronic Industry Press,2005:40-95.