Вход

Просмотр полной версии : Запись и чтение RETAIN переменных с панели оператора и MB_TCP_Slave



Sergey_Tr
14.09.2023, 07:40
Добрый день.
Прошу помочь разобраться как реализовать Запись и чтение RETAIN переменных с панели оператора и MB_TCP_Slave:
Задача состоит в том чтобы иметь возможность изменять уставки с СПК110 + также эти же переменные читать / пиcать по MB TCP Slave с верхнего уровня. И все это должно быть RETAIN.

Евгений Кислов
14.09.2023, 07:43
Добрый день.
Прошу помочь разобраться как реализовать Запись и чтение RETAIN переменных с панели оператора и MB_TCP_Slave:
Задача состоит в том чтобы иметь возможность изменять уставки с СПК110 + также эти же переменные читать / пиcать по MB TCP Slave с верхнего уровня. И все это должно быть RETAIN.

Добрый день.
Просто объявите буфер данных, который передаете по указателю на вход pData ФБ MB_TCP_Slave, в области VAR RETAIN.

Sergey_Tr
14.09.2023, 07:53
Добрый день.
Просто объявите буфер данных, который передаете по указателю на вход pData ФБ MB_TCP_Slave, в области VAR RETAIN.




VAR
MB_TcpSlave_ST: OCL.MB_TcpSlave;
END_VAR

VAR_OUTPUT RETAIN
arrayData: ARRAY [0..9] OF WORD;
END_VAR


MB_TcpSlave_ST ( xEnable := TRUE, sIpAddr := '0.0.0.0', uiPort := 502, usiUnitID := 1, pData := ADR(arrayData), szSize := SIZEOF(arrayData) );
REAL_TO_WORD2(rInput := HMI.Filter_Set_1, xSwapBytes := FALSE, wOutput1 => arrayData[1], wOutput2 => arrayData[0]);


Вопрос как к переменную HMI.Filter_Set_1 изменить и верхнего уровня?

Евгений Кислов
14.09.2023, 07:58
Вопрос как к переменную HMI.Filter_Set_1 изменить и верхнего уровня?

В вашем случае лучше объявить не массив вордов, а структуру (и лучше просто в VAR RETAIN, а не VAR_OUTPUT RETAIN).
Посмотрите пример:
https://youtu.be/jPj2v3vAKRw?si=JmKBjWJE_lvEotoZ