首先,要下载一个freemodbus,自己写的modbus协议也可以,但考虑到时间和可扩展性还是选择开源的比较妥当些。这个协议最核心部分我感觉就是对寄存器的读写,当然如果涉及到PLC当然还有继电器等,其他部分已经把接口给你了,然后自己就按照说明去添加就可以。对了,在移植中当时对这个过程
*pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] >> 8 );
*pucRegBuffer++ = ( uint8_t )( usRegHoldingBuf[iRegIndex] & 0xFF );
有点模糊,但在纸上画一下就豁然开朗了。其他的就没有难度了。下面就进入正文:
首先需要改动的部分还主要是
eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs)、
eMBRegHoldingCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNRegs,
eMBRegisterMode eMode)、
eMBRegCoilstCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNCoils,
eMBRegisterMode eMode)、
eMBRegInputCB(UCHAR * pucRegBuffer,USHORT usAddress,USHORT usNDiscrete)
这四个函数,其他部分主要是对portserial.c和porttimer.c这两个文件(相对于你下载的freemodbus-v1.5.0)的改动。而main函数你可以把下载的freemodbus文件中的demo文件下有一个BARE文件,这个文件夹有一个demo.c程序直接把main函数copy过来就大功告成了。。
|