Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: Помогите с ПЛК 308

  1. #11
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Видимо надо инициализировать ФБ заново. Во вторник-среду появится возможность проверить. О результатах сообщю

  2. #12
    Пользователь
    Регистрация
    03.03.2008
    Адрес
    Новосибирск
    Сообщений
    238

    По умолчанию

    Цитата Сообщение от ISh Посмотреть сообщение
    Разобрался - понравился.
    Только появилось два вопроса:
    1) Опрашиваю ПЛК Лектусом - данные идут.
    Перезагружаю ПЛК - связь не восстанавливается, всё время mbserv.xError = TRUE.
    Еще раз перезагружаю ПЛК - связь восстановилась.
    Как сделать, чтобы связь всегда поднималась?
    2) Для чего нужны строки:
    Код:
    IoDrvStartBusCycle := Errors.ERR_SOCK_NOTCONNECTED;
    IoDrvStartBusCycle := Errors.ERR_OK;
    И компилятор ругается, что "Идентификатор 'Errors' не задан".

    Вообще этот код я взял из встроенной справки. Здесь Errors - компонент биб-ки Cmperrors

  3. #13
    Пользователь
    Регистрация
    02.08.2011
    Адрес
    Архангельск
    Сообщений
    13

    По умолчанию

    Цитата Сообщение от kgsh82 Посмотреть сообщение
    Вообще этот код я взял из встроенной справки. Здесь Errors - компонент биб-ки Cmperrors
    Добавив явно библиотеку Cmperrors - компилятор ругаться перестал.

    Ни с помощью справки, ни с документацией, ни с гуглом разобраться, что же такое IoDrvStartBusCycle, не получилось.

    По поводу прекращения работы Модбас:
    Если ПЛК не опрашивать, то перезугрузки ПЛК работу Модбас не останавливают.
    Если ПЛК опрашивается, то Модбас отваливается, и далеко не с первой перезагрузкой удается восстановить его работу.

    Переписал код на следующий:
    Код:
    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( );
    связь стала восстанавливаться примерно за 60 секунд.
    Так и должно быть?
    Из справки следует, что связь должна восстанавливаться уже на следующий цикл:
    "In case of a socket error the reset flag is set, normal request processing then should continue in the next cycle".

  4. #14

    По умолчанию

    Использую TCP через конфигуратор. У меня проблема в том, что Lan-порт почти сразу отваливается с красным треугольником. В онлайне добрался до xReset - удаётся шину перегрузить, некоторое время работает и опять отваливается. Хотел, как в примере использовать функциональный блок, но что-то не удаётся прописать порт. Почему-то wPort не прописывается, когда ставлю точку после mbserv такой переменной в списке нет, хотя в контекстной подсказке появляется сообщение, что порт по умолчанию 502... Не понятно как его поменять?
    Ещё не понял как вызвать функциональный блок ModbusServer с помощью ассистента ввода?

    Цитата Сообщение от kgsh82 Посмотреть сообщение
    mbserv.wPort := 502;
    В онлайне, добираюсь к этим переменным так Device.Application.ModbusTCP_Slave_Device.m_Modbus Server, но не пойму как к ним добраться из программы контроллера...
    Последний раз редактировалось Sergeba; 28.04.2018 в 00:31.

Страница 2 из 2 ПерваяПервая 12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •