Передать значение двух текстовых полей из одного значения переменной

У меня энкодер подключен от 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
Другие вопросы по тегам