Страница 133 из 1050 ПерваяПервая ... 3383123131132133134135143183233633 ... ПоследняяПоследняя
Показано с 1,321 по 1,330 из 10492

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

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

    По умолчанию

    Цитата Сообщение от nb1979 Посмотреть сообщение
    В книге Петрова И.В. (Программируемые контроллеры приводится такой пример):


    А теперь вопрос - Как реализовать этот неправильный пример, чтобы он действительно не работал? (как сделать правильно я знаю).
    Через while например, условие цикла true, а тело цикла это описанные две паузы и включение/выключение

  2. #1322

    Post

    Цитата Сообщение от capzap Посмотреть сообщение
    Через while например, условие цикла true, а тело цикла это описанные две паузы и включение/выключение
    Если делать бесконечный цикл, то встроенный в контроллер сторожевой таймер воспринимает это как зависание программы и просто сбрасывает контроллер по истечении заданного в конфигурации максимального времени цикла ПЛК, а сама программа по сути не работает (даже неправильно).
    Если бы можно было как-то вручную задать фиксированное время цикла ПЛК, например 10 с, то тогда этот принцип, указанный Петровым, можно было бы легко продемонстрировать.

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

    По умолчанию

    Цитата Сообщение от nb1979 Посмотреть сообщение
    Если делать бесконечный цикл, то встроенный в контроллер сторожевой таймер воспринимает это как зависание программы и просто сбрасывает контроллер по истечении заданного в конфигурации максимального времени цикла ПЛК, а сама программа по сути не работает (даже неправильно).
    Если бы можно было как-то вручную задать фиксированное время цикла ПЛК, например 10 с, то тогда этот принцип, указанный Петровым, можно было бы легко продемонстрировать.
    непонимаю сути Ваших претензий к Игорю
    она содержит бесконечный цикл
    Вы же сами его процитировали и именно по этому такой код работать не будет, потому что плк перезагрузится, а если убрать цикл, то выход останется всегда в ФАЛЬШ по тому что в реальные выхода, будет подаваться последнее записаное значение переменной, причем не важно что во время цикла она была постоянно ИСТИНА, а в последней строчке кода программы присвоили ей ФАЛЬШ, вот это значение и уйдет в физический выход или в модбас переменную

    По поводу вручную задать фиксированный цикл, кто мешает, перейдите в менеджер задач и сконфигурируйте свою задачу

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

    По умолчанию

    В приведённом тексте выбраны не самые удачные формулировки, и оттого разница между моделями программирования ускользает от читателя-новичка. На самом деле, если правильно написать подобную программу-мигалку, скажем, на SFC, то она будет полностью соответствовать тому описанию:



    На месте автора я бы взял другой пример. Например, запись текущего времени в переменную и актуализация этого значения:
    Код:
    // ПК:
    while (true)
    {
    	cur_time := TIME();
    	Sleep(20);
    }
    
    (* ПЛК *)
    cur_time := TIME();
    Или с миганием:
    Код:
    out := TIME() MOD 1000 > 500; (* опа фанкшен стайл 8-] *)
    И отсюда можно плясать о том, почему для ПЛК программа получается такой короткой. Это должно заставить думать иначе.

  5. #1325

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    непонимаю сути Ваших претензий к ИгорюВы же сами его процитировали и именно по этому такой код работать не будет, потому что плк перезагрузится, а если убрать цикл, то выход останется всегда в ФАЛЬШ по тому что в реальные выхода, будет подаваться последнее записаное значение переменной, причем не важно что во время цикла она была постоянно ИСТИНА, а в последней строчке кода программы присвоили ей ФАЛЬШ, вот это значение и уйдет в физический выход или в модбас переменную


    Принцип функционирования ПЛК я понимаю. Никаких претензий к Игорю нет, просто я хочу продемонстрировать это отличие в программировании ПЛК на практике, а не на словах. А подходящего примера не могу придумать. Если убрать цикл while, то как раз таки все должно функционировать нормально, т.к. программа уже не будет выполнятся в рамках одного цикла ПЛК и все указанные действия будут последовательно выполнены.


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

    Цитата Сообщение от Yegor Посмотреть сообщение
    В приведённом тексте выбраны не самые удачные формулировки, и оттого разница между моделями программирования ускользает от читателя-новичка. На самом деле, если правильно написать подобную программу-мигалку, скажем, на SFC, то она будет полностью соответствовать тому описанию:
    Спасибо за красивый привильный пример, но увы он правильный

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

    По умолчанию

    увы он правильный
    Потому что описание правильное, говорю же. Из него вообще никак не следует, что реализованная по этому алгоритму программа для ПЛК работать не будет. Она будет. С таким описанием алгоритма получается, что автор книги сделал ложный вывод и на этот ложный вывод вы хотите за уши притянуть пример неправильной программы с паузами в потоке исполнения. Такую неправильную для ПЛК программу написать очень легко, но не по этому описанию, а по его частному случаю.

  7. #1327
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,254

    По умолчанию

    [QUOTE=nb1979;100348]Конфигурировал, сброс произойдет в любом случае. Смысл в том, что в рамках этого одного цикла значения переменных даже один раз не успевают установится т.к. сторожевой таймер делает сброс раньше.
    Вы что ребенок индиго, Вы в состоянии отследить изменения в единицы микросекунд., что так говорите
    Уберите цикл и поставте счетчик после каждого изменения состояния и увидите что за цикл переменные меняются


    ЗЫ в плк нет многозадачности в плане выполнения параллельно инструкций процессора, поэтому когда выполняется бесконечный цикл, контроллер не отправит в КДС свои значения, поэтому Вы в режиме онлайн не увидите ни каких изменений до сброса плк

    ЗЫЫ если хотите все же увидеть эффект переключения, тогда программу надо поменять от прямых присваиваний в следующее flag:= NOT flag; и так нечетное количество раз, тогда возможно по окончанию цикла можно будет увидеть измененное состояние

  8. #1328

    По умолчанию

    Здравствуйте!

    Столкнулся с проблемой. Периодически, при внесении изменений в конфигурацию, перестают работать соединения по MODBUS TCP SLAVE и MODBUS RS485 MASTER. При этом если всё вернуть как было - соединение не восстанавливается. MODBUS TCP SLAVE лечится удалением/добавлением TCP[VAR]. MODBUS RS485 MASTER не лечится даже при полном удалении ветки. Сброс и холодный сброс не помогают. Соединение с CoDeSys проходит нормально.

    ПЛК-110-30-220 + МВА8 (по RS-485)

    Подскажите пожалуйста в чём может быть дело и можно ли как-то ещё дистанционно решить проблему?

  9. #1329

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    пока непонятно о чем Вы написали. При изменении конфигурации и подключении к плк, среда разработки попросит залить проект по новой и следовательно если заливка прошла успешно будет ждать когда Вы нажмете старт(F5)
    Старт я нажимаю. Загрузочный проект тоже создаю. В конфигурации всё настроено, причём настроено так же как и когда работало, 1 в 1.

    Кстати, кнопка старт на работу MODBUS SLAVE TCP не влияет. Т.е. программа может быть остановлена, а связь работать.

  10. #1330

    По умолчанию

    Здравствуйте, Isvlad.
    Цитата Сообщение от isvlad Посмотреть сообщение
    Старт я нажимаю. Загрузочный проект тоже создаю. В конфигурации всё настроено, причём настроено так же как и когда работало, 1 в 1.
    Выключите на 15 минут контроллер или нажмите Reset на ПЛКххх и всё будет работать :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

Страница 133 из 1050 ПерваяПервая ... 3383123131132133134135143183233633 ... ПоследняяПоследняя

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

Ваши права

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