网站大量收购闲置独家精品文档,联系QQ:2885784924

MODBUS RTU简例.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MODBUS RTU简例

MODBUS RTU简例 #include DSP281x_Device.h #include DSP281x_Examples.h? #include ModbusRTU.h #include DSP_CRC.h //------------MODBUS FUNCODE----------------------- #define READ_N_DO 01 #define READ_N_DI 02 #define READ_AO??? 03 #define READ_AI??? 04 #define SET_1_DO?? 05 #define SET_1_AO?? 06 #define SET_N_DO?? 15 #define SET_N_AO?? 16 //定义错误码 #define ERROR_FUNCODE??? 1??? //错误功能码 #define ERROR_ADDR??? ??? 2??? //错误地址 #define ERROR_DATA??? ??? 3??? //错误数据 #define ERROR_FAILURE??? 4??? //从机故障 //------------UART_MODULE.Status--------------- #define IDLE_WAIT??? ??? 0x00??????? // 空闲态,等待起始位 #define RECE_START????? 0x01??????? // 收到起始位,等待结束位 #define RECE_END??????? 0x02??????? // 收到结束位,等待发送 #define SEND_START????? 0x03??????? // 发送起始位 #define SEND_END??????? 0x04??????? // 发送完毕 //--------------------------------------------- volatile struct MODBUS_MODULE ModbusModule; //--------------------------------------------- Uint16 RTUFrameAnalyse(Uint16 *dest_p); void ModbusDefaultInitSci(); void ConstructFrame_RTUReadReg( Uint16 type,Uint16 start_address,Uint16 lenth); void ConstructFrame_RTUSetNReg( Uint16 type,Uint16 *com_buf,Uint16 start_address,Uint16 lenth); void ReadSci(volatile Uint16 * buf ,volatile Uint16 * inx); //--------------------------------------------- //--------------------------------------------- void ConfigureModbus (Uint16 ID,Uint16 SCI) { Uint16 i; ??? for( i = 0;i 256 ;i++ ) ??? { ??????? ModbusModule.Buf[i] = 0; ??? } ??? ModbusModule.TxLen = 0; ??? ModbusModule.RxLen = 0; ??? ModbusModule.TimeoutReg =0; //现在开始只作为从站使用 ModbusModule.ID = ID; ModbusModule.Status = IDLE_WAIT; ModbusModule.SCI = SCI; ModbusDefaultInitSci();? } //--------------------------------------------- //复位SCI_A void ModbusDefaultInitSci() { ??? EALLOW; ??? GpioMuxRegs.GPGMUX.all |= 0x0030; ??? EDIS; ???? ??? EALLOW; ??? GpioMuxRegs.GPFMUX.all |= 0x0030; ??? EDIS; ??? if(ModbusModule.SCI==0) ??? { ??? ?? SciaRegs.SCICCR.all = 0x07; ??? ???? ??? ?? SciaRegs.SCICTL1.all = 0x03; ???

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档