PDA

Просмотр полной версии : Библиотека OwenCommunication. Данные для блока MB_TcpSlave



zaychenko
07.02.2023, 11:11
Евгений, добрый день!

Подскажите, пожалуйста, как корректно передавать данные с помощью блока MB_TcpSlave, где часть из них должна быть RETAIN, а часть не должна быть RETAIN.

Например, сейчас такая структура DATA_HVS, состоящая из вложенных структур:

TYPE DATA_HVS :
STRUCT
Input: Input_HVS; // Оперативные данные - не энергонезависимые
Output: Output_HVS; // Оперативные данные - не энергонезависимые
TimeProcess : TimeProcess_HVS; // Оперативные данные - не энергонезависимые
Parameters: Parametrs_HVS; // Энергонезависимые данные (уставки и т.д.)
END_STRUCT
END_TYPE

Необходимо, чтобы Parameters была энергонезависимой переменной.

Как вариант, конечно, выделить Parameters: Parametrs_HVS в отдельный список переменных и использовать два блока MB_TcpSlave, но хотелось бы постараться обойтись одним блоком MB_TcpSlave, т.к. подобных блоков в проекте и без того много вызывается.

Евгений Кислов
07.02.2023, 11:19
Добрый день.
Сделать только часть структуры энергонезависимой - не получится.


т.к. подобных блоков в проекте и без того много вызывается

А с чем это связано?

zaychenko
07.02.2023, 11:26
Добрый день.
Сделать только часть структуры энергонезависимой - не получится.



А с чем это связано?

ПЛК210 slave для 8-ми панелей (у каждой свои данные) + slave для СКАДЫ + опрашивает 8-мь устройств блоками UNM_TcpRequest

Евгений Кислов
07.02.2023, 11:29
ПЛК210 slave для 8-ми панелей (у каждой свои данные) + slave для СКАДЫ + опрашивает 8-мь устройств блоками UNM_TcpRequest

А почему нельзя было обойтись одним слэйвом для всех панелей? Например, для одной панели выделить в нем регистры 0...999, для второй 1000...1999 и т.д.

zaychenko
07.02.2023, 11:36
А почему нельзя было обойтись одним слэйвом для всех панелей? Например, для одной панели выделить в нем регистры 0...999, для второй 1000...1999 и т.д.

как вариант, но тогда у каждой панели будет свой проект со своей адресацией регистров. При использовании блока MB_TcpSlave для каждой панели адресация одинаковая, а меняется структура, на которую ссылается блок.

zaychenko
21.02.2023, 15:11
для одной панели выделить в нем регистры 0...999, для второй 1000...1999 и т.д.

Евгений, я правильно понимаю, что при таком подходе необходимо под каждую панель объявлять структуру по 1000 регистров?

Т.к. у блока можно подвязать только одну структуру и указать смещение для нее.

Или реализовать код, который будет изменять структуру на входе блока (указатели на разные структуры, для каждой панели) и смещение?

Евгений Кислов
21.02.2023, 15:55
Евгений, я правильно понимаю, что при таком подходе необходимо под каждую панель объявлять структуру по 1000 регистров?

Т.к. у блока можно подвязать только одну структуру и указать смещение для нее.

Вы поняли правильно.