Browse Source

plc连接逻辑修改

master
忱 沈 3 days ago
parent
commit
cf65689558
  1. 2
      .settings/language.settings.xml
  2. 30
      applications/PLC_link.c

2
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-1141698828038963161" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1336382746191491235" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

30
applications/PLC_link.c

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

Loading…
Cancel
Save