Страница 280 из 1044 ПерваяПервая ... 180230270278279280281282290330380780 ... ПоследняяПоследняя
Показано с 2,791 по 2,800 из 10436

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #2791
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,666

    По умолчанию

    Не понимаю, почему после сброса ПЛК запись через SysLibCom работает, а после полного прохождения цикла перестает работать ?
    Код вида:
    1:
    (*Отсылаем команду*)
    t1;
    byte_write:=SysComWrite(DeviceNumber, ADR(command), command_len, 0);

    IF byte_write=command_len THEN
    stat:=2;
    (*Запуск таймера ожидания ответа*)
    t1(IN:=TRUE , PT:=timeout );
    t1;
    END_IF
    После одного прохода byte_write становится равным 0 хоть тресни. Не пойму, куда копать...

  2. #2792
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    А кто ж кроме вас видел все остальное ?
    Например, забыли сбрасывать таймер

  3. #2793
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,666

    По умолчанию

    Валенок, все остальное это библиотека Mercury.lib от Овена и переделка ее под SysLibCom вместо UNM.

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

    Можно подробнее как в ST сбрасывать таймер ? а то я уже тут блуждаю между непонятно чем и как.

    Примеры работы с SysLibCom так же брал Овеновские.

  4. #2794
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    потом открывается опять порт
    А зачем его закрывать и повторно открывать? Всё-таки лучше б вы показали, как именно перевели этот mercury.lib. Приёмник данные считывает хотя бы в это время?

    byte_write:=SysComWrite(DeviceNumber, ADR(command), command_len, 0);

    IF byte_write=command_len THEN
    Так не совсем правильно писать, потому что в буфере порта может не оказаться свободного места для данных в объёме command_len. Нужно суммировать ответы SysComWrite пока они не достигнут command_len, а к адресу своего буфера эту сумму добавлять:
    Код:
    nbytes_written := nbytes_written + SysComWrite(dev, ADR(command) + nbytes_written, command_len - nbytes_written, 0);
    
    IF nbytes_written = command_len THEN ...

  5. #2795
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,666

    По умолчанию

    Yegor ADR(command) + nbytes_written, command_len - тут билиберда, при условии, что command_len число известное. мы сдвигаем адрес буфера команды, а ее длину оставляем неизменную.
    ага, тоже уже заметили

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

    За код не пинайте, он практически полностью от ОВЕН.
    Странность в том, что все заложенные в программе CASE с учетом входа Fixed проходят только один раз, потом стопориться на case 1: блока Test_Channel

    ПЛК-100 Р-М используется для тестирования.

    Опытным путем определил, что зависает порт, поэтому останавливается цикл опроса.
    1. отключил FB Close_port
    2. будучи подключенным к проекту из Codesys ручками заставляю закрыть и потом открыть порт, цикл продолжается.
    3. попытки использовать Fixed так же приводят к останову...
    мда уж, толи руки кривые, толи лыжи не едут

    Обновил вложение.

  6. #2796

    По умолчанию

    Подскажите, пожалуйста, как инициализировать глобальные переменные? Где-то вроде бы говорилось, что они инициализируются в ноль, но в эмуляторе пишет INVALID: 16x67...

  7. #2797
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    16#67, 2#10001

  8. #2798
    Пользователь
    Регистрация
    22.02.2013
    Адрес
    г.Тихорецк, Краснодарский край
    Сообщений
    384

    По умолчанию

    Валенок-гений математики и не только!

  9. #2799

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    16#67, 2#10001
    Эээ, а подробнее можно, пожалуйста...
    Спасибо

  10. #2800
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,251

    По умолчанию

    А что такое 16x67 ?

Страница 280 из 1044 ПерваяПервая ... 180230270278279280281282290330380780 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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