freemodbus流程解析.doc
2页流程:上电后即执行Mam():{1. 调用mb.c中的亡MBImt(RTU,地址,端II0,波特率,无校验){验证地址是否正确并设置主机地址,设置模式RTU并对函数指针进行映射调用mbitu.c+的eMBRTUImt(地址,端II,波特率,校验){初始化串II,初始化定时器}初始化事件函数}2. 调用mb.c中的eMBEnable(){判断状态为禁止,则调用eMBRTUStaitO{状态设为RX初始化启动串II接收功能使能定时器}状态设为使能}3. 循环调用eMBPoll(){检查状态是否为使能如果有事件发生,则判断事件状态{事件为准备好事件为接收帧事件为处理数据事件为发送帧首次,从机等待串丨I数据包T接收到数据包触发串II中l^r-^xMBRTUReceiveFSM()函数―…T不断接收数据但不保存,不断重置定时器9直到数据接收完后产生3.5T定时器中断代表接收完成T中断函数调用xNIBRTUTnneiT35Expued(void)函数T根据状态RXINIT调用xMBPortEventPost(EV_READY)事件函数加入序列——9关闭定时器,设为RXIDLE,返回主程序一…T主程序poll根据EVREADY空操作取出事件,返回再次接收到串丨1数据包9进入中断函数xMBRTUReceiveFSM()9根据状态RXIDLE数据存入RTUEUF,状态设为RXRCV,启动定时器-刁收到卜•个数据包,存储数据并重置定时器,不断重复直到接收完数据包T收完后产生3.5T定时中断xMBRTUTunerT35ExpiredO9根据RXRCV发送事件EV_FRAME_RECEI\TD,关闭定时器设为RXIDLE,返回主程序pollT根据FRAMERECEIVED调用eMBRTUReceive()处理收到数据的存储指针,然后发送事件EV_EXECUTET然后返回主程序,继续执行poll,T根据EVEXECUTE,提取功能码,并判断功能码确定功能处理函数指针,并调用该函数(T以读单个线圈为例子,调用eMBFuncReadCoils(数据帧,长度),——T检查长度是否正确,正确则处理寄存器地址,处理读取线圈数屋-…T设定初始数据指针和长度加入头,计算所需字节数,调用eMBRegCoilsCB(帧指针,地址,线圈数,读)回调函数——T检查地址是否正确-…T计算位偏移最……刁读线圈调用xMBUtilGetBits()循环读所需位,T按字节读取需要的位,存入regbuf,然后返回-…-T无错后长度増加,返回pollT)如果不是广播命令,则需要响应——T有异常则发送异常,无异常则调用eMBRTUSendQT接收状态为RXIDLE则计算首地址,地址,长度,CRC,发送状态设为TXXMIT,使能串丨I发送功能T串II发送寄存器空产生中断,调用中断函数……9调用xMBRTUTiansniitFSM()函数---T串II依次输出数据,发送完毕后,事件设为EV_FRAME_SENT,禁用串II发送,状态改为TXLDLE——T返回poll,根据FRAMESENT取岀事件清空队列,一个循坏完成。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


