Вопрос: в приложении настроен обмен по протоколу Modbus TCP через конфигурацию в дереве проекта. Как изменить из кода сетевые настройки?
Ответ:
1. если контроллер работает в режиме Modbus TCP Slave, то достаточно изменить сетевые настройки через узел Network (доступен только в контроллерах СПК1хх [М01]) или web-конфигуратор.
2. если контроллер работает в режиме Modbus TCP Master и необходимо менять сетевые настройки опрашиваемых slave-устройств, то следует:
На вкладке Device - Установки ПЛК установить галочку Включить диагностику для устройств.
3.png
В программе использовать следующий код:
Код:
// новый IP-адрес для слэйва
abyNewSlaveIp: ARRAY [0..3] OF BYTE := [10, 2, 11, 177];
// бит обновления настроек слэйва
xUpdate: BOOL;
// Modbus_TCP_Slave - имя нужного компонента из дерева проекта
4.png
Modbus_TCP_Slave.xConfirmError := FALSE;
IF xUpdate THEN
// тормозим опрос слэйва
Modbus_TCP_Slave.Enable := FALSE;
// проверяем, что слэйв остановлен
IF Modbus_TCP_Slave.ComState = 0 THEN
// задаем новые настройки
Modbus_TCP_Slave.UpdateCommunicationSettings(ipAddress := abyNewSlaveIp, uiPort := 502);
// включаем слэйв в работу
Modbus_TCP_Slave.xConfirmError := TRUE;
Modbus_TCP_Slave.Enable := TRUE;
xUpdate := FALSE;
END_IF
END_IF
Обратите внимание, что при перезагрузке контроллера слэйв инициализируется с настройками, заданными в компоненте, поэтому следует повторять процедуру при старте программы.