2015-05-26 2 views
0

Я начал программировать логический контроллер (PLC) с помощью структурированного текста. Мой исход из ИТ или информатики. Поэтому я привык к традиционным языкам программирования, таким как Java, C# и т. Д. Я просто понимаю, что для ПЛК требуется другой набор Mind. Понимание цикла сканирования ... Может кто-нибудь объяснить мне более четко следующий абзац я прочитал fromСтруктурированный текст с традиционными языками программирования

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

ответ

2

Это означает, например: в течение 1 секунды ваша программа ПЛК выполнена 1сек/цикличность. Поэтому, если у вас есть цикличность, например. 1 мс, ваша программа выполняется 1000 раз в секунду. Это основное отличие. Это детерминистически. Вот что означает этот параграф. И он не закончен, когда он достигнет конца. он перезапускается с обновленным образцом процесса.

В, позволяет сказать, что программы не-PLC (например, на вашем компьютере) у вас есть что-то вроде

while(!_end) 
{ 
     /* your code */ 
} 

В принципе, PLC работает аналогично этому. Но на вашем ПК нет необходимости циклически выполнять программы в жестких временных рамках, например, 500 мкс. Большинство приложений для вашего ПК, позвольте называть его «время некритичным». Большая разница заключается в том, что ПЛК запускает полную программу, и до того, как он начнет следующий запуск, он обновит свой образ процесса (записывая выходы/считывающие входы). Выполнение программы инициируется так называемой «задачей». Эта задача отвечает за поддержание вашего контроля в режиме реального времени. Образ процесса, который я упомянул ранее, представляет собой сумму всех значений процесса, которые присутствуют в ПЛК (например, цифровые входы/выходы, значения драйвера двигателя ...). Итак, вы видите, это своего рода цикл, но не тот, который вам известен из ваших C#/java-программ.

(кстати, я не смог открыть PDF)

+0

хорошее объяснение –

4

программа ПЛК отличается от того, что вы уже знаете, что это, как правило, имеет основную задачу, которая выполняется циклически, т.е. один раз за один цикл сканирования. Затем главная задача вызывает список подзадач или -программ, и когда это будет сделано, основная задача снова запустится.

Цикл сканирования может быть настроен на запуск с интервалами, например каждые 10 мс. Затем ПЛК обновит IO, запустит программу и затем ничего не сделает, ожидая следующего триггера. Если у вас есть фиксированное время сканирования, вы можете использовать это для создания очень точно синхронизированных программ, но важно, чтобы ваша программа (основная задача и ее подзадачи) всегда выполнялась в течение этого времени.

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

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

+0

хорошее объяснение –

0

Я программист ПЛК. и я хочу использовать ПК для управления PLC, PLC как немой IO. Программирование ПЛК всегда циклично и сканирует. И каждое время сканирования составляет несколько миллисекунд. Вы можете понять это как заявление, которое сказал КрисКо.

while(1=1) 
{ 
    // code 
} 
3

ответы pboedker и ChrisKo оба хороши. Необходимо несколько дополнительных предупреждений.

Сканирование (или время сканирования) может быть короче, чем время выполнения кода. В большинстве ПЛК есть «сторожевой таймер», чтобы обнаружить это, и предупредить, что это происходит. Вам часто нужно установить этот «сторожевой таймер» и настроить для него обработчик тревоги/события.

Знайте, как ваш ПЛК выполняет ввод-вывод. Некоторые (такие как ControlLogix) являются асинхронными, I/O считывается в память ваших контроллеров на основе RPI (интервал запросов запроса) и выписывается (тот же RPI), когда вы вносите изменения в точку ввода-вывода с кодом. Другие (такие как AutomationDirect Productivity 2000 series) записывают только данные при выполнении ПОЛНОГО сканирования вашего кода. Я уверен, что вы можете представить профи и минусы каждого сценария, особенно если ваш контроллер не завершил ваш код перед повторным запуском сканирования.

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

+0

спасибо за предоставление дополнительного разъяснения –

Смежные вопросы