STC51单片机与组态王通讯测试
void MB_ReadInputReg_04H(uint8_t _addr, uint16_t _reg, uint16_t _num)
{
uint16_t TxCount = 0;
uint16_t crc = 0;
RS485_TX_BUF[TxCount++] = _addr; /* 从站地址 */
RS485_TX_BUF[TxCount++] = 0x04; /* 功能码 */
RS485_TX_BUF[TxCount++] = _reg >> 8; /* 寄存器地址 高字节*/
RS485_TX_BUF[TxCount++] = _reg; /* 寄存器地址 低字节*/
RS485_TX_BUF[TxCount++] = _num >> 8; /* 寄存器个数 高字节*/
RS485_TX_BUF[TxCount++] = _num; /* 寄存器个数 低字节*/
crc = MB_CRC16((uint8_t *)&RS485_TX_BUF,TxCount); /* CRC校验 */
RS485_TX_BUF[TxCount++] = crc; /* crc 低字节 */
RS485_TX_BUF[TxCount++] = crc>>8; /* crc 高字节 */
RS485_Send_Data((uint8_t *)&RS485_TX_BUF,TxCount);
}
b. 打开"main.c", 根据实际须要修改: 波特率, 校验 和站号
void SYSInit(void)
{
TimesMsinitInt(); //Ms定时器初始化,用作产生毫秒级精准延时
//先写相应的宏,取得硬件参数。
//以下语句使用固定值:19200,无校验,站号为1(要修改确定好串口带哪一个)
UartInit(19200,NONE_PARITY); //串口初始化(要修改确定好串口带哪一个)
ModbusInit(1,StartSend); //Modbus串口初始化(要确定好站号)
}
static uint8_t MB_RSP_01H(uint16_t _TxCount,uint16_t _AddrOffset ,uint16_t _CoilNum )
{
01 从机地址
01 功能码
02 返回字节数
00 数据
9C OC CRC校验低字节
OC CRC校验高字节
从机应答:1代表ON,0代表OFF(使用LED的状态来代表)
若返回的线圈数不为8的倍数,则在最后一个字节中剩余位补0
例子1:
主机发送: 01 01 00 02 00 08 9C OC --- 查询002号线圈的状态
返回: 01 01 01 01 90 48 --- 返回值为0x01
例子2:
主机发送: 01 01 00 01 00 10 6C 06 --- 查询001开始的16个线圈状态
返回: 01 01 02 FF FF B8 4C --- 查询到两个字节数据为0XFFFF
e. 打开"Modbus_CFG.h", 根据实际须要配置功能码, 以及各功能码的起始地址和数量
//通过宏定义开关,定制使用的功能码(把对应的值改为非0值):
#define MODBUS_FUN_CODE_01 (1)
#define MODBUS_FUN_CODE_02 (1)
#define MODBUS_FUN_CODE_03 (1)
#define MODBUS_FUN_CODE_04 (1)
#define MODBUS_FUN_CODE_05 (1)
#define MODBUS_FUN_CODE_06 (1)
//输入寄存器定义 -- 功能码(04)
#define RegInput_Start 0 //输入寄存器起始地址
#define RegInput_Sum 8 //输入寄存器数量
//保持寄存器定义 -- 功能码(03,06,16)
#define RegHold_Start 0 //保持寄存器起始地址
#define RegHold_Sum 8 //保持寄存器数量
//开关量输入定义 -- 功能码(02)
#define SwIn_Start 0 //起始地址
#define SwIn_Sum 16 //数量
//开关量输出(线圈)定义 -- 功能码(01,05,0F)
#define SwOut_Start 0 //开关量输出起始地址
#define SwOut_Sum 16 //线圈数量







![[SLG/中文/PC+安卓] 库拉拉酱逃不掉了 [92MB]](https://pic.songma.com/upload/215908/1750557333-215908/0391944001750557416tp215908-1.jpg)
















![[ACT/中文/PC+安卓] 扶她山谷/Futaken Valley v0.040 【308M】](https://pic.songma.com/upload/69459/1692094178-69459/0402205001750378602tp69459-1.jpg)











更多店铺数据




手机访问领取大礼包