Видимо надо инициализировать ФБ заново. Во вторник-среду появится возможность проверить. О результатах сообщю
Вид для печати
Видимо надо инициализировать ФБ заново. Во вторник-среду появится возможность проверить. О результатах сообщю
Добавив явно библиотеку Cmperrors - компилятор ругаться перестал.
Ни с помощью справки, ни с документацией, ни с гуглом разобраться, что же такое IoDrvStartBusCycle, не получилось.
По поводу прекращения работы Модбас:
Если ПЛК не опрашивать, то перезугрузки ПЛК работу Модбас не останавливают.
Если ПЛК опрашивается, то Модбас отваливается, и далеко не с первой перезагрузкой удается восстановить его работу.
Переписал код на следующий:
связь стала восстанавливаться примерно за 60 секунд.Код:mbserv.xEnable := En;
IF ( mbserv.xError ) THEN
CounterReset:= CounterReset + 1;
mbserv.xReset := TRUE;
IoDrvStartBusCycle := Errors.ERR_SOCK_NOTCONNECTED;
ELSE
mbserv.xReset := FALSE;
IoDrvStartBusCycle := Errors.ERR_OK;
END_IF
mbserv( );
Так и должно быть?
Из справки следует, что связь должна восстанавливаться уже на следующий цикл:
"In case of a socket error the reset flag is set, normal request processing then should continue in the next cycle".
Использую TCP через конфигуратор. У меня проблема в том, что Lan-порт почти сразу отваливается с красным треугольником. В онлайне добрался до xReset - удаётся шину перегрузить, некоторое время работает и опять отваливается. Хотел, как в примере использовать функциональный блок, но что-то не удаётся прописать порт. Почему-то wPort не прописывается, когда ставлю точку после mbserv такой переменной в списке нет, хотя в контекстной подсказке появляется сообщение, что порт по умолчанию 502... Не понятно как его поменять?
Ещё не понял как вызвать функциональный блок ModbusServer с помощью ассистента ввода?
В онлайне, добираюсь к этим переменным так Device.Application.ModbusTCP_Slave_Device.m_Modbus Server, но не пойму как к ним добраться из программы контроллера...