Передать значение двух текстовых полей из одного значения переменной
У меня энкодер подключен от Siemens PLC с блоком данных "DB1.DBD56".
Моя проблема в том, что два текстовых поля имеют одинаковый результат или значение.
Сценарий:
Читать до 1 секунды и читать через 1 секунду
Я хочу, чтобы результат был таким:
[Для справки](https://stackru.com/images/be9edd2920a7d2b27986608555622df7d8ae992e.png)
[Лестница ПЛК](https://stackru.com/images/bc59ad19bb53e60cb7078492cf79ed590b68aa07.png)
#region EVENT TO START READING THE ENCODER
private void timer_anvilState_Tick(object sender, EventArgs e)
{
try
{
Edata_convertion();
read_lastweld_result();
bool anvilState = (bool)plc_s7_1200.Read("DB1.DBX68.4");
if (plc_s7_1200.IsConnected)
{
if (anvilState == true)
{
timer_OneCycleProcess.Start(); //STATE MACHINE TIMER
}
else
{
timer_OneCycleProcess.Stop();
command = "IDLE";
}
}
}
catch (Exception ex)
{
MessageBox.Show("Please check between PC and PLC connection " + "\n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#region READ BEFORE
public void Read_Before()
{
if (plc_s7_1200.IsConnected)
{
bool anvilState = (bool)plc_s7_1200.Read("DB1.DBX68.4");
if (anvilState == true)
{
string Edata = string.Format("{0:0.0}", convertTomm);
txtbefore.Text = Edata;
}
}
}
#endregion
#region READ AFTER
public void Read_After()
{
bool gen_US_on = (bool)plc_s7_1200.Read("DB1.DBX78.2");
if (gen_US_on == true)
{
string Edata = string.Format("{0:0.0}", convertTomm);
txtafterWeld.Text = Edata;
}
}
#endregion
1 ответ
Вот мое решение.
Только пересмотрел лестницу ПЛК, как указано в моем ответе в разделе комментариев.
https://stackru.com/images/297aaef2e26acfada7332385793e63948647b2eb.png
Моя программа на С# ничего не меняет.
Делюсь своим базовым кодом конечного автомата
#region ONE CYCLE PROCESS
private void timer_OneCycleProcess_Tick(object sender, EventArgs e)
{
switch (command)
{
case "IDLE":
command = "BEFORE";
break;
case "BEFORE":
before();
command = "AFTER";
break;
case "AFTER":
after();
prev_result();
read_maintenanceCounter();
read_outputCounter();
command = "SAVE";
break;
case "SAVE":
command = "STOP";
save();
save_history();
break;
case "STOP":
timer_OneCycleProcess.Stop();
plc_s7_1200.Write("DB1.DBX38.0", 0);
break;
default:
break;
}
}
#endregion