家居控制软件 KNX通讯协议模块 详细设计说明书 V1.00_第1页
家居控制软件 KNX通讯协议模块 详细设计说明书 V1.00_第2页
家居控制软件 KNX通讯协议模块 详细设计说明书 V1.00_第3页
家居控制软件 KNX通讯协议模块 详细设计说明书 V1.00_第4页
家居控制软件 KNX通讯协议模块 详细设计说明书 V1.00_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE家居控制软件KNX通讯协议模块详细设计说明书文件编号保密级别总页数编制

评审记录上述问题修改验证后,由验证后,本文件即可发布。评审人员签字:问题修改验证结果:验证人签字:时间:年月日变更日志编号版本修改内容修改人修改日期12345

目录1 引言 11.1编写目的 11.2背景 11.3定义 11.4参考资料 12 系统设计总体说明 22.1系统结构 23 模块详细设计 33.1外部接口模块 33.1.1功能描述 33.1.2性能要求 33.1.3接口定义 33.1.4类设计说明 43.1.5程序流程 63.1.6测试要点 63.2UDP通讯模块 63.2.1功能描述 63.2.2性能要求 63.2.3接口定义 63.2.4类设计说明 63.2.5程序流程 83.2.6测试要点 83.3KNX核心处理模块 83.3.1功能描述 83.3.2性能要求 93.3.3接口定义 93.3.4类设计说明 93.3.5程序流程 103.3.6测试要点 113.4数据类型处理模块 123.4.1功能描述 123.4.2性能要求 123.4.3接口定义 123.4.4类设计说明 123.4.5程序流程 123.4.6测试要点 123.5异常类模块 123.5.1功能描述 123.5.2性能要求 133.5.3接口定义 133.5.4类设计说明 133.5.5程序流程 143.5.6测试要点 14PAGE10引言1.1编写目的本文档是对家居控制软件通讯协议模块(以下称为通讯协议模块)的要求进行详细分析和讨论后得出的详细设计说明书,旨在明确软件对通讯协议模块的需求,并对模块的具体实施进行详细的计划、安排和设计。通过本详细设计说明书,可以了解到通讯协议模块的总体设计、各模块以及模块之间内部接口的详细设计。借助该文档,可指导通讯协议模块的开发人员开始软件的编码工作。本文档面向的读者是:家居控制软件项目开发负责人、评审人员。1.2背景模块名称:家居控制软件通讯协议模块根据家居控制软件(简称为软件)的开发需求,通讯协议模块主要用于实现软件与EIB/IP网关之间的通讯,数据的请求和接收处理,数据类型的转换等功能。该模块主要为的UI模块提供操作接口,以满足UI模块所需要实现的数据通讯和处理需求。该模块功能的实现,使用户能方便的对EIB总线上的设备进行相应的读、写等相关操作,实现总线设备的自动化控制,从而达到家居智能化控制的目的。1.3定义下表列出本报告中专门术语的定义、英文缩写词的原词组和意义、项目组内达成一致意见的专用词汇,同时继承全部的先前过程中定义过的词汇。词汇名称词汇含义备注1.4参考资料编号资料名称说明1《家居控制软件项目立项书》2《家居控制软件项目计划书》3《家居控制软件需求规格说明书》4《家居控制软件通讯协议模块概要设计说明书》系统设计总体说明2.1系统结构根据对通讯协议模块功能的分析,该模块划分为以下几个子功能模块,其类图如图2-1所示:外部接口模块:主要包括向模块外部提供的接口,以及需要外部调用模块实现的回调方法。UDP通讯模块:主要实现UDP报文收发逻辑处理。KNX核心处理模块:主要实现KNX帧的处理,达到对EIB总线设备数据的读写操作。数据类型处理模块:主要实现各种不同的KNX数据类型与字节数组之间的相互转换。 图2-1通讯协议模块类图模块详细设计3.1外部接口模块3.1.1功能描述主要包括向模块外部提供的接口,以及需要外部调用模块实现的回调方法。该模块主要为UI模块提供通讯接口服务,以致UI模块可以很方便的操作EIB总线设备。3.1.2性能要求无。3.1.3接口定义 本模块定义的回调方法,分别完成本模块对逻辑组数据类型的请求、调用模块(即UI模块)逻辑组数据的读/写响应等,这些方法均由通讯协议模块的调用者-UI模块来实现,它们分别是: typedefint(CALLBACK*GetDPT)(intnMainAddr,intnMidAddr,intnGrpAddr typedefvoid(CALLBACK*OnReadResponse)(GroupDatagrpData,intnStatus); typedefvoid(CALLBACK*OnWriteResponse)(intnMainAddr,intnMidAddr,intnGrpAddr,intnResult); typedefvoid(CALLBACK*OnSearchResponse)(char*serverIp,intserverPort,intnStatus);typedefvoid(CALLBACK*OnDisconnect)();在通讯协议模块内部,为其调用者提供了以下接口,分别是设置回调方法指针、初始化UDP参数、处理逻辑组数据的读/写请求等,分别是:voidSetCallBacks(GetDPT*pGetDPT,OnReadResponse*pReadResponse,OnWriteResponse*pWriteResponse,OnSearchResponse*pSearchResponse,OnDisconnect*pDisconnect);intUDPSocketInit(char*serverIp,intserverPort);intReadGrpVal(intnMainAddr,intnMidAddr,intnGrpAddr);intWriteGrpVal(GroupDatagrpData);UI模块与KNX协议模块接口的时序图如图3-1所示。3.1.4类设计说明类名CKNXKernel主要属性说明 GetDPT*m_pGetDPT;//回调方法的指针(获取逻辑组数据类型) OnReadResponse*m_pReadResponse;//回调方法的指针(逻辑组数据读响应处理) OnWriteResponse*m_pWriteResponse;//回调方法的指针(逻辑组数据写响应处理) OnSearchResponse*m_pSearchResponse;//回调方法的指针(自发现响应处理) OnDisconnect*m_pDisconnect;//回调方法的指针(断开连接的响应处理)主要方法说明 voidSetCallBacks(GetDPT*pGetDPT,OnReadResponse*pReadResponse,OnWriteResponse *pWriteResponse,OnSearchResponse*pSearchResponse,OnDisconnect*pDisconnect);//设置回调函数指针 intUDPSocketInit(char*serverIp,intserverPort);//初始化UDPsocket intReadGrpVal(intnMainAddr,intnMidAddr,intnGrpAddr);//读逻辑组值 intWriteGrpVal(GroupDatagrpData);//写逻辑组值图3-1UI与KNX协议接口模块时序图3.1.5程序流程略。3.1.6测试要点本模块为接口模块,其测试要点主要是检查与外部模块之间的接口方法是否能正常的相互调用。3.2UDP通讯模块3.2.1功能描述实现通讯协议模块与IP网关之间的UDP通讯,以UDP携带KNX帧的方式实现KNX请求与响应等相关功能帧的收发。其实现的功能包括组播和无连接点对点的通讯,它们各自的socket、接收线程的建立,以及线程的结束和socket的关闭。UDP重发考虑:考虑不同KNX服务需要不同的重发机制,为减小UDP模块与KNX核心处理模块的藕合度,重发机制主要由KNX核心处理模块考虑,UDP模块仅实现循环3次重发而不做额外的延时。3.2.2性能要求无。3.2.3接口定义UDP通讯模块与KNX核心处理模块之间的接口类如下所示:classCKNXUdpIface{ public: virtualintExecRecvMsgAction(BYTE*pRecvBuf)=0;};KNX协议模块与UDP通讯模块接口的操作时序如图3-2所示。3.2.4类设计说明类名CUDPManager主要属性说明CKNXUdpIface*m_pKnxPtr;charm_serverIp[32];intm_serverPort;主要方法说明intUDPInit(char*serverIp,intserverPort);//UDP通讯初始化voidSetKnxPtr(CKNXUdpIface*pInterClassPtr);//设置接口类对象指针intUDPSend(BYTE*pSendBuf);//发送UDP报文intUDPRecv(BYTE*pRecvBuf);//接收UDP报文intUDPClose();//关闭UDP通讯图3-2KNX协议模块与UDP通讯模块接口时序图3.2.5程序流程UDP通讯模块主要包括UDP报文的收发逻辑,其中,发送报文功能由UDPSend()方法实现,由KNXKernel模块调用触发;接收报文功能由UDPRecv()方法实现,通讯初始化完成时启动一循环逻辑不断调用该方法接收UDP报文,接收到UDP报文后调用相应的CKNXUdpIface接口类方法,做出相应的处理。UDP通讯模块基本流程如图3-1所示:图3-3UDP通讯模块流程图3.2.6测试要点1.UDP通讯模块是否能与KNX核心处理模块实现正确的相互调用;2.发送正确格式的UDP报文,是否能正常发出并接收到来自IP网关的回复;3.是否能被动接收到来自IP网关的主动UDP报文。3.3KNX核心处理模块3.3.1功能描述主要功能是对KNX帧进行组装、拆分和分析。即,对其调用者(UI模块)的请求组装KNX帧,通过UDP模块发送,并接收UDP回复报文进行处理和分析,调用UI回调方法执行相应的动作。考虑要点:(1)组播请求(用于发现服务):不重发,超时时间为3秒;(2)控制点请求:连接请求:运行于主线程,阻塞,不重发,超时时间10s;连接状态请求:单独线程,每隔60秒发送一次,每次请求超时时间为10s,连接两次超时则断开连接通道。断开连接:运行于主线程,阻塞,不重发,超时时间1s,超时未收到回复则强行断开。(3)数据点请求:用于数据请求服务。偿试发送两次,失败则断开通道连接。3.3.2性能要求无。3.3.3接口定义KNX核心处理模块与UDP通讯模块的公共接口类CKNXUdpIface类的定义请参见本文3.2.3节。KNX核心处理模块相应的类CKNXKernel需要继承于该公共接口类,并实现类中的ExecRecvMsgAction()方法。该方法是UDP通讯模块回应KNX核心处理模块的接口,CKNXKernel类中ExecRecvMsgAction()方法实现KNX帧的解析工作。对KNX帧进行解析后,需要调用UI模块的Response回调方法,以将KNX回复结果反映至UI模块,以执行相应动作。3.3.4类设计说明关于CKNXKernel与UI模块接口相关的部分请参见本文3.1.4节。此处仅对UDP通讯模块回应KNX核心处理模块的接口ExecRecvMsgAction()方法做相应的说明。类名CKNXKernel主要属性说明无主要方法说明intExecRecvMsgAction(BYTE*pRecvBuf);//对缓冲区pRecvBuf进行KNX帧的解析3.3.5程序流程图3-4(a)KNX核心处理模块帧发送流程图图3-4(a)KNX核心处理模块帧解析流程图3.3.6测试要点1.UDP模块对CKNXUdpIface接口方法的调用;2.能否组装正确的KNX帧;3.能否正确处理回复的KNX帧。3.4数据类型处理模块3.4.1功能描述实现BYTE字节数组与KNX各种不同数据类型(主要是十七种大数据类型)之间的转换,包括:当KNX核心处理模块接到写数据请求时,将调用数据处理模块CDPTManager类的DPT2Byte(),将某一KNX数据类型数据转换为字节数组,并填入KNX帧中,作为一个写逻辑组值请求KNX帧发出;当KNX核心处理模块接到来自UDP模块的读逻辑组值回应时(由IP网关发出,UDP通讯模块接收),在KNX核心处理模解析KNX帧时,它将调用数据处理模块CDPTManager类的Byte2DPT()方法,将BYTE字节数组所携带的值转换为相应的KNX数据类型值。3.4.2性能要求无。3.4.3接口定义无。3.4.4类设计说明类名CDPTManager主要属性说明无主要方法说明intGetVarTypeFromDPT(intnDPT);//从KNX数据类型(17种)获取程序变量类型(5种)BYTE*DPT2Byte(GroupDatagrpData,BYTE*pBuf);//将KNX数据转为BYTE字节数组intByte2DPT(BYTE*pBuf,GroupData&grpData);//将BYTE字节数组转为KNX数据类型值3.4.5程序流程略。3.4.6测试要点1.在KNX核心处理模块中能否正确调用该类的方法;2.能否正确地将KNX数据转为BYTE字节数组;3.能否正确地将BYTE字节数组转为KNX数据类型值。3.5异常类模块3.5.1功能描述为KNX协议模块,以及所有使用KNX协议模块的模块,提供KNX错误描述。由一个虚基类CKNXException派生多个异常子类,每次出现的异常是其中的一种,对应一个子类。其它模块可通过try…catch…结构来捕获,其使用方法的源码示例在《家居控制软件KNX协议模块概要设计说明书》已给出。3.5.2性能要求无。3.5.3接口定义 typedefenum { KNX_ERR_UNKNOWN=0, KNX_ERR_INPUT, KNX_ERR_NETWORK, KNX_ERR_UDP, KNX_ERR_CALLBACK, KNX_ERR_DPTCONVERTION }KNX_EXCEPTION_ID; classCKNXException { public: virtualKNX_EXCEPTION_IDGetExceptionId()=0};3.5.4类设计说明由CKNXException派生出的异常类有CKNXUnknownException、CKNXInputException、CKNXNetworkException、CKNXUdpExceptionCKNXCallbackExcepti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论