首页 > 编程知识 正文

485和modbus的区别(移植modbus通讯协议232转换485)

时间:2023-05-06 01:01:10 阅读:124304 作者:2566

232个modbus协议对于此位485,必须注意:

1 .端口串行. c的基本配置函数

2 .中断中的配置函数

3 .最重要的一点,mbrtu.c中((这是重点) ) ) ) )。

(混合(ucharucslaveaddress,const UCHAR * pucFrame,USHORT usLength () ) ) ) ) ) 6550

{

emb错误代码estatus=MB _ en oerr;

USHORT usCRC16;

ENTER_CRITICAL_SECTION (;/* checkifthereceiverisstillinidlestate.ifnotwewhereto * slowwithprocessingthereceivedframeandthemastersentanother * frameonthenetwork.wehavetoabortsendingtheframe.*/if (ercvstate==state _ rx _ idle (/* firstbytebeforethemodbus us usus/* nowcopythemodbus-pduintothemodbus-serial-line-PDU.*/pucsndbuffercur [ MB _ ser _ PDU _ addr _ off ]=u u u u u u u u ucsll/* calculate CRC 16 checksumformodbus-serial-line-PDU.*/us CRC 16=usmbcrc 16 ((uchar * ) pucSndBufferCur,pucsndbufffffer ucrtubuf [ ussndbuffercount ]=(uchar ) usCRC16 8);/* activatethetransmitter.*/esnd state=state _ tx _ xmit; //485通信和2332通信的区别,必须追加。 否则通信失败.......... vmbportserialenable (假,真); //开始初次发送,使其能够进入发送完成中断xmbportserialputbyte () char ) *pucSndBufferCur。 pucSndBufferCur;/* nextbyteinsendbuffer.*/ussndbuffercount-- -; //485通信和2332通信的区别,必须追加。 否则通信失败.......... vmbportserialenable (假,真); }else{ eStatus=MB_EIO; }EXIT_CRITICAL_SECTION (; 返回状态; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。