|
|
@ -38,6 +38,7 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
{ |
|
|
{ |
|
|
if (mb_connect(hinst) < 0)//连接失败, 延时返回
|
|
|
if (mb_connect(hinst) < 0)//连接失败, 延时返回
|
|
|
{ |
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 0; |
|
|
LOG_E("modbus connect fail."); |
|
|
LOG_E("modbus connect fail."); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
@ -47,12 +48,15 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
//读取 Modbus bits
|
|
|
//读取 Modbus bits
|
|
|
int mrx = mb_read_bits(hinst, 2000, DI_TABLE_SIZE, r_buffer); |
|
|
int mrx = mb_read_bits(hinst, 2000, DI_TABLE_SIZE, r_buffer); |
|
|
if (mrx > 0) |
|
|
if (mrx > 0) |
|
|
{ //解包到数据表
|
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 1; |
|
|
|
|
|
//解包到数据表
|
|
|
for (int i = 0; i < DI_TABLE_SIZE; i++) { |
|
|
for (int i = 0; i < DI_TABLE_SIZE; i++) { |
|
|
di_table[i].current_state = (r_buffer[i / 8] >> (i % 8)) & 1; |
|
|
di_table[i].current_state = (r_buffer[i / 8] >> (i % 8)) & 1; |
|
|
} |
|
|
} |
|
|
}else |
|
|
}else |
|
|
{ |
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 0; |
|
|
rt_thread_mdelay(500); |
|
|
rt_thread_mdelay(500); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -73,8 +77,12 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
int mwy = mb_write_bits(hinst, 2256, DO_TABLE_SIZE, w_buffer); |
|
|
int mwy = mb_write_bits(hinst, 2256, DO_TABLE_SIZE, w_buffer); |
|
|
if (mwy ==0) |
|
|
if (mwy ==0) |
|
|
{ |
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 0; |
|
|
rt_thread_mdelay(500); |
|
|
rt_thread_mdelay(500); |
|
|
} |
|
|
} |
|
|
|
|
|
else{ |
|
|
|
|
|
PLCLINK_OK = 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//输入寄存器d0->6000
|
|
|
//输入寄存器d0->6000
|
|
|
//u16 r_regsD[AI_TABLE_SIZE];
|
|
|
//u16 r_regsD[AI_TABLE_SIZE];
|
|
|
@ -82,11 +90,13 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
int mrd = mb_read_regs(hinst, 6000, AI_TABLE_SIZE, r_regsD); |
|
|
int mrd = mb_read_regs(hinst, 6000, AI_TABLE_SIZE, r_regsD); |
|
|
if (mrd > 0) |
|
|
if (mrd > 0) |
|
|
{ |
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 1; |
|
|
for (int i = 0; i < AI_TABLE_SIZE; i++) |
|
|
for (int i = 0; i < AI_TABLE_SIZE; i++) |
|
|
{ |
|
|
{ |
|
|
ai_table[i].current_Value = r_regsD[i]; |
|
|
ai_table[i].current_Value = r_regsD[i]; |
|
|
} |
|
|
} |
|
|
}else { |
|
|
}else { |
|
|
|
|
|
PLCLINK_OK = 0; |
|
|
rt_thread_mdelay(500); |
|
|
rt_thread_mdelay(500); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -100,8 +110,12 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
int mwd = mb_write_regs(hinst, 6100, AO_TABLE_SIZE, w_regsD); |
|
|
int mwd = mb_write_regs(hinst, 6100, AO_TABLE_SIZE, w_regsD); |
|
|
if (mwd == 0) |
|
|
if (mwd == 0) |
|
|
{ |
|
|
{ |
|
|
|
|
|
PLCLINK_OK = 0; |
|
|
rt_thread_mdelay(500); |
|
|
rt_thread_mdelay(500); |
|
|
} |
|
|
} |
|
|
|
|
|
else{ |
|
|
|
|
|
PLCLINK_OK = 1; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
extern struct rt_memheap sram_DTCMRAM,sdram_heap; |
|
|
extern struct rt_memheap sram_DTCMRAM,sdram_heap; |
|
|
|