|
|
|
@ -47,6 +47,10 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
|
for (int i = 0; i < DI_TABLE_SIZE; i++) { |
|
|
|
di_table[i].current_state = (r_buffer[i / 8] >> (i % 8)) & 1; |
|
|
|
} |
|
|
|
}else |
|
|
|
{ |
|
|
|
rt_thread_mdelay(500); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 输出 m0256 -> RTU 2256
|
|
|
|
@ -63,15 +67,26 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
|
} |
|
|
|
} |
|
|
|
// 写入 Modbus
|
|
|
|
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) |
|
|
|
{ |
|
|
|
rt_thread_mdelay(500); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
//输入寄存器d0->6000
|
|
|
|
u16 r_regsD[AI_TABLE_SIZE]; |
|
|
|
// 读 Modbus
|
|
|
|
mb_read_regs(hinst, 6000, AI_TABLE_SIZE, r_regsD); |
|
|
|
for (int i = 0; i < AI_TABLE_SIZE; i++) |
|
|
|
int mrd = mb_read_regs(hinst, 6000, AI_TABLE_SIZE, r_regsD); |
|
|
|
if (mrd > 0) |
|
|
|
{ |
|
|
|
ai_table[i].current_Value = r_regsD[i]; |
|
|
|
for (int i = 0; i < AI_TABLE_SIZE; i++) |
|
|
|
{ |
|
|
|
ai_table[i].current_Value = r_regsD[i]; |
|
|
|
} |
|
|
|
}else { |
|
|
|
rt_thread_mdelay(500); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
//输出寄存器d100->6100
|
|
|
|
@ -81,7 +96,12 @@ static void mb_plc_read_regs(mb_inst_t *hinst) |
|
|
|
w_regsD [i] = ao_table[i].current_Value; |
|
|
|
} |
|
|
|
// 写入 Modbus
|
|
|
|
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) |
|
|
|
{ |
|
|
|
rt_thread_mdelay(500); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static void mb_plc_thread(void *args)//线程服务函数
|
|
|
|
|