Это скрин MASTERSCADA 4D
Вложение 79965
Это скрин MASTERSCADA 4D
Вложение 79965
ну там идут регистры временного хранения и входные регистры. Что где куда?. И адреса на стороне CODESYS мне не надо назначать, ток в MASTERSCADA 4D буду назначать типа 000001 или 00017 в зависимости от типа регистра
Проверил ещё раз, запись мастером 0 бит 0 регистра, попадает в 0 бит 0 регистра слейва (рег. временного хранения) Вложение 79967
Чтение в мастере надо делать функцией 0х04. Это если с одного виртуального ПЛК на другой передавать массивом.
А вот с ОРС сервера (чтение запись бит) 8 бит попадает в 0, а 0 бит в 8 бит Вложение 79968
Чтение бит функция 0х02 и запись бит функция 0х0f.
Спасибо, пока разбираюсь. У меня вертуальный ПЛК выступает в роли slave, а MASTERSCADA 4D как MASTER. Ток при настройках ничего такого я не видел. Просто Modbus TCP Device на стороне MASTERSCADA 4D и все. Как я понял к этим регистрам протокола Modbuss TCP надо правельно уметь обращаться. Пока читаю докумнтацию между строк Вложение 79974
И с этими регистрами большая вложеность при открытии клике мыши. Надо привыкать к этой среде
Для ПЛК-200 в итоге заработало даже с четностью NONE
И даже когда я по ошибке указал параметр usiMedium:=0, то есть rs232 вместо реального rs485, то все равно работает.
Я так понял, что в данном конкретном случае этот параметр не влияет на работу метода.
Код:
Modbus_Master_COM_Port.xStop := TRUE;
Modbus_Master_COM_Port.UpdateComParameters(9600, 0, 0, 8, 1, FALSE, 4)
Modbus_Master_COM_Port.xStop := FALSE;
НО, уже второй день пытаюсь тоже самое сделать для ПЛК-210, но никак не выходит (
Уже все комбинации параметров перебрал. Хотя казалось бы, отличие от вызова только в номере ком порта должно быть
https://disk.yandex.ru/i/CwQtK3UukD906g - вот запись с экрана (первая строчка - подача питания на HMI)
В связи с этим несколько вопросов.
1) Как вообще можно что-то вернуть из этого метода, в частности ERR_PARAMETER?
В описании ничего не вижу
https://content.helpme-codesys.com/e...arameters.html
2) Есть ли возможность у кого-нибудь протестировать этот метод именно на ПЛК-210? (чтобы сравнить с моим результатом)
Ибо эта функция очень нужна
Или может быть кто-то увидит на демонстрации, что я где-то косячу.
Добрый день.
Проверил с ПЛК210-01 - функционал работает корректно. Использовал такой код:
Код:IF xChangeBaudrate THEN
Modbus_Master_COM_Port.xStop := TRUE;
Modbus_Master_COM_Port.Enable := FALSE;
Modbus_Master_COM_Port.UpdateComParameters
(
COMPORT := 5,
udiBaudrate := udiBaudrate,
usiDataBits := 8,
usiStopBits := 1,
usiParity := 0,
usiMedium := 1,
xPolarization := FALSE
);
Modbus_Master_COM_Port.Enable := TRUE;
Modbus_Master_COM_Port.xStop := FALSE;
xChangeBaudrate := FALSE;
END_IF
Цитата:
Для ПЛК-200 в итоге заработало даже с четностью NONE
Про NONE - я ошибся, баг с NONE проявляется только когда сам ПЛК работает в режиме Slave.Цитата:
1) Как вообще можно что-то вернуть из этого метода, в частности ERR_PARAMETER?
Это касается и метода - для мастера метод ничего не возвращает.
На вашем скриншоте Parity устанавливается в ODD - так и задумано?
Это тоже интересно, пытаюсь также наладить работу для ПЛК как слэйва
UpdateComPortSettings и UpdateUnitID.
Вроде как не срабатывают, запросы от мастера продолжают успешно приниматься
Оба метода при этом возвращают 1. Это показатель успешного выполнения или что единичка означает в данном случае?