This stream auto-updates
- Last week
- Earlier
-
SIEMENS-RU Tia Portal – Различные случаи вызова функционального блока
caixiaofeng posted A plc and hmi russian article in PLC programming learning
В предыдущей статье мы обсуждали, что такое функциональный блок FB, как он работает в программе ПЛК и как его создать и использовать. В этой статье мы поговорим об экземплярах блоков данных различных типов функциональных блоков в Siemens Tia Portal и когда использовать каждый тип. Содержание: Что такое функциональный блок FB? Различные варианты экземпляров данных. Одиночный экземпляр. Экземпляр параметра. Многоэкземпляр. Что такое функциональный блок? Функциональный блок или FB — это просто блок, содержащий логику кода. Вы используете этот FB для достижения определенной функциональности с помощью фрагментов кода, написанных внутри. При вызове функционального блока в ваш код вам будет предложено назначить блок данных, также называемый экземпляром данных, который будет связан с этим FB, чтобы сохранить значения параметров FB. Не все параметры внутри FB сохраняются в экземпляре данных, но мы вернемся к этому позже. При вызове функционального блока у вас есть 3 различных варианта для связывания экземпляра блока данных с этим вызовом функции. Эти различные варианты будут зависеть от того, где вы вызываете свой FB. Итак, вкратце. Функциональный блок FB — это в основном функция FC с выделенным блоком данных DB, этот блок данных используется для хранения значений параметров функционального блока. Различные варианты для экземпляров данных У нас есть 3 различных варианта для экземпляра данных функционального блока, эти варианты: Один экземпляр. Экземпляр параметра. Мультиэкземпляр. Три различных экземпляра данных вызова исходят из 3 различных методов вызова: Вы можете вызвать функциональный блок FB внутри основного OB1, что даст вам возможность: Один экземпляр. Вы можете вызвать функциональный блок FB внутри функции FC, что даст вам два варианта Один экземпляр Экземпляр параметра Вы можете вызвать функциональный блок внутри другого функционального блока, что даст вам три доступных варианта создания экземпляра данных Один экземпляр Экземпляр параметра Несколько экземпляров Один экземпляр данных Сначала давайте начнем с создания функционального блока FB, как мы уже упоминали ранее, мы создаем функциональный блок, нажимая «добавить новый блок» и выбирая нужный нам тип блока. Смотрите рисунок 1. Рисунок 1 — Создание функционального блока FB Теперь давайте вызовем ReusableFB, который мы создали внутри нашего основного OB1. См. рисунок 2. Рисунок 2 – Вызов FB внутри основного OB1 Как видно из предыдущего рисунка, при вызове FB внутри основного OB1 вам будет предложено назначить экземпляр данных, который будет связан с этим вызовом FB. В этом случае будет только один вариант – один экземпляр. После выбора варианта один экземпляр будет создан блок данных и связан с вызовом FB. См. рисунок 3. Рисунок 3 – Создан один экземпляр Созданный один экземпляр будет использоваться для хранения значений некоторых параметров FB. Например, входов, выходов, In Out и статических параметров. Другие параметры FB не будут сохранены, например, temp и константы. См. рисунки 4 и 5. Рисунок 4 – Данные сохраняются внутри экземпляра данных Рисунок 5 – Данные сохраняются из FB в экземпляр данных. Теперь давайте создадим простую логику внутри FB, чтобы лучше понять экземпляры данных. Эта логика добавит постоянное значение 15 к статической переменной, а затем переместит результат на выход. См. рисунок 6. Рисунок 6 – Создание простой логики Теперь вернитесь к основному OB1 и обратите внимание, как теперь выглядит ваш вызов FB. См. рисунок 7. Рисунок 7 – Обновление вызова FB после каждого изменения Любое изменение, которое вы вносите в логику внутри FB, приведет к необходимости обновления вызова функционального блока, чтобы внесенные вами изменения можно было применить. Вы можете обновить вызов блока, щелкнув правой кнопкой мыши вызов FB и нажав опцию обновления вызова блока или перекомпилировав код ПЛК. Смотрите рисунок 8. Рисунок 8 – Обновление вызова FB После обновления вызова блока изменения, внесенные вами в код FB, будут применены и использованы в вызове блока. Как вы видите на рисунке 9. Теперь FB ожидает входной сигнал типа bool, а FB выдаст выход типа int. Рисунок 9 – Входы и выходы теперь связаны с вызовом FB Давайте смоделируем наш код и посмотрим, как будет вести себя ПЛК. Смотрите следующую анимацию, показывающую простую симуляцию логики ПЛК на данный момент. Как вы видите из анимации, всякий раз, когда сигнал запуска равен TRUE, функция будет выполняться, а выход будет продолжать меняться. И как только сигнал запуска больше не доступен, выход останется на последнем записанном значении. Использование экземпляра данных здесь заключается в том, что значения статической переменной и выходной переменной сохраняются внутри одного экземпляра, поэтому, когда сигнал запуска снова возвращается, функция продолжит работу с последних записанных значений. Очень важное примечание Никогда не используйте один и тот же экземпляр для двух разных вызовов FB. Смотрите следующую анимацию. Как вы видите из анимации, у нас есть два разных вызова FB, но оба вызова связаны с одним и тем же одним экземпляром, поэтому даже когда сигнал start2 был FALSE, значение Output2 менялось вместе с Output1. Как и следовало ожидать, изменение экземпляра данных 1-го вызова также будет затронуто во 2-м вызове, поскольку у них один и тот же блок памяти. Смотрите рисунок 10. Рисунок 10 — Никогда не используйте один и тот же экземпляр данных с разными вызовами FB Если вы использовали один и тот же экземпляр данных с разными вызовами FB, то ваш функциональный блок больше не может быть использован повторно. Даже если входные/выходные параметры различны для каждого отдельного вызова FB. Как вы видели в последнем видео (анимация), оба вызова дали одинаковые результаты, хотя у второго вызова даже нет входного сигнала включения. Еще одно очень важное замечание Мы уже говорили, что если вы вызываете свой FB из FC более высокого уровня, у вас будет два варианта для связанного экземпляра данных; эти варианты — один экземпляр и экземпляр параметра. Смотрите рисунок 11. Рисунок 11 — Использование одного экземпляра с FB, вызванным из FC Если это произошло, и вы вызовете FB внутри FC, вам никогда не следует использовать один экземпляр для ваших FB. Чтобы узнать, почему это так. См. рисунок 12 Рисунок 12 – Вызов FC более одного раза Как видно из рисунка 12, когда вы вызываете FC более одного раза в своей логике, вам не будет предложено назначить блок данных, потому что FC не нужен один. Но вы знаете, что внутри FC есть вызванный FB, с этим FB связан один экземпляр. Так что теперь 3 вызова FC имеют один и тот же экземпляр данных для вызова FB. Так что ваша функция FC больше не может быть повторно использована. Что делать? Лучший вариант, когда вам нужно вызвать FB внутри FC, — использовать экземпляр параметра. Экземпляр параметра Как мы уже говорили, если вы вызвали FB внутри FC, вам не следует выбирать один экземпляр, а экземпляр параметра лучше для целей повторного использования. Экземпляр параметра сохранит экземпляр данных FB, вызванного в области In Out интерфейса блока FC. Позволяет вводить новый экземпляр данных для каждого вызова FC. Смотрите рисунки 13 и 14. Рисунок 13 — Назначение экземпляра параметра при вызове FB внутри FC Рисунок 14 — Каждому вызову FC потребуется новый экземпляр данных Как видно из предыдущего рисунка, всякий раз, когда вы вызываете FC внутри своей программы, она будет запрашивать экземпляр данных для повторно используемого FB внутри FC. Но, используя этот способ, вам придется создать экземпляр данных самостоятельно. Смотрите рисунок 15. Рисунок 15 — Создание нового экземпляра данных Чтобы создать новый экземпляр данных, вы делаете то же самое, что и при создании FC или FB, но на этот раз вы выбираете опцию DB. И убедитесь, что вы выбрали тот же тип DB, что и вызываемый FB. Теперь ваш FC можно использовать повторно столько раз, сколько вы хотите, вам просто нужно создать экземпляр для каждого вызова. Смотрите рисунок 16. Рисунок 16 — Назначение DB вызову FC Многоэкземплярная база данных Многоэкземплярная база данных просто означает, что DB вызываемого FB будет храниться внутри DB вызывающего FB более высокого уровня. Эта опция доступна только в том случае, если вы вызываете FB из другого FB. Давайте создадим еще один FB, чтобы использовать его как FB более высокого уровня. После создания этого HigherLevelFB вызовите его из основного OB1, и, конечно, единственным вариантом вызова будет один экземпляр, как показано ранее. Смотрите рисунок 17. Рисунок 17 – Вызов HigherLevelFB из основного OB1 Теперь вызовите ReusableFB из HigherLevelFB. И выберите опцию Multi-instance. См. рисунок 18. Рисунок 18 – Назначение многоэкземплярной БД При выборе опции Multi-instance созданная БД будет сохранена внутри статических параметров вызывающего FB. См. рисунок 19. Рисунок 19 – Экземпляры сохраняются внутри статических параметров Вы можете вызывать ReusableFB много раз, каждый раз при его вызове многоэкземпляр будет сохранен внутри статического параметра. См. рисунок 20. Рисунок 20 – Многократный вызов ReusableFB Как вы видите, экземпляр данных FB нижнего уровня будет сохранен внутри экземпляра данных FB верхнего уровня. Это лучше всего подходит для лучшей структуры программы и удобной для чтения логики. Заключение Создание функциональных блоков внутри вашего кода потребует связывания блока данных с каждым вызовом FB, который вы сделаете в своей логике. Этот блок данных или также называемый экземпляром данных имеет различные параметры в зависимости от типа блока, который вызывает ваш FB. Будьте осторожны при выборе типа экземпляра данных, так как некоторые параметры могут не подходить для вашего случая, как мы показали ранее. А иногда это может привести к проблемам в вашей логике, и ваша функция больше не сможет быть повторно использована. Использование нескольких экземпляров может помочь лучше организовать структуру вашей программы, поскольку все вызываемые FB будут хранить свои базы данных внутри основного вызывающего FB. -
Что такое блок данных? Глобальные блоки данных в ПЛК
caixiaofeng posted A plc and hmi russian article in PLC programming learning
При программировании ПЛК доступны различные структуры блоков, эти блоки включают функции FC, функциональные блоки FB и блоки данных DB. Эти блоки являются очень удобными инструментами, которые вы можете использовать для лучшего проектирования логики ПЛК и сделать ваш код более читаемым и простым для отслеживания и отладки В предыдущих статьях мы обсуждали FC и FB. В этой статье мы обсудим блоки данных DB, а именно глобальный блок данных. Содержание: Что такое блок данных DB? Типы блоков данных. Что такое глобальный блок данных? Создание глобального блока данных? Работа с глобальными блоками данных. Пример моделирования. Что такое блок данных? Блок данных DB — это область памяти, которая используется для сохранения значений параметров, которые записываются во время выполнения программы ПЛК. В отличие от блока кода, блок данных DB содержит только объявления переменных. Он не имеет сетей или инструкций, как FC или FB. Структура DB определяется тем, сколько переменных вы объявили внутри блока данных. Типы блоков данных в ПЛК Существует два типа блоков данных: Глобальные блоки данных Экземплярные блоки данных Блоки данных ARRAY Глобальные блоки данных Как следует из названия, глобальный блок данных глобально объявлен для всей логики ПЛК. Он не назначен определенному кодовому блоку. Вы можете получить доступ к значениям глобального блока данных из любого кодового блока в любом месте вашей логики ПЛК. Глобальный блок данных содержит только статические теги. Структуру глобального блока данных можно свободно определить. В таблице объявлений для блоков данных вы объявляете элементы данных, которые должны содержаться в глобальном блоке данных. Блоки данных экземпляра Экземплярный блок данных назначается непосредственно функциональному блоку FB, независимо от того, определен ли этот функциональный блок внутренне в ПЛК, например, таймеры и счетчики, или пользовательские функциональные блоки FB. Структура блока данных экземпляра не может быть свободно определена, а вместо этого определяется интерфейсом функционального блока. Блок данных экземпляра содержит именно те параметры блока и теги, которые объявлены в интерфейсе функционального блока. Однако вы можете определить значения, специфичные для экземпляра, в блоке данных экземпляра; например, начальные значения для объявленных тегов. Блоки данных ARRAY Доступные только для ЦП S7-1500, блоки данных ARRAY являются глобальными блоками данных, которые состоят из ARRAY. Этот ARRAY может быть основан на любом типе данных. Например, возможен ARRAY типа данных ПЛК (UDT). DB не содержит других элементов, кроме ARRAY. Благодаря своей плоской структуре блоки данных ARRAY облегчают доступ к элементам ARRAY и их передачу в вызываемые блоки. Раздел «Операции перемещения» карты задач «Инструкции» предлагает варианты адресации баз данных ARRAY. В этой статье мы рассмотрим глобальный блок данных, а два других типа обсудим в отдельных статьях. Что такое глобальный блок данных? Блоки данных используются для хранения данных программы ПЛК. Это означает, что они содержат переменные данные, которые используются пользовательской программой. Глобальные блоки данных хранят данные, которые могут использоваться всеми другими блоками. Максимальный размер блоков данных зависит от ЦП. Вы можете определить структуру глобальных блоков данных любым удобным для вас способом. У вас также есть возможность использовать типы данных ПЛК (UDT) в качестве шаблона для создания глобальных блоков данных. Каждый функциональный блок FB, функция FC или организационный блок OB может считывать данные из глобального блока данных или может сам записывать данные в глобальный блок данных. Эти данные остаются в блоке данных даже после выхода из блока данных. См. рисунок 1. Рисунок 1 – Доступ к глобальному блоку данных Как вы можете видеть на предыдущем рисунке, к глобальному блоку данных можно получить доступ из любого блока кода внутри программы ПЛК, тогда как к экземпляру блока данных можно получить доступ только из связанного функционального блока. Создание глобального блока данных Вы создаете глобальный блок данных так же, как создаете функцию FC или функциональный блок FB. Из добавьте новый блок в дерево проекта. См. рисунок 2. Рисунок 2 – Создание глобального блока данных Давайте объявим несколько переменных внутри глобального блока данных. Это можно сделать, нажав на кнопку добавить новый в разделе имени, написав нужное имя переменной, а затем выбрав тип данных переменной. См. рисунок 3. Рисунок 3 – Объявление переменных в глобальном блоке данных Работа с глобальным блоком данных Объявление тега. Мы уже показали, как объявить тег/переменную на рисунке 3. Определение начального значения Начальное значение тега – это значение, определенное вами, которое тег принимает после запуска ЦП. Значение должно соответствовать типу данных тега и не должно выходить за пределы диапазона типа данных. См. рисунок 4. Тег принимает определенное значение при запуске, при условии, что он не был объявлен как сохраняемый. Рисунок 4 – Определение начального значения ваших тегов Итак, если я устанавливаю начальное значение Tank1Level на любое значение, отличное от нуля, это значение будет применено при следующем перезапуске ПЛК. См. рисунок 5. Рисунок 5 — Определение начального значения для ваших переменных Сохранение переменных в глобальных блоках данных Чтобы предотвратить потерю данных в случае сбоя питания, вы можете пометить данные как сохраняемые. Эти данные хранятся в сохраняемой области памяти. Параметры настройки сохранения зависят от типа блока данных и типа установленного доступа к блоку. См. рисунок 6. Рисунок 6 —. Параметр сохранения в глобальных блоках данных Как вы видите на рисунке 6, переменная Tank2Level установлена как сохраняемое значение, что означает, что даже если ПЛК остановился или произошел сбой питания, в Tank2Level будут сохранены те же данные, когда ПЛК снова включится. Он не будет сброшен до начального значения. Доступность для/из ЧМИ В глобальном блоке данных вы можете определить, может ли переменная быть видимой из таблиц тегов ЧМИ или нет. Вы также можете определить, может ли эта переменная быть прочитана или записана из ЧМИ. См. рисунок 7. Рисунок 7 — Доступность из ЧМИ Настройка по умолчанию для любой объявленной переменной в глобальном блоке данных заключается в том, что она может быть доступна, прочитана и записана из ЧМИ. Если вы хотите отключить эту функцию для определенной переменной, вам нужно снять флажок с опции доступности для этой переменной. Пример моделирования До сих пор мы создали глобальный блок данных и объявили некоторые переменные внутри. Теперь мы попробуем запустить моделирование программы и посмотреть, сможем ли мы лучше понять, что такое глобальный блок данных. Ниже приведены два моделирования ПЛК. Тестирование начальных значений переменной Проверьте следующую анимацию, объясняющую начальное значение переменной внутри глобального блока данных. Анимация 1 Объяснение анимации 1: Начальные значения параметров уровня резервуара равны нулю, вы можете видеть на видео, как они изменяются на экране моделирования. Когда ПЛК перезапускается, выключается и снова включается, вы видите, что значения будут сброшены до начальных значений, которые равны нулю. После этого начальные значения были изменены на 500, 32654 и -356 соответственно, а когда ПЛК перезапускается, значения были изменены на новые начальные значения. Обратите внимание, что когда мы изменили начальные значения, нам пришлось снова загрузить нашу логику в ПЛК; вам нужно делать это каждый раз, когда вы вносите изменения в свою логику. Тестирование опции сохранения переменных в глобальной базе данных Проверьте следующую анимацию, объясняющую опцию сохранения переменной внутри глобального блока данных. Анимация 2 Объяснение анимации 2: Во-первых, вы заметите, что свойство Retain Tank2Level теперь активно. На видео вы видите, как изменяются значения 3 резервуаров. Когда ПЛК останавливается, а затем снова запускается, Tank1Level и Tank3Level сбрасываются до начального значения, которое равно 0, но Tank2Level сохраняет свое значение -22938 Вывод Глобальный блок данных может быть доступен из любого места и любым блоком, который существует в программе ПЛК. Вы можете объявить столько переменных, сколько захотите, внутри глобальной базы данных. Наиболее оптимальным методом является создание отдельных блоков данных для различных разделов вашей логики, чтобы было очень легко следовать вашей логике. Например, отдельный блок данных для всех переменных, которые необходимо прочитать или записать с помощью ЧМИ. -
SIEMENS-RU Tia Portal – Оптимизированный и стандартный доступ к блоку данных
caixiaofeng posted A plc and hmi russian article in PLC programming learning
В предыдущей статье мы говорили о блоках данных и обсудили два различных типа блоков данных: глобальный блок данных и экземпляры данных функциональных блоков FB. В этой статье мы обсудим, что подразумевается под оптимизированным доступом к блоку данных и стандартным доступом к блоку данных в Siemens Tia Portal. Содержание: Что такое оптимизированные и стандартные блоки данных? Простой пример программы. Что такое стандартные базы данных? Что такое смещение? Что такое оптимизированные базы данных? Преимущества использования оптимизированных баз данных. Выводы. Что такое оптимизированный и стандартный доступ к блоку данных? Во-первых, это не новые типы блоков данных; мы сказали, что у нас есть только два различных типа: глобальный блок данных и экземплярный блок данных. Оптимизированный доступ к блоку данных — это функция для блока данных. Вы можете активировать или отключить эту функцию в свойствах созданного вами блока данных. Функция оптимизированного блока данных доступна только для ПЛК S7-1200 и S7-1500, но не для s7-300 или s7-400 Стандартная настройка для блоков данных при работе с ПЛК S7-1200 или S7-1500 заключается в том, что они оптимизированы, если вам нужен стандартный блок данных, вам придется настроить это самостоятельно. Итак, что такое оптимизированные и стандартные блоки? Чтобы понять разницу, мы создадим простую программу и попытаемся показать, чем оптимизированный блок отличается от стандартного блока. Пример простой программы: В этом примере мы не будем создавать никакой логики ПЛК или кодировать какие-либо инструкции, мы просто создадим 2 глобальных блока данных, DB1 будет называться OptimizedDB, а DB2 будет называться StandardDB. Внутри обоих блоков данных мы объявим 4 переменные типов данных Bool, Int, Real и Word соответственно. См. рисунок 1. Рисунок 1 – Создание двух глобальных баз данных Первое, что вы заметите, это то, что оба блока данных абсолютно одинаковы, потому что, как мы уже говорили, настройка по умолчанию при создании блока данных заключается в том, что он будет оптимизирован, поэтому нам нужно изменить настройку DB2, чтобы сделать его стандартным блоком, и посмотреть, изменится ли что-то. Мы делаем это из свойств этого DB2. Вы получаете доступ к свойствам DB2, щелкнув правой кнопкой мыши по блоку данных и нажав «Свойства». См. рисунок 2. Рисунок 2 – Изменение DB2 на стандартный блочный доступ После того, как вы отмените выбор оптимизированных атрибутов блочного доступа, которые вы видите на рисунке 2, и нажмете OK, появится предупреждающее сообщение, см. рисунок 3. Рисунок 3 – Всплывающее окно изменения блочного доступа После того, как вы нажмете OK, ваш DB2 будет преобразован в стандартный блочный доступ. См. рисунок 4. Чтобы увидеть, к чему это привело. Рисунок 4 – DB2 теперь является стандартным блоком Мы можем напрямую увидеть, что DB1 и DB2 больше не одно и то же. Параметр стандартного блочного доступа, представленный в DB2, имеет дополнительный столбец, называемый смещением. Перед каждой переменной в поле смещения написано …, это изменится после компиляции вашей программы. Давайте скомпилируем и посмотрим, что произойдет, см. рисунок 5. Рисунок 5 — Скомпилируйте свою программу, чтобы перезагрузить смещение Теперь смещение заполнено, как вы можете видеть, 0.0, 2.0, 4.0 и 8.0 соответственно. Итак, что это за смещение? Что оно значит? Мы вернемся к этому позже, а сейчас давайте создадим еще один блок STANDARD и объявим те же 4 переменные, но на этот раз мы изменим порядок типов данных переменных, см. рисунок 6. Рисунок 6 — Создадим еще один стандартный блок DB3 Вы видите из последнего рисунка, что смещение DB2 и DB3 отличается, почему значения смещения отличаются, когда мы изменили порядок типов данных? Это те же типы данных, но в другом порядке. Давайте создадим еще один стандартный DB и объявим те же 4 переменные, но снова в другом порядке. Скомпилируйте код ПЛК и теперь сравните смещение 3 БД. Смотрите рисунок 7. Рисунок 7 – Три разных БД с тремя разными смещениями Снова произошло то же самое. Что такое стандартные БД? Что такое смещение? Блоки данных со стандартным доступом имеют фиксированную структуру. Когда вы объявляете переменную внутри стандартного БД, этой переменной будет назначен фиксированный адрес внутри этого БД. Адрес этой переменной отображается в столбце «Смещение». Итак, то, что мы видели внутри смещения на предыдущих рисунках, было адресом, назначенным для каждой переменной. Поскольку структура стандартных БД фиксирована, вы можете работать только внутри БД с фиксированным объемом памяти, это область 16 бит или 2 байта. Это причина разной адресации одних и тех же переменных, когда мы изменили порядок объявления. Для получения дополнительных объяснений см. рисунок 8. Рисунок 8 – Простое представление DB2 На рисунке 8 показано простое представление стандартного блока данных DB2. Как мы уже говорили, стандартная база данных имеет фиксированные блоки памяти по 16 бит, поэтому, когда мы объявляем Variable_1 как тип данных BOOL, эта Variable будет занимать все 16 бит, хотя ей нужна только 1-битная память. Вот почему вы видите оставшуюся область, отмеченную красным, потому что она не используется, но больше не может использоваться. Так что это потерянная память. С Variable_2 тип данных INT требует 16 бит, поэтому он использует 2 целых байта. То же самое с Variable_4, который имеет тип данных WORD. С Variable_3 мы заняли 4 байта, потому что он имеет тип данных REAL. Вот почему смещение для DB2 составляет 0.0, 2.0, 4.0 и 8.0 соответственно. Та же концепция выполняется для DB3 и DB4. Но поскольку порядок типов данных переменных отличается, представление памяти будет отличаться, и, следовательно, смещение будет отличаться. Смотрите рисунки 9 и 10 для DB3 и DB4. Посмотрите, сможете ли вы понять представление на основе предыдущего объяснения. Рисунок 9 – Представление памяти DB3 Рисунок 10 – Представление памяти DB4 Итак, когда вы работаете со стандартной DB, вы должны быть осторожны при объявлении переменных, зная, что будет потеря памяти каждый раз, когда вы определяете новую переменную BOOL. Если вы объявите новую переменную в конце списка DB, смещение расширится, чтобы включить вашу новую переменную. Но если вы объявите новую переменную между старой или в начале DB, произойдет что-то еще. См. рисунок 11. Рисунок 11 – Объявление новой переменной Первое, что вы заметите, это то, что ваше смещение теперь потеряно, и вам придется скомпилировать свой код, чтобы заново установить новое смещение. См. рисунок 12. Рисунок 12 – Повторно установите смещение, перекомпилировав свой код Вы заметили, как теперь изменилась адресация переменных (OFFSET)? Например, смещение тега REAL было 2.0, но после того, как мы добавили новую TestVariable, адресация того же тега REAL (OFFSET) теперь равна 4.0, см. рисунок 13. Рисунок 13 – Изменение смещения после добавления TestVariable Итак, при добавлении новой переменной адресация всех старых переменных была изменена. Это означает, что любая инструкция в вашей программе, которая должна записывать или считывать значение определенной переменной, теперь будет смотреть на назначенный адрес в инструкции, но теперь адрес имеет другие данные, чем ожидалось. Проще говоря, вся ваша логика теперь испорчена. Это приведет к большим проблемам. Не говоря уже о том, что теперь у вас есть дополнительная потерянная память после добавления новой переменной. Смотрите рисунок 14. Рисунок 14 — Добавление инструкции MOVE Давайте добавим инструкцию MOVE для перемещения значения 1 в тег Variable_2. Посмотрите, как адрес вывода MOVE равен %DB2.DBW2. Теперь давайте добавим новую переменную типа INT в DB2. См. рисунок 15. Рисунок 15 – Добавление новой переменной INT При добавлении новой переменной смещение теряется, и ПЛК больше не знает, где находится место назначения OUT1 инструкции MOVE. Нам нужно скомпилировать программу, чтобы перезагрузить новое смещение. См. рисунок 16. Рисунок 16 – Новый адрес OUT1 Вы видите, как теперь изменился адрес OUT1? Теперь это %DB2.DBW4 вместо %DB2.DBW2. Это очень большой недостаток использования стандартных блоков данных. Что такое оптимизированные базы данных? Разница между оптимизированными блоками данных и стандартными блоками данных заключается в том, что переменные внутри оптимизированного блока данных не назначаются фиксированному адресу, а вместо этого переменным дается символическое имя, плюс структура блока данных не фиксируется как у стандартных блоков данных, поэтому нет потери памяти и изменения адресов при объявлении новых тегов. Смотрите рисунок 17. Рисунок 17 — Объявление нового тега в оптимизированных блоках Таким образом, объявление новых тегов в оптимизированных блоках данных не повлияет на остальные теги, поскольку они определяются символическими именами, а не абсолютной адресацией. Оптимизированный блок данных не позволит вам использовать адреса при работе с тегами, определенными внутри него. Смотрите рисунок 18. Рисунок 18 — Абсолютная адресация с оптимизированными блоками Как вы видите на последнем рисунке, абсолютная адресация не допускается с оптимизированным блоком данных, разрешены только символические имена. См. рисунок 19. Рисунок 19 – Использование символических имен с оптимизированными БД Преимущества блоков данных с оптимизированным доступом Блоки данных с оптимизированным доступом не имеют фиксированной определенной структуры. Элементам данных (тегам) назначается только символическое имя, и фиксированный адрес внутри блока не используется. Элементы автоматически сохраняются в доступной области памяти блока, так что в памяти нет пробелов. Это обеспечивает оптимальное использование объема памяти и позволяет избежать потери памяти по сравнению со стандартными БД. Это обеспечивает следующие преимущества: Вы можете создавать блоки данных с любой структурой, не обращая внимания на физическое расположение отдельных тегов. Быстрый доступ к оптимизированным данным всегда доступен, поскольку хранилище данных оптимизировано и управляется системой. Ошибки доступа, например, при косвенной адресации или из HMI, невозможны. Поскольку теперь есть адреса, а только уникальные символические имена для каждого тега. Вы можете определить отдельные теги как сохраняемые. В стандартных БД вы можете определить только весь блок как сохраняемый. Заключение Оптимизированные блоки данных имеют много преимуществ по сравнению со стандартными БД. Использование символических имен помогает избежать любых изменений адресов тегов при добавлении новых переменных в ваш блок. С оптимизированными блоками не теряется ни одна область памяти. В отличие от того, что происходит при использовании стандартных БД. -
Системное и локальное время в ПЛК
caixiaofeng posted A plc and hmi russian article in PLC programming learning
В предыдущих статьях мы говорили о таймерах в ПЛК, различных типах и о том, как их использовать. Таймерам на самом деле не нужно реальное время для работы, так как они просто зависят от подсчета секунд или миллисекунд в зависимости от ваших настроек. Но для некоторых приложений вам нужно знать реальную дату и время программы ПЛК, например, для целей диагностики. В этой статье мы поговорим о системном и локальном времени ПЛК. Содержание: Зачем мне нужно реальное время в ПЛК? Пример программы и моделирования Что такое системное время? Что такое локальное время? Выводы. Зачем мне нужно реальное время в ПЛК? Во многих приложениях ПЛК вам нужно знать реальное время во время выполнения процесса по многим разным причинам. Ниже приведены некоторые из этих причин: Резервное копирование ПЛК на главный сервер. Для диагностики ПЛК вам необходимо иметь запись времени для диагностики, чтобы знать, в какое время произошло определенное событие, в противном случае диагностическая информация будет не очень полезной. Для приложений, где вам необходимо работать с прерываниями времени суток OB10, вам необходимо знать фактическое время. Вам может потребоваться использовать локальное или системное время в тех частях вашей логики, где вам необходимо обрабатывать приложения реального времени. Для регистрации данных, если у вас есть важные данные для сохранения и вам нужна метка времени для каждой записи данных, вам необходимо иметь правильную настройку времени для вашего ПЛК, чтобы сохраненные данные имели смысл. Пример программы и моделирования ПЛК Чтобы лучше понять, что такое системное и локальное время в ПЛК, мы начнем с создания очень простой программы и используем ее для объяснения концепции реального времени внутри ПЛК. Проверьте следующий шаг: В этой статье мы не будем создавать никакой логики ПЛК, но покажем некоторые конфигурации, связанные с системным и локальным временем в ПЛК, как их устанавливать и в чем различия. Откройте Siemens Tia Portal, добавьте новое устройство, и на этот раз мы будем использовать CPU 1512C-1 PN. Смотрите рисунок 1. Рисунок 1 — Добавить новый ПЛК Скомпилируйте и запустите новую симуляцию ПЛК. Откройте страницу онлайн и диагностики и проверьте установленное время ПЛК. Смотрите рисунок 2. Рисунок 2 — Онлайн время ПЛК Из предыдущего рисунка вы можете видеть, что есть два разных времени: Время PG/PC — это локальное время вашего ПК. Время модуля — это фактическое время внутри самого ПЛК. Оба эти времени могут быть установлены как одно и то же значение, или они могут быть разными. лучше всего сделать их одинаковыми, лучше сделать модульное время похожим на ваше местное время или, точнее, похожим на местное время области, где будет использоваться ПЛК. Смотрите рисунок 3. Рисунок 3 — Установка времени ПЛК Если вы хотите, чтобы модульное время совпадало с местным временем, выберите Take from PG/PC и нажмите Apply. В вашем основном OB1 перетащите инструкции RD_SYS_T и RD_LOC_T. Это инструкции чтения системного времени и чтения локального времени. Эти инструкции являются встроенными функциями FC внутри ПЛК и используются для записи локального времени и системного времени ПЛК в любое место назначения, которое вы выберете в выводе OUT инструкции. Смотрите рисунок 4. Рисунок 4 — Добавление инструкций чтения системного и локального времени Добавьте новый глобальный блок данных и определите несколько тегов для работы. См. рисунок 5. Рисунок 5 – Создание нового глобального блока данных Запустите моделирование еще раз и проверьте оба времени. См. рисунок 6 Рисунок 6 – Локальное и системное время ПЛК в режиме онлайн Из предыдущего рисунка видно, что локальное и системное время ПЛК совпадают, но они отличаются от фактического локального времени вашего ПК. Если вы помните, мы установили модульное время ПЛК таким образом, чтобы оно было похоже на время PG/PC, которое является вашим локальным временем. См. рисунок 7. Рисунок 7 – Модульное время и время PG/PC Как вы видите, на странице установки времени выбрано время модуля, которое будет взято из времени PG/PC. Но в реальных случаях они отличаются. Почему? Почему время отличается? Поскольку настройка по умолчанию местного времени ПЛК — UTC+0 или время Зулу, если вам знаком этот термин, вы не меняете его на странице онлайн-диагностики, а скорее в свойствах самого ПЛК. Смотрите рисунок 8. Рисунок 8 — Конфигурация времени суток в ПЛК Как вы можете видеть, настройка по умолчанию времени суток ПЛК установлена на время UTC+0, и именно поэтому время модуля ПЛК отличалось от вашего фактического местного времени. За исключением случая, если бы вы были в Лондоне, тогда вы бы не столкнулись с этой проблемой. Чтобы исправить локальное время ПЛК, нам нужно изменить его в конфигурации, нам нужно изменить часовой пояс на тот часовой пояс, который у нас есть, который в моем случае UTC+02:00. Смотрите рисунок 9. Рисунок 9 — Настройка локального времени ПЛК на ваш часовой пояс Вы также можете видеть, что опция летнего времени была деактивирована, поскольку она не используется в моей стране. Вам придется активировать ее, если она используется в вашем регионе. Теперь, когда все конфигурации установлены правильно, вернитесь и снова посмотрите местное время и системное время в симуляции. Смотрите рисунок 10. Рисунок 10 – Местное время ПЛК теперь такое же, как на ПК Теперь вы видите, что после настройки часового пояса ПЛК местное время ПЛК и фактическое местное время вашего региона совпадают. Как мы уже говорили, очень важно установить правильное местное время ПЛК по многим причинам, которые мы упомянули выше. Теперь вы можете определить, что такое системное время и локальное время ПЛК? Системное время в ПЛК Является ли модульным временем часов ЦП. Часы ЦП интерпретируют модульное время как всемирное координированное время (UTC). Соответственно, модульное время всегда хранится без факторов «местный часовой пояс» или «летнее время» в часах ЦП. Затем часы ЦП вычисляют локальное время часов ЦП на основе модульного времени. Модульное время часов ЦП используется в качестве шаблона для всех временных процессов, начинающихся с ЦП. Примеры использования: Вычисление локального времени часов ЦП на основе модульного времени Представление модульного времени в локальном времени в разделе «Онлайн и диагностика» Записи в диагностическом буфере ЦП Местное время в ПЛК Информация о часовом поясе и начале летнего и стандартного времени, которую вы установили в конфигурации часов ЦП, используется для вывода локального времени. Местное время — это время, которое у вас установлено на ПК или в вашей стране, и которое будет отличаться в разных регионах. Заключение Многие приложения потребуют, чтобы ПЛК знал реальное или локальное время процесса, чтобы он мог выполнять определенные задачи, например, задачи регистрации данных и диагностики. В будущей статье мы покажем некоторые приложения, где для вашей логики необходимо реальное время Локальное время ПЛК следует настроить вручную, чтобы оно соответствовало области, где будет использоваться ПЛК. -
SIEMENS-RU OB1 – Основной циклический организационный блок в TIA Portal
caixiaofeng posted A plc and hmi russian article in PLC programming learning
В предыдущих статьях мы обсуждали различные типы блоков в SIEMENS TIA Portal, мы говорили о функциональных блоках FB, функциях FC и блоках данных DB. В этой статье мы рассмотрим другой тип блока в ПЛК SIEMENS, это организационные блоки, и в этой статье мы обсудим самый важный организационный блок из всех, который является основным организационным блоком или OB1. Содержание: Что такое организационные блоки? Различные типы OB. Что такое OB1? Мониторинг времени цикла. Простой пример программы. Заключение. Что такое организационный блок (OB)? Организационные блоки, вы можете думать о них как о функциях FC или функциональных блоках FB. Но разница в том, что вы не вызываете их, операционная система ПЛК вызывает эти организационные блоки, независимо от того, вызывает ли операционная система OB циклически как OB1 или он вызывается при возникновении определенного события, в любом случае операционная система позаботится об этом. Вам нужно только создать блок и добавить любую логику, которую вы хотите, внутри блока. Иногда вам даже не нужно добавлять какой-либо код внутри OB, простое создание самого OB может дать много преимуществ, которые мы увидим при обсуждении некоторых из этих OB. Организационные блоки являются интерфейсом между операционной системой ПЛК и пользовательской программой. Любой ПЛК будет иметь две разные программы: исполняемую программу, которая является операционной системой ПЛК, и пользовательскую программу, которая является логикой или кодом, который программист ПЛК напишет для управления определенным процессом. Эти два разных программного обеспечения должны общаться друг с другом, и организационные блоки OB — это то, как это делается. Организационные блоки OB используются для выполнения множества задач, некоторые из которых перечислены ниже: Характеристики запуска системы автоматизации Циклическая обработка программ Выполнение программ, управляемых прерываниями Обработка ошибок. Различные типы организационных блоков Поскольку организационные блоки в основном являются инструментами операционной системы для выполнения множества задач. Различные задачи требуют разных OB, и именно поэтому у вас есть много разных OB внутри ПЛК, количество разных OB будет зависеть от типа используемого вами ПЛК, но вот некоторые из наиболее распространенных OB, которые вы можете найти почти во всех ПЛК SIEMENS: Главный циклический OB1. OB прерываний по времени. OB времени суток. OB ошибок программного обеспечения. OB ошибок оборудования Многие другие организационные блоки доступны для использования с вашей логикой. См. рисунок 1. Рисунок 1 – Различные организационные блоки, доступные в TIA Portal В этой статье мы обсудим самый важный организационный блок из всех, а именно главный циклический прерыватель OB1. Главный циклический прерыватель OB1 Главный циклический OB1 – это организационный блок, который отвечает за циклическое выполнение вашей логики ПЛК. Всякий раз, когда вы создаете новый проект и добавляете ПЛК, главный OB1 будет автоматически создан программным обеспечением. Это минимально необходимые блоки для кода ПЛК. См. рисунок 2. Рисунок 2 – главный OB1 создается автоматически Внутри главного OB1 вы можете либо написать всю свою программу ПЛК, если это небольшой проект. Если ваш проект довольно большой, то у вас, вероятно, есть некоторые функции FC функциональных блоков FB, которые вам нужно выполнить. В этом случае вы будете использовать главный OB1 для их вызова. Конечно, вам не нужно вызывать каждый FC или FB с помощью OB1, но если ваш OB1 не является первым блоком ваших вложенных вызовов, то он не будет выполнен. Смотрите рисунок 3. Рисунок 3 — Вызов ваших блоков с помощью OB1 Основой вашего кода ПЛК является циклическое поведение, то есть вам нужно, чтобы ваш код выполнялся непрерывно. Когда обработка вашей логики завершена, операционная система начинает обрабатывать ее снова. Это делается с помощью главного OB1, вы помещаете и вызываете всю вашу логику и код внутри этого OB1, и операционная система будет обеспечивать его непрерывное выполнение. Вы должны знать, что даже если вы не можете создать блок OB1, поскольку он автоматически создается при добавлении нового ПЛК, вы можете создать более одного блока циклических прерываний. OB1 — это циклическое прерывание, которое операционная система будет автоматически и непрерывно вызывать и выполнять любую логику внутри. Однако для больших проектов ПЛК, где в логике ПЛК так много функций и функциональных блоков, вы можете использовать более одного OB циклического прерывания, чтобы лучше структурировать свой код и сделать его более удобным для чтения и понимания. В этом случае вы создадите еще одно циклическое прерывание, см. рисунок 4. Рисунок 4 — Создание более одного циклического OB Когда вы создали несколько OB программного цикла, они вызываются один за другим в порядке их номеров OB. OB программного цикла с наименьшим номером OB вызывается первым. См. рисунок 5. Рисунок 5 — Программный цикл с более чем одним циклическим OB После завершения циклической программы операционная система обновляет образы процессов следующим образом: Он записывает значения из выходного образа процесса в выходные модули. Он считывает входные данные из входных модулей и передает их на входной образ процесса. Предыдущие два шага плюс выполнение программы ПЛК называются циклом сканирования. См. рисунок 6. Рисунок 6 – Цикл сканирования ПЛК Siemens Мониторинг времени цикла Время цикла относится к времени выполнения циклической программы, включая время выполнения всех вложенных частей программы, таких как FC, FB и OB с более высоким приоритетом. Если вы создали несколько OB программного цикла, каждый OB программного цикла вносит свой вклад во время цикла. Операционная система отслеживает, остается ли время цикла меньше настроенного максимального времени цикла. Если оно превышает максимальное время цикла, ПЛК либо перейдет в режим STOP, либо вызовет OB80 в зависимости от вашего программирования. Помимо мониторинга максимального времени цикла, также можно гарантировать минимальное время цикла. Для этого операционная система откладывает начало нового цикла до тех пор, пока не будет достигнуто минимальное время цикла. Вы можете настроить минимальное и максимальное время цикла в свойствах конфигурации вашего ПЛК. Смотрите рисунок 7. Фото 7 – Настройка минимального и максимального времени цикла Простой пример программы в ПЛК Фото 8 – Пример программы ПЛК Чтобы лучше понять цикл программы ПЛК и выполнение OB1, давайте создадим простую программу. Эта программа будет использовать инструкцию сложения, которая будет накапливать значение 1 в области памяти каждый 1 цикл сканирования. Смотрите следующую симуляцию. Как вы видите из анимации, инструкция сложения выполняется очень быстро; это то, насколько быстро выполняется цикл сканирования. Это будет зависеть от мощности вашего ПЛК. Но в основном цикл сканирования находится в диапазоне миллисекунд. Заключение Организационные блоки — это интерфейс между операционной системой ПЛК и вашей программой управления. Основной циклический OB1 циклически выполняется операционной системой. Вы будете выполнять свою логику, включив ее в один или несколько циклических OB. Время цикла сканирования — это время, используемое для выполнения вашей логики 1 раз. -
SIEMENS-RU Tia Portal – Организационный блок прерывания по времени суток OB10
leigehong posted A plc and hmi russian article in PLC programming learning
В предыдущей статье мы обсуждали, что такое организационный блок, и говорили об одном очень важном организационном блоке, которым является основной OB1. В этой статье мы продолжим обсуждение различных OB, и на этот раз мы поговорим об организационных блоках прерывания по времени суток или OB10. Содержание: Что такое прерывание по времени суток OB10? Как создать и использовать OB10? Простой пример программы. Важные правила для прерываний по времени суток. Выводы. Что такое прерывание по времени суток (OB10)? Как следует из названия, прерывание по времени суток — это организационный блок, который прерывает выполнение основного цикла вашей программы ПЛК в определенное время суток. Это время прерывания (дата и время) может быть указано как происходящее один раз в указанное время или периодически через указанные интервалы времени, например, каждую минуту, час, день, неделю и некоторые другие параметры. В одной программе может быть несколько прерываний по времени суток, они не обязательно должны иметь одинаковую логику или код, каждое из них может иметь свою собственную функциональность, а также каждое из них может быть настроено отдельно для возникновения в указанное время. Как создать и использовать OB10? Чтобы создать прерывание по времени суток, выполните те же шаги, которые вы бы сделали, если бы вам нужно было добавить любой новый блок в вашу логику. Смотрите рисунок 1. Рисунок 1 — Добавление прерывания по времени суток Нажмите опцию Добавить новый блок в дереве проекта слева, выберите организационный блок, а затем выберите прерывание по времени суток, как показано на предыдущем рисунке. Теперь вы можете открыть OB10 и добавить любую логику ПЛК, которую вы хотите выполнить при вызове этого блока, под вызовом мы подразумеваем, что произошло событие прерывания или время, и поэтому операционная система прервет основной цикл и выполнит OB10. Мы напишем очень простой код в OB10, чтобы лучше понять, как работает этот блок OB10. В этой логике мы использовали инструкцию add для добавления значения 1 в область памяти, которую мы назвали TimeOfDayInterruptCounter, а затем поместили результат суммирования обратно в ту же область. Таким образом, у нас может быть счетчик для выполнения OB10. Каждый раз, когда OB10 будет вызываться и выполняться, значение TimeOfDayInterruptCounter будет увеличиваться на 1. Смотрите рисунок 2. Рисунок 2 — Добавьте свою логику в OB10 Теперь, когда мы создали OB10 и написали некоторую логику внутри, нам нужно настроить установленное время OB10 и то, сколько раз мы хотим, чтобы он прерывал наш основной цикл. Чтобы настроить время и интервал OB10, нам нужно перейти на страницу свойств OB10. См. рисунок 3. Фото 3 – Свойства OB10 В свойствах OB10 вы найдете множество настроек и атрибутов, которые можно настроить. Теперь нам нужна страница прерывания по времени суток, чтобы мы могли настроить, когда и сколько раз будет вызываться OB10. См. рисунок 4. Фото 4 – Настройка прерывания по времени суток Как видно из последнего рисунка, вы можете установить выполнение OB10, дату начала и время суток, в которое должен выполняться OB10. Для симуляции мы сделали интервал выполнения равным каждой минуте, чтобы каждую минуту OB10 вызывался и выполнялся. Это означает, что начиная с даты 23.03.2023 и времени 09:25 утра значение TimeOfDayInterruptCounter будет увеличиваться на 1 каждую минуту. У вас есть возможность установить время в соответствии с системным временем ПЛК или местным временем, как вы видите на последней картинке. В предыдущей статье мы говорили о системном и местном времени ПЛК, о том, что означает каждое время, и о том, как их настроить и использовать. Как мы уже говорили ранее, местное время — это время, которое вы видите сейчас на своем ПК. Таким образом, это фактическое время региона, в котором будет использоваться ПЛК. Вам необходимо настроить местное время для ПЛК в зависимости от того, где он будет использоваться. См. картинку 5. Рисунок 5 — Установка местного времени для ПЛК Простой пример программы ПЛК Мы добавили прерывание по времени суток OB10 в нашу программу ПЛК и настроили его так, чтобы оно выполнялось каждую минуту. Мы также настроили локальное время ПЛК. Мы создали простую логику инструкции ADD для накопления значения TimeOfDayInterruptCounter на 1 каждый раз, когда выполняется OB10. Мы добавим еще одну инструкцию, но в основном OB1 эта инструкция — RD_LOC_T или чтение локального времени, поэтому мы можем видеть, как изменяется локальное время, и сравнивать его с выполнением OB10. Смотрите рисунок 6. Фото 6 — Простой пример программы Скомпилируйте программу ПЛК и запустите новую симуляцию. Обратите внимание, что мы установим время возникновения прерывания дня, чтобы OB10 можно было вызвать и выполнить, пока мы симуляцию логики ПЛК. Смотрите следующую симуляцию. Как вы видите из анимации, значение TimeOfDayInterruptCounter в начале равно нулю, а затем оно будет увеличиваться на 1 каждую минуту, начиная с 09:25 утра, указывая, что OB10 выполняется каждую минуту. Важные правила для прерываний по времени суток Если вы устанавливаете прерывание по времени таким образом, что соответствующий OB должен быть обработан один раз, время начала не должно быть в прошлом (относительно часов реального времени ЦП). Если вы устанавливаете прерывание по времени таким образом, что соответствующий OB должен быть обработан периодически, но время начала находится в прошлом, то OB прерывания по времени обрабатывается в следующий раз, когда он должен быть выполнен в соответствии с текущим временем. Дата периодических прерываний по времени должна соответствовать реальной дате. Например, ежемесячное повторение OB прерывания по времени с датой начала 1/31 невозможно. В этом случае OB запускается только в месяцы, в которых 31 день. Временное прерывание, активированное во время запуска, не выполняется до тех пор, пока запуск не будет завершен. Запуск удаляет все временные прерывания, которые были установлены и активированы инструкцией в пользовательской программе. Заключение OB10 — это организационный блок, который можно настроить для прерывания цикла вашей программы в определенный день и время. Это прерывание может происходить либо один раз, либо периодически через определенное количество времени. Нет конкретной причины, по которой вам может понадобиться OB10, поскольку это зависит от вашего процесса и вашей логики. И да, вы можете достичь той же функциональности, используя свой личный код, но это доступная и простая в использовании встроенная функция. И вы знаете, как ею пользоваться. -
SIEMENS-RU Tia Portal – Организационный блок прерывания с задержкой OB20
leigehong posted A plc and hmi russian article in PLC programming learning
В предыдущих статьях мы обсуждали, что такое организационный блок, и говорили о главном циклическом прерывании OB1 и прерывании по времени суток OB10. В этой статье мы продолжим обсуждение различных OB, и на этот раз мы поговорим об организационном блоке прерывания с задержкой или OB20. Содержание: Что такое OB20? Как вызвать OB20? Параметры инструкции SRT_DINT. Пример программы. Заключение. Что такое прерывание с задержкой (OB20)? OB20 — это организационный блок, который вызывается и выполняется операционной системой, но мы должны сообщить операционной системе, когда вызывать этот OB20. Операционная система получает информацию из пользовательской программы ПЛК для вызова этого OB20, она будет ждать настроенного времени задержки, а затем вызовет и выполнит любую логику внутри OB20. Мы создаем блок OB20 из Add a new block в дереве проекта. См. рисунок 1. Рисунок 1 – Создание нового блока OB20 Теперь, когда я создал прерывание с задержкой, когда оно будет выполнено? И как настроить задержку выполнения блока? Опять же, OB20 является организационным блоком, что означает, что вы не вызываете блок для выполнения, но сообщаете операционной системе, когда она может вызвать его и выполнить любую функциональность, написанную внутри. Как сообщить операционной системе вызвать OB20? Чтобы сообщить операционной системе, что мы хотим вызвать OB20, мы используем SRT_DINT или прерывание задержки запуска, см. рисунок 2. Рисунок 2 – Инструкция задержки запуска Параметры инструкции SRT_DINT Как видно из последнего рисунка, вы можете использовать инструкцию SRT_DINT для вызова OB20. но вам нужно настроить некоторые параметры, чтобы инструкция работала. EN: инструкция не будет выполнена, пока на входе EN не будет представлен отрицательный фронт сигнала. Это означает, что вам нужно назначить условие из набора условий для включения сигнала, и инструкция будет работать только тогда, когда это условие истинно, а затем снова ложно. OB_NR: вы назначаете номер прерывания задержки, которое вам нужно вызвать, в нашем случае 20, поскольку мы создали OB20, но мы можем создать более одного прерывания задержки, и тогда нам придется вызывать каждое из них с помощью отдельной инструкции SRT_DINT. DTIME: это время задержки, которое вы хотите выждать перед выполнением OB20, мы установим это время на 5 секунд для симуляции. SIGN: Идентификатор, который появляется, когда прерывание с задержкой по времени OB вызывается в информации о событии запуска OB. Пример программы ПЛК Чтобы лучше понять OB20, мы создадим простую логику, чтобы увидеть, как OB20 может быть вызван и выполнен. Мы построим этот пример ПЛК на предыдущей логике, которую мы сделали для OB1 и OB10 в предыдущих статьях. Внутри OB20 мы создадим логику, которая подсчитывает, сколько циклов OB1 было вызвано и выполнено в течение 5 секунд задержки, которую мы настроили для OB20. См. рисунок 3. Рисунок 3 – Логика внутри OB20 На последнем рисунке вы видите, что мы использовали инструкцию MOVE для передачи информации о количестве циклов в начале вызова OB20 и после его выполнения. См. рисунок 4 для остальной части логики. Рисунок 4 – Рассчитайте, сколько циклов выполняется за 5 секунд После этого мы вычтем два значения количества циклов, чтобы получить, сколько циклов было выполнено за пятисекундную задержку. Теперь, когда мы создали нужную нам логику, как мы можем вызвать OB20? Как объяснялось ранее, мы должны использовать инструкцию SRT_DINT. Мы будем использовать эту инструкцию внутри OB10, который мы настроили ранее для выполнения каждую минуту. Это означает, что OB20 также будет вызываться и выполняться каждую минуту, но с задержкой в 5 секунд. В предыдущей статье мы построили логику, которая определяет, сколько раз вызывается и выполняется OB1, мы также построили другую логику, которая будет вызывать OB10 каждую минуту. В этом примере мы будем использовать вызов OB10 для вызова OB20. Смотрите рисунок 5. Рисунок 5 – Вызов OB20 через OB10 Ранее мы говорили, что SRT_DINT нужен отрицательный фронт сигнала на EN для начала вызова. Вот почему мы использовали сигнал TimeOfDayInterruptEnabled, который, как мы знаем, будет истинным при выполнении OB10, а затем вернется к ложному, давая нам нужный нам фронт сигнала. Теперь, когда вся логика ПЛК завершена, давайте скомпилируем и запустим новую симуляцию. Смотрите следующую симуляцию нашего проекта. Видите ли, в анимации сначала значения счетчиков циклов равны нулю, но когда вызывается OB10 и TimeOfDayInterruptEnabled имеет значение true, логика будет ждать 5 секунд, а затем значения счетчиков будут обновлены счетчиками циклов. Вывод OB20 — это организационный блок, вызываемый и выполняемый операционной системой. Мы можем указать операционной системе вызвать OB20 с помощью инструкции SRT_DINT. -
Tia Portal – OB30 Циклический блок прерываний
leigehong posted A plc and hmi russian article in PLC programming learning
В предыдущих статьях мы обсуждали различные типы организационных блоков, например, основной OB1, который является основным циклическим блоком программы, в этой статье мы рассмотрим другой циклический организационный блок. OB30 или циклическое прерывание OB. Содержание: Что такое циклическое прерывание OB30? Что такое основной цикл OB1? Зачем мне нужен OB30? Как настроить циклические прерывания? Что делать, если у меня есть более одного циклического прерывания? Заключение. Что такое циклическое прерывание OB30? Циклическое прерывание OB30 — это организационный блок, который вызывается и выполняется через заданные и точные интервалы времени, в отличие от основного циклического OB1, который постоянно вызывается и выполняется, циклическое прерывание будет вызываться через интервалы времени, которые вы должны настроить при создании циклического прерывания OB. Например, если я создал OB30 с временным интервалом _также называемым временем цикла_ в 20 мс, это означает, что операционная система будет прерывать основной цикл OB1 и вызывать OB30 каждые 20 мс. Вы должны убедиться, что время выполнения циклического прерывания OB должно быть меньше его временного интервала. В противном случае все равно может случиться, что следующий вызов OB30 поступит, пока этот вызов OB30 все еще выполняется. В этом случае операционная система генерирует ошибку времени, которая может привести к переходу ПЛК в режим STOP. Что такое основной цикл OB1? Основной циклический OB1 — это организационный блок, который отвечает за циклическое выполнение вашей логики ПЛК. Всякий раз, когда вы создаете новый проект и добавляете ПЛК, основной OB1 будет автоматически создан программным обеспечением. Основой вашего кода ПЛК является циклическое поведение, то есть вам нужно, чтобы ваш код выполнялся непрерывно. Когда обработка вашей логики завершена, операционная система начинает ее обработку снова. Это делается с помощью основного OB1, вы помещаете и вызываете всю свою логику и код внутри этого OB1, и операционная система будет следить за тем, чтобы он непрерывно выполнялся. Время цикла основного OB1 относится к времени выполнения циклической программы, включая время выполнения всех вложенных частей программы, таких как FC, FB и OB с более высоким приоритетом. Если вы создали несколько OB цикла программы, каждый OB цикла программы вносит свой вклад во время цикла. Операционная система отслеживает, остается ли время цикла меньше настроенного максимального времени цикла. Если оно превышает максимальное время цикла, ПЛК либо перейдет в режим STOP, либо вызовет OB80 в зависимости от вашей программы. Зачем мне нужен OB30? Кто-то может возразить, что я могу поместить любую функциональность внутрь OB30 в основном OB1 и попытаться обойтись без этого в зависимости от очень высокой производительности большинства современных ПЛК. Иногда это может быть нормально, но не всегда. В зависимости от производительности вашего ПЛК, время основного цикла может быть где-то между 1 и 150 мс; оно может быть разным, но это стандартная конфигурация, это время цикла зависит от многих факторов, таких как размер вашей программы ПЛК и прерывания внутри вашей логики и других факторов, которые, скорее всего, сделают время выполнения вашего цикла нестабильным. Теперь, если вам нужно выполнять определенную функциональность точно каждые 10 мс, а не 9 мс и не 11 мс. Теперь вы не можете зависеть от основного OB1, так как результат может быть не таким, как хотелось бы. В этом случае вы используете циклическое прерывание OB30, вы настраиваете его на нужные вам 10 мс, и операционная система будет вызывать и выполнять эту функцию точно каждые 10 мс. Вот почему это называется прерыванием; потому что оно прерывает выполнение основного OB1 для вызова и выполнения вашего OB30. Примеры функциональности, для которой требуется OB30 Обработка ПИД-регулятора. Мониторинг цепей безопасности. Мониторинг связи между машинами. Во всех предыдущих примерах необходимо постоянно контролировать и проверять параметры в определенные моменты времени, поскольку они относятся к реальным физическим величинам или безопасности машины. Выполнение таких функций не должно задерживаться, поскольку они влияют на безопасность и непрерывность вашего процесса. Как настроить циклические прерывания? При создании циклического прерывания необходимо настроить некоторые параметры. См. рисунок 1 для добавления нового OB30. Рисунок 1 – Добавление нового циклического прерывания OB30 При создании циклического прерывания можно найти множество параметров, которые можно задать в свойствах блока, см. рисунок 2. Рисунок 2 – Свойства OB30 Самые важные параметры, которые необходимо учитывать, следующие: Время цикла Используйте параметр «Время цикла», чтобы задать период времени между двумя вызовами циклического прерывания OB. Он является целым числом, кратным 1 мкс. Смещение фазы Здесь вы устанавливаете период времени, на который смещаются начальные времена по сравнению с кратным времени цикла. Смотрите рисунок 3 для настройки времени цикла и смещения фазы. Рисунок 3 – Установка времени цикла и смещения OB30 Приоритет циклического прерывания OB Это еще один важный параметр, который необходимо учитывать при настройке циклического прерывания, поскольку у вас может быть более одного циклического блока, если в случае, если два разных OB должны быть вызваны одновременно, операционная система вызовет и выполнит блок с более высоким номером приоритета. Вы должны знать, что основной программный цикл ПЛК OB1 имеет номер приоритета 1, что является самым низким уровнем приоритета, который может иметь блок. Вот почему OB1 может быть прерван любым другим вызовом блока. См. рисунок 4. Рисунок 4 — Установка приоритета OB30 Что делать, если у меня более одного циклического прерывания? Нередко в вашей логике будет более одного циклического прерывания. Если в вашей логике ПЛК есть два ПИД-регулятора, то вам может потребоваться два циклических прерывания для обработки каждого ПИД. В этом случае вам нужно убедиться, что вызов и выполнение различных циклических прерываний не будут перекрываться. Например, если у вас есть OB30 с интервалом цикла 5 мс и OB31 с интервалом цикла 10 мс, это означает, что второй вызов OB30 также будет временем вызова OB31. Это может привести к логическим ошибкам, даже если вы установите приоритет одного из них выше, чем другого, это испортит ваше время цикла для блока с более низким приоритетом. См. рисунок 5. Рисунок 5 – Перекрытие вызова различных циклических прерываний В этом случае может быть целесообразным смещение фазы, когда вы используете несколько OB циклических прерываний. Если их времена цикла имеют общие кратные, вы можете использовать смещение фазы, чтобы предотвратить одновременное время запуска. См. рисунок 6. Рисунок 6 – Смещение между различными вызовами OB Таким образом, чтобы избежать этого перекрытия, мы установим время смещения OB31 равным 1 мс. Это означает, что подсчет для временного интервала OB31 будет смещен на 1 мс относительно времени начала OB30. См. рисунок 7. Рисунок 7 – Настройка смещения OB31 Заключение Циклические прерывания очень полезны для задач, критичных по времени, которые не должны сталкиваться с какими-либо задержками. В вашей логике может быть более одного циклического прерывания. Используйте настройку смещения циклических прерываний, чтобы избежать одновременного времени начала. Используйте настройку приоритета, чтобы контролировать порядок выполнения различных циклических прерываний. -
SIEMENS-RU Сименс ПЛК Tia Portal – OB100 Организационный блок запуска
leigehong posted A plc and hmi russian article in PLC programming learning
В предыдущих статьях мы начали обсуждать различные организационные блоки ПЛК TIA Portal, мы говорили о том, что такое OB, и мы обсудили некоторые OB, такие как OB1- Main cyclic, OB10 и OB20, прерывания с задержкой по времени и времени соответственно. В этой статье мы поговорим о OB100 или организационном блоке запуска в Сименс Tia Portal. Содержание: Что такое OB100? Зачем нужен OB100? Важные замечания во время запуска. Простой пример программы. Что такое организационный блок запуска (OB100)? OB100 или OB запуска — это организационный блок, который вызывается и выполняется операционной системой один раз при запуске ПЛК, то есть один раз при каждом переходе из режима STOP в режим RUN. Основной цикл OB1 не будет вызываться и выполняться, пока не будут выполнены все функции запуска внутри OB100. В вашей логике ПЛК может быть более одного OB запуска, если это произойдет, то операционная система вызовет и выполнит их все один за другим, начиная с меньшего номера OB к большему номеру. То есть, если у вас есть OB100 и OB123, то OB100 будет вызван и выполнен первым, а затем OB123. После выполнения OB100 операционная система прочитает входные модули в PII и запустит основную программу цикла OB1. Зачем нужен OB100? Вы используете OB100 для множества задач, которые вы можете захотеть или должны выполнить перед запуском циклической логики, по следующим причинам: Инициализация переменных. Сброс системных модулей. Повторная калибровка датчиков/исполнительных механизмов. Проверка наличия аварийных сигналов и условий безопасности перед запуском процесса. Даже если вы не создали OB запуска для своей логики, у операционной системы все еще есть много задач, которые ей необходимо выполнить перед запуском вашей основной логики, вот некоторые из этих задач: Очистка не сохраняемой памяти Очистка PIQ Вызов и выполнение OB запуска, если таковые имеются. Обновление PII Включение выходов после перехода в режим RUN. Вы заметили, что последняя задача процедуры запуска — включение выходов? Вот почему первым шагом выполнения основной циклической программы OB1 является запись PIQ в выходной модуль. Важные замечания во время запуска Обратите внимание на следующие моменты относительно режима «STARTUP»: Выходы на модулях отключены. Инициализируется образ процесса. Образ процесса не обновляется. Чтобы прочитать текущее состояние с входов во время «STARTUP», вы можете получить доступ к входам через прямой доступ ввода-вывода. Чтобы инициализировать выходы во время STARTUP, значения можно записать через образ процесса или через прямой доступ ввода-вывода. Значения выводятся на выходах во время перехода в режим «RUN». Инициализируются несохраняемые битовые памяти, таймеры и счетчики. Инициализируются несохраняемые теги в блоках данных. Во время запуска мониторинг времени цикла еще не запущен. Простой пример программы В этом примере мы добавим стартовый OB100 в нашу логику ПЛК и посмотрим, сколько раз выполняется OB100. См. рисунок 1 для добавления нового OB100. Рисунок 1 — Добавление OB100 Как видно из последнего рисунка, вы добавляете стартовые организационные блоки так же, как мы добавляем функцию функционального блока. Внутри только что созданного OB100 мы добавим простую инструкцию ADD, чтобы накапливать, сколько раз вызывается и выполняется OB100. См. рисунок 2. Рисунок 2 – Накопление времени выполнения OB100 Теперь скомпилируйте и запустите свою программу и посмотрите, что произойдет. Посмотрите следующую анимацию для моделирования программы ПЛК. Анимация 1 Как вы можете видеть из приведенной выше анимации, OB100CycleCounter равен 1 и не меняется, когда режим ПЛК переходит из режима STOP в режим RUN. Ну, он меняется, но вы не видите этого изменения. Каждый раз, когда ПЛК переходит в режим STOP, а затем снова в режим RUN. Счетчик будет сброшен на ноль, а затем снова на 1 после выполнения OB100. Вы также можете увидеть, как изменяется основной счетчик циклов OB1, и ПЛК останавливается, а затем снова запускается, OB1CycleCounter снова начнет накапливать данные. Чтобы увидеть изменение в счетчике запуска, нам нужно сохранить значение памяти тега. Смотрите рисунок 3. Рисунок 3 – Сохранение памяти тега OB100CycleCounter После того, как мы сохранили тег OB100CycleCounter, теперь снова запустите симуляцию ПЛК и посмотрите, что произойдет. Смотрите анимацию симуляции 2. Анимация 2 Теперь вы видите из вышеприведенной анимации, что счетчик запуска увеличивается каждый раз, когда я останавливаю ПЛК, а затем снова запускаю его. Поскольку память тега теперь сохраняется, значение не будет сброшено до нуля, и именно поэтому вы видите, что значение OB100CycleCounter накапливается. Теперь мне нужно добавить дополнительную функциональность в мою логику запуска ПЛК, которая заключается в том, чтобы знать, когда был последний запуск ПЛК. Мы достигнем этого с помощью простой логики, где я считываю локальное время ПЛК при запуске и перемещаю дату и время в определенную область памяти. Смотрите рисунок 4. Рисунок 4 – Чтение локального времени при запуске После добавления логики скомпилируйте и снова запустите симуляцию. Смотрите анимацию симуляции ПЛК 3. Анимация 3 Из анимации выше видно, что каждый раз при запуске ПЛК дата и время запуска будут записаны в назначенную нами область памяти. Так что теперь у меня есть информация о том, сколько раз запускался мой ПЛК и когда был последний запуск. Заключение OB запуска очень важны, если вы хотите оценить некоторые функции перед запуском вашего циклического процесса. Вы можете использовать OB запуска для инициализации параметров, калибровки датчиков и даже проверки условий безопасности перед запуском вашего процесса. -
SIEMENS-RU Tia Portal – OB121 Ошибки программирования Прерывание Организационный блок
leigehong posted A plc and hmi russian article in PLC programming learning
В этой статье мы продолжаем обсуждение различных типов организационных блоков в ПЛК Siemens. На этот раз мы рассмотрим OB121 или прерывание ошибок программирования в портале Tia. Содержание: Что такое прерывание ошибок программирования OB121? Примеры ошибок программирования. Что произойдет, если будет обнаружена ошибка программирования? Моделирование ошибки программирования в TIA Portal. Как OB121 может быть полезен против ошибок программирования? Выводы. Что такое прерывание ошибок программирования (OB121)? OB121 — это организационный блок, который будет вызван операционной системой ПЛК, если во время выполнения вашей логики возникнет ошибка программирования. Обратите внимание, что мы не говорим об ошибке программирования, которая будет обнаружена компилятором при попытке загрузить вашу логику в ПЛК. См. рисунок 1. Рисунок 1 – Некоторые ошибки программирования будут обнаружены компилятором Как вы видите на последнем рисунке, в моей логике ПЛК есть ошибка программирования; некоторые операнды отсутствуют на входе и выходе сети 1. Но эта ошибка была обнаружена компилятором еще до загрузки логики в ПЛК. Ошибка на рисунке 1 не является типом ошибки программирования, которая может вызвать необходимость вызова OB121. Ошибки в вашей программе ПЛК, которые не могут быть обнаружены компилятором, но все равно могут вызвать проблемы в вашей логике во время работы ПЛК, — это ошибки программирования, которые мы имеем в виду. Эти ошибки вызовут вызов OB121 операционной системой. Примеры ошибок программирования Вот несколько примеров ошибок в вашей логике ПЛК, которые могут вызвать ошибки программирования: Превышена максимальная глубина вложенности вызовов блоков. Вы использовали указатель NULL для обращения к операнду. Неизвестная инструкция. Адресованная строка имеет неверную информацию о длине. Ошибка длины области при чтении. Ошибка длины области при записи. Ошибка в номере таймера. Доступ к базе данных, которая не загружена; номер базы данных находится в разрешенной области. База данных не существует. Эти и многие другие ошибки могут вызвать ошибки программирования в вашем ПЛК. Вы можете проверить раздел справки на портале TIA, чтобы узнать, какие еще причины могут вызвать ошибки программирования ПЛК. Что произойдет, если обнаружена ошибка программирования? Когда ваш ПЛК обнаруживает ошибку программирования, может произойти одно из трех событий. Ваш ПЛК покажет ошибку и перейдет в режим STOP. Ваш ПЛК покажет ошибку, но продолжит выполнять вашу логику. Ваш ПЛК покажет ошибку, а затем попытается устранить эту ошибку. Эти три события будут в основном зависеть от программирования вашего ПЛК. Это означает, что ваш код будет определять, как будет вести себя операционная система при обнаружении ошибки программирования. Моделирование ошибки программирования в TIA Portal Чтобы лучше понять, как будет вести себя ПЛК, мы создадим простую программу, в которой вызовем ошибку программирования, а затем посмотрим, что произойдет. Смотрите рисунок 2. Рисунок 2 — Простая логика программы Созданная нами логика очень проста: при включении InitiateProgError значение 126 будет перемещено в область DB52.DBW16. Обратите внимание, что мы не создали DB52. поэтому это будет наша ошибка программирования. Обратите внимание, что эта ошибка не будет обнаружена во время компиляции или загрузки в ПЛК. Смотрите рисунки 3 и 4. Рисунок 3 — Ошибка, не обнаруженная компилятором Посмотрите, как блок был успешно скомпилирован, включая ошибку программирования. Рисунок 4 – Блок загружен в ПЛК И снова, блок был загружен в ПЛК с ошибкой программирования. Теперь давайте смоделируем нашу программу ПЛК и посмотрим, что произойдет. См. анимацию 1 для моделирования кода ПЛК. Анимация 1 Как вы видите из анимации выше, светодиод ПЛК ERROR будет мигать красным в течение нескольких секунд, а затем ПЛК перейдет в режим STOP. Перейдите к онлайн-диагностике ПЛК, чтобы увидеть, что произошло. См. рисунок 5. Рисунок 5 – Онлайн и диагностика ПЛК То, что вы видели в анимации, это то же самое, что вы видите на предыдущем рисунке. Их можно разделить на 3 шага: ПЛК обнаруживает ошибку программирования, которая заключается в том, что OB52 не загружен. Операционная система инициирует вызов OB121, но в нашей логике OB121 не создан. Когда ПЛК обнаруживает, что в нашей логике не создан OB121, операционная система инициирует запрос STOP. И ПЛК переходит в режим STOP. Как OB121 может быть полезен против ошибок программирования? Давайте добавим OB121 в наш код ПЛК и посмотрим, как все изменится. См. рисунок 6. Рисунок 6 – Добавление OB121 После создания и добавления OB121 в нашу логику ПЛК давайте посмотрим, что произойдет в симуляции. Помните, что мы не написали никакой логики ПЛК внутри OB121. См. анимацию 2. Анимация 2 Как видно из анимации 2, при возникновении InitiateProgError светодиод ПЛК ERROR будет мигать красным, но ПЛК продолжит работу. Это означает, что ПЛК не перейдет в режим STOP. Давайте проверим онлайн-диагностику, чтобы увидеть, что на самом деле произошло. Смотрите рисунок 7. Рисунок 7 — Ошибка не привела к остановке ПЛК На рисунке видно, что ПЛК обнаруживает ошибку, но не переходит в режим STOP. Он пропустит эту ошибку, продолжит цикл и начнет все сначала с самого начала. Когда он снова достигнет ошибки, он снова обнаружит ошибку, выдав сигнал тревоги в диагностике. Пропустите ошибку и продолжите. Это означает, что ПЛК будет выдавать тот же сигнал тревоги в каждом цикле сканирования. И именно поэтому на рисунке вы видите, что событие продолжает срабатывать, а сигнал тревоги повторяется в каждом цикле сканирования. Таким образом, просто наличие пустого OB121 даст вам преимущество в поддержании работы ПЛК и расширения y, поддерживая работу вашего процесса. Но мы можем сделать больше, мы можем попытаться поймать эту ошибку и устранить ее. Также мы можем попытаться показать тип обнаруженной ошибки программирования. Определение типа ошибки OB121 имеет внутренний идентификатор идентификатора ошибки, который мы можем использовать для отображения типа ошибки, возможно, как сигнал тревоги на HMI. Внутри OB121 мы создадим простую инструкцию MOVE, в которой мы поместим вход Fault_ID OB121 в определенную область памяти внутри нашей глобальной базы данных. См. рисунок 8. Рисунок 8 — Определение типа ошибки Как вы видите на предыдущем рисунке, при возникновении ошибки программирования Fault_ID будет помещен в Data.ProgErrorID. См. рисунок 9. Рисунок 9 — Ошибка программирования Fault_ID Вы можете увидеть, что идентификатор ошибки — 3A. Если вы посмотрите справку TIA Portal, вы можете узнать значение этой ошибки. 3A: Доступ к незагруженной базе данных; номер DB находится в разрешенной области. Перехват ошибки Это просто означает попытку решить ошибку программирования ПЛК после того, как вы определили причину. Это будет зависеть в основном от того, что это за ошибка и как вы хотите ее обработать. Мы просто смоделируем решение ошибки, чтобы посмотреть, как будет себя вести ПЛК. Фактическое решение для созданной нами ошибки будет заключаться в том, чтобы просто создать DB52 или использовать уже созданный блок данных. Но ради симуляции мы просто добавим простой контакт, который будет размыкаться при возникновении ошибки программирования, чтобы перехватить эту ошибку. Смотрите рисунки 10 и 11. Рисунок 10 – Перехват ошибки Всякий раз, когда вызывается OB121, будет устанавливаться CatchError. Рисунок 11 – Устранение ошибки Всякий раз, когда вызывается OB121, будет установлен CatchError, и он будет использоваться для перехвата ошибки программирования в Network 1. См. анимацию 3 для моделирования ПЛК. Анимация 3 Из вышеприведенной анимации вы можете видеть, что при запуске InitiateProgError ПЛК на мгновение переходит в состояние ошибки, затем ошибка сбрасывается, и ПЛК все время находится в режиме RUN. Заключение Простое наличие пустого OB121 в вашей логике гарантирует, что ваш ПЛК не перейдет в режим STOP, если в вашем коде была ошибка программирования. Позже вы можете использовать OB121, чтобы также определить ошибку и устранить ее. -
Система управления движением на Т-образном перекрестке – программирование ПЛК
leigehong posted A plc and hmi russian article in PLC programming learning
В этой статье речь идет о системе управления движением на Т-образном перекрестке с помощью логики ПЛК, использующей компаратор для работы светофоров. Система управления движением на Т-образном перекрестке Функция системы управления движением на Т-образном перекрестке состоит из трех групп сегментов. С помощью логики работы компаратора мы управляем системой светофоров. Первый сегмент: В первом сегменте движение по полосе 1 разрешено, а полосы 2 и 3 остановлены. Здесь, в этом сегменте, горит зеленый свет (Зеленый 1) полосы 1, и горят красные огни (Красный 2) полосы 2 и (Красный 3) полосы 3. Этот период продолжается пятнадцать секунд. Второй сегмент: Во втором сегменте движение по полосе 2 разрешено, а полосы 1 и 3 остановлены. Здесь, в этом сегменте, горит зеленый свет (зеленый 2) полосы 2, а также красные огни (красный 1) полосы 1 и (красный 3) полосы 3. Этот период продолжается пятнадцать секунд. Третий сегмент: В третьем сегменте движение по полосе 3 разрешено, а полосы 1 и 2 остановлены. Здесь, в этом сегменте, горит зеленый свет (зеленый 3) полосы 3, а также красные огни (красный 1) полосы 1 и (красный 2) полосы 2. Этот период продолжается пятнадцать секунд. После выполнения всех трех сегментов последовательность операций снова запускается и повторяется непрерывно. Описание входов и выходов В этом проекте ПЛК мы использовали 2 входа, 6 выходов, 2 памяти и 1 таймер задержки включения. С.Нет Символ Описание 1 Я 0.0 НАЧИНАТЬ 2 Я 0.1 ОСТАНАВЛИВАТЬСЯ 3 М 0.0 ПАМЯТЬ 4 М 0,1 ПАМЯТЬ 1 5 В 0.0 ЗЕЛЕНЫЙ 1 6 В 0,1 КРАСНЫЙ 1 7 В 0,2 ЗЕЛЕНЫЙ 2 8 В 0,3 КРАСНЫЙ 2 9 В 0,4 ЗЕЛЕНЫЙ 3 10 В 0,5 КРАСНЫЙ 3 11 DB1 ТАЙМЕР ЗАДЕРЖКИ ВКЛЮЧЕНИЯ Программирование ПЛК и его пояснение 1. При нажатии кнопки ПУСК (I 0.0) активируется ПАМЯТЬ (M 0.0). Эта M 0.0 является основной памятью, используемой для выполнения всех процессов в программе. Поскольку она защелкнута, она будет находиться только во включенном состоянии. Если нажать кнопку СТОП (I 0.1), весь процесс будет остановлен в любой момент. 2. После подачи питания на MEMORY он включит TIMER DB1, который управляет синхронизацией дорожной развязки. В этом таймере мы устанавливаем заданное время 45 секунд. Как только таймер достигает заданного времени, он активирует MEMORY 1 (M 0.1), и этот M 0.1 также сбрасывает таймер согласно логике и непрерывно запускает цикл. 3. Далее компаратор играет важную роль в управлении дорожной развязкой. Во-первых, выход GREEN 1 (Q 0.0) включается согласно логике. Здесь мы использовали компаратор «Меньше или равно». В этой логике Q0.0 будет находиться в состоянии ВКЛ от 0 секунд до 15 секунд. После этого он перейдет в состояние ВЫКЛ 4. Далее для выхода RED 1 (Q0.1) мы использовали функцию «Больше или равно». Q0.1 будет находиться в состоянии ВКЛ от 15 до 45 секунд. Он будет находиться в состоянии ВЫКЛ, когда Q0.0 находится в состоянии ВКЛ. 5. Затем для выхода GREEN 2 (Q0.2) мы использовали как «Меньше или равно», так и «Больше или равно» для этого выхода. Обе функции компаратора были подключены последовательной логической связью к выходу. В этом Q0.2 будет находиться в состоянии ВКЛ от 16 до 30 секунд в соответствии с условием. 6. Далее для выхода RED 2 (Q0.3) мы также использовали как «Меньше или равно», так и «Больше или равно» для выполнения операции. Компараторы были подключены параллельно к выходу. Этот выход будет находиться в состоянии ВКЛ от 0 до 15 секунд и от 30 до 45 секунд. В промежутке между 15 секундами он будет находиться в состоянии ВЫКЛ только потому, что в это время Q0.2 находится в состоянии ВКЛ. 7. Затем для последнего выхода GREEN 3 (Q0.4) мы использовали функцию «Больше или равно». Согласно условной логике, он будет находиться в состоянии ВКЛ от 30 до 45 секунд. До этого времени он будет находиться в состоянии ВЫКЛ. 8. Наконец, выход RED 3 (Q0.5). Здесь мы использовали функцию «Меньше или равно» для выполнения логики ПЛК. Он будет находиться в состоянии ВКЛ от 0 до 30 секунд, после чего он будет находиться в состоянии ВЫКЛ. Заключение Итак, таким образом, заданное управление движением на Т-образном перекрестке выполняется функцией компаратора с логикой ПЛК. Мы можем управлять логикой движения с помощью логики ПЛК многими способами, и это также один из способов. -
Источник питания и рабочие напряжения ПЛК
leigehong posted A plc and hmi russian article in PLC programming learning
Когда вы работаете с ПЛК, вам нужно знать, какие типы напряжений обычно доступны в нем; чтобы вы могли соответствующим образом выполнить подключение. Не только источник питания, но мы также должны быть связаны с требуемым входным и выходным напряжением. У каждого производителя ПЛК есть свой собственный набор диапазонов напряжения и тока в зависимости от модуля и ЦП, которые они предоставляют. В этой статье мы изучим рабочие напряжения ПЛК, которые обычно доступны везде. Источник питания ПЛК В стандарте ПЛК работает при четырех типах напряжений — 24 В постоянного тока, 24 В переменного тока, 110 В переменного тока и 240 В переменного тока. В некоторых ПЛК только ЦП требует источника питания, а модули ввода-вывода получают питание от объединительной платы ЦП, тогда как в некоторых ПЛК все модули, включая ЦП, входы и выходы, требуют источника питания. В любом случае вам понадобится ИБП или трансформатор на панели ПЛК для преобразования необработанного напряжения питания. В напряжении питания переменного тока некоторые ПЛК предлагают диапазон напряжений от 110 до 240 В переменного тока. Каждая точка питания в ПЛК имеет точку заземления для обеспечения безопасности ПЛК в случае любого скачка напряжения или короткого замыкания. Когда используется питание переменного тока, оно в основном оснащено защитным предохранителем внутри. Питание постоянного тока также имеет предохранитель внутри, но для питания переменного тока его обязательно использовать из-за высокого напряжения. Когда номинальное напряжение указано в ЦП, это означает, что напряжение, которое вы предоставляете, было должным образом стабилизировано и в значительной степени контролируется. Но нецелесообразно, чтобы напряжение оставалось постоянным на уровне 24 В или 240 В. Таким образом, для ПЛК предусмотрен диапазон номинального напряжения, например, 20–28 В постоянного тока или 220–245 В переменного тока. Этот диапазон предопределен в каждом ПЛК, чтобы вы получили область питания для эффективной работы с ними без каких-либо проблем. Питание для модулей ввода-вывода Теперь давайте перейдем к нашей следующей теме о питании, необходимом для модулей ввода-вывода. Как обсуждалось ранее, доступны два типа питания: один, в котором модуль питается от самой объединительной платы ЦП, и один, в котором модулю требуется внешний источник питания. При использовании объединительной платы каждый ЦП имеет номинал в мА, который он будет предоставлять в качестве нагрузки для подключенных модулей. Например, если ЦП имеет номинал 24 В постоянного тока - 450 мА, то он также будет указывать, что объединительная плата ЦП может обеспечивать такое количество тока для модулей ввода-вывода, и вы можете подключить только это количество модулей к стойке ЦП. Кроме того, каждый модуль будет указывать, какой ток он будет потреблять при подключении к шине объединительной платы. Это может помочь вам выбрать соответствующие модули и ЦП для конкретного приложения. Переходя ко второму типу питания, есть некоторые модули, которым требуется внешний источник питания. Итак, в этом случае вам нужно выбрать ИБП или трансформатор с более высоким током и соответствующей нагрузкой. Это, в свою очередь, может правильно питать как ЦП, так и модули, а также питать другие компоненты панели, которым требуется такое же питание. Источник питания для полевых приборов Полевая проводка для ПЛК также в основном требует постоянного напряжения для приборов и переменного напряжения для мощных устройств. Таким образом, вышеупомянутые четыре напряжения, упомянутые ранее, работают одинаково для общей проводки питания модуля ввода-вывода. Кроме того, помните, что внутри ПЛК, помимо стандартного источника питания, в основном находится резервная батарея. Это гарантирует, что программа в памяти ПЛК останется нетронутой в случае любого отключения питания. Выбор источника питания для ПЛК При выборе источника питания необходимо учитывать следующие параметры в целом: номинальное напряжение, номинальный ток, номинальную мощность, пульсацию и шум, регулируемый диапазон напряжения, допуск напряжения, регулировку линии и регулировку нагрузки. После того, как вы выбрали правильный источник питания, вы можете подключить ЦП и модули для правильного питания. Таким образом, мы понимаем концепцию рабочих напряжений ПЛК. -
ПЛК против ПАК — понимание основных различий и сходств
leigehong posted A plc and hmi russian article in PLC programming learning
Программируемые логические контроллеры (ПЛК) и программируемые контроллеры автоматизации (ПАК) — это два типа промышленных контроллеров, используемых для автоматизации процессов и машин в производстве, обработке и других промышленных приложениях. Оба типа контроллеров имеют схожие функции, но между ними также есть существенные различия. В этой статье мы рассмотрим различия, сходства и примеры ПЛК и ПАК. Содержание: Что такое ПЛК? Что такое ПАК? Сходства между ПЛК и ПАК. Различия между ПЛК и ПАК. Примеры моделей ПЛК от разных поставщиков. Примеры моделей ПАК от разных поставщиков. Когда лучше всего подходит ПЛК? А когда ПАК? Заключение Что такое ПЛК? ПЛК означает программируемый логический контроллер, который представляет собой специализированный промышленный компьютер, используемый для систем управления автоматикой. ПЛК предназначены для работы в суровых условиях и используются для управления оборудованием на производственных предприятиях, сборочных линиях и других промышленных предприятиях. ПЛК можно программировать с использованием 5 различных языков, таких как релейная логика, схемы функциональных блоков, структурный текст, список инструкций и последовательные диаграммы. Эти 5 языков одобрены и применяются в соответствии со стандартами IEC 61131-3. Что такое ПАК? ПАК означает программируемый контроллер автоматизации, который похож на ПЛК, но имеет более продвинутую функциональность. ПАК сочетает в себе возможности традиционного ПЛК с возможностью выполнять гораздо более сложные задачи и взаимодействовать с другими устройствами и системами, что делает их более гибкими и мощными, чем ПЛК. ПАК обычно используется для более сложных приложений автоматизации и управления в таких отраслях, как автомобилестроение, аэрокосмическая промышленность и производство электроэнергии. ПАК можно программировать с использованием тех же 5 языков, что и ПЛК, но также их можно программировать с использованием C и C++, что дает им возможность обрабатывать кодирование более сложных алгоритмов. Сходства между ПЛК и ПАК Сходства между ПЛК и ПАК настолько много, что иногда трудно сказать, отличаются ли они вообще. Хотя между ними все же есть некоторая разница. Сходства, которые они разделяют, могут быть еще больше. Вот некоторые общие моменты между ПЛК и ПАК: Основная функциональность И ПЛК, и ПАК разработаны для обеспечения надежного и точного управления промышленными системами автоматизации. Они используются для контроля входных сигналов от датчиков и других устройств, обработки информации, а затем вывода сигналов управления на исполнительные механизмы и другое оборудование. Программирование И ПЛК, и ПАК используют языки программирования для создания логики управления, которая определяет поведение системы автоматизации. Они используют 5 языков программирования, определенных в стандартах IEC 61131-3, но ПАК предлагают больше вариантов языков программирования, включая C и C++. Долговечность И ПЛК, и ПАК созданы для работы в суровых промышленных условиях, таких как экстремальные температуры, влажность и вибрация. Они разработаны для обеспечения прочности и надежности, длительного срока службы и меньших требований к обслуживанию. Модульная конструкция Как ПЛК, так и ПАК имеют модульную конструкцию, что обеспечивает простоту расширения и настройки. Модули можно добавлять или удалять для удовлетворения конкретных требований. Отраслевые стандарты Как ПЛК, так и ПАК созданы в соответствии с отраслевыми стандартами для систем автоматизации и управления, такими как IEC 61131. Эти стандарты обеспечивают совместимость между устройствами и системами разных производителей. Различия между ПЛК и ПАК Различие между ПАК и ПЛК может быть несколько размытым. Хотя определения того, что представляет собой ПАК, нет, есть некоторые общие характеристики, которые отличают ПАК от ПЛК: Функциональность Хотя и ПЛК, и ПАК используются для приложений автоматизации и управления, ПАК имеют более продвинутые функции, такие как управление движением, управление процессами и сбор данных. ПАК также обычно имеют большую вычислительную мощность и память, чем ПЛК. Возможности подключения ПАК имеют более продвинутые возможности подключения, чем ПЛК, включая Ethernet, USB и беспроводную связь. Это упрощает их интеграцию в более крупные системы автоматизации и взаимодействие с другими устройствами и системами. Стоимость Благодаря более продвинутой функциональности и гибкости ПАК, как правило, дороже, чем ПЛК. Более продвинутые функции ПАК часто имеют более продвинутые программные функции, чем ПЛК, такие как интегрированное управление движением, регистрация данных и расширенные диагностические инструменты. Эти функции облегчают инженерам и техникам мониторинг и устранение неисправностей системы управления. Примеры моделей ПЛК от разных поставщиков Сименс S7-1500 ПЛК: Это высокопроизводительный ПЛК от Сименс, одного из ведущих поставщиков автоматизации. Он разработан для требовательных приложений и предлагает расширенные функции, такие как управление движением, безопасность и защита. См. рисунок 1. Рисунок 1 – Сименс S7-1500 ПЛК Allen-Bradley ComПАКtLogix 5370 ПЛК: Это универсальный ПЛК от Rockwell Automation, который предлагает широкий спектр вариантов ввода-вывода и протоколов связи. Он подходит для различных приложений, включая управление машинами и автоматизацию процессов. См. рисунок 2. Рисунок 2 – ПЛК Allen-Bradley ComПАКtLogix 5370 ПЛК Mitsubishi Electric серии Q: Это надежный ПЛК от Mitsubishi Electric, который предлагает высокоскоростную обработку, гибкие варианты ввода-вывода и расширенные возможности программирования. Он подходит для различных приложений, включая автомобилестроение, пищевую промышленность и фармацевтику. См. рисунок 3. Рисунок 3 – ПЛК Mitsubishi Electric серии Q ПЛК Omron серии NJ: Это высокоскоростной, высокопроизводительный ПЛК от Omron, который предлагает расширенные возможности управления движением и сетевые возможности. Он подходит для различных приложений, включая упаковку, печать и производство полупроводников. См. рисунок 4. Фото 4 – ПЛК Omron NJ Series ПЛК Beckhoff TwinCAT: Это программный ПЛК от Beckhoff, работающий на платформе на базе ПК. Он предлагает расширенные функции, такие как управление движением, ЧПУ и робототехника, и подходит для различных приложений, включая управление машинами и автоматизацию процессов. См. рисунок 5. Фото 5 – ПЛК Beckhoff TwinCAT CX9240 на базе ПК Примеры моделей ПАК от разных поставщиков ПАК Emerson DeltaV DCS: Это ПАК распределенной системы управления (РСУ) от Emerson. Он разработан для сложных приложений непрерывного управления и предлагает расширенные функции, такие как моделирование процессов, управление партиями и расширенное управление. См. рисунок 6. Рисунок 6 – Emerson DeltaV DCS ПАК Schneider Electric Modicon M340 ПАК: Это высокопроизводительный ПАК от Schneider Electric, который предлагает расширенные функции, такие как управление движением, безопасность и кибербезопасность. Он подходит для различных приложений, включая энергетику, очистку воды и горнодобывающую промышленность. См. рисунок 7. Рисунок 7 – Modicon M340 ПАК Некоторые другие примеры ПАК: ABB AC 800M ПАК Yokogawa ProSafe-RS ПАК Phoenix Contact ПЛКnext Technology ПАК Bosch Rexroth IndraMotion MLC ПАК Когда лучше всего подходит ПЛК? А когда ПАК? ПЛК и ПАК используются в различных типах приложений автоматизации в зависимости от конкретных требований этого приложения. Вот несколько общих рекомендаций о том, где лучше всего подходит ПЛК, а где лучше всего подходит ПАК: ПЛК лучше всего подходят для: Приложений с дискретным управлением: ПЛК лучше всего подходят для приложений, включающих дискретное управление, например, управление работой конвейера, сортировочного оборудования или упаковочных машин. Простые системы управления: ПЛК идеально подходят для приложений, имеющих относительно простую систему управления, которую можно запрограммировать с помощью релейной логики или других подобных языков программирования. Приложения, чувствительные к стоимости: ПЛК, как правило, менее дороги, чем ПАК, что делает их хорошим выбором для приложений, где стоимость является существенным фактором. Системы малого и среднего размера: ПЛК подходят для систем управления малого и среднего размера, где количество входов и выходов относительно невелико. Конвейерная система на производственном предприятии является хорошим примером системы автоматизации, где лучше всего подходит ПЛК. В этом приложении ПЛК отвечает за управление скоростью и направлением конвейера, а также за мониторинг состояния датчиков и другого оборудования вдоль конвейерной линии. ПЛК также можно запрограммировать для выполнения определенных производственных задач, таких как сортировка, подсчет или упаковка. Обычно конвейерная система имеет фиксированную структуру и четко определенный набор операций, которые необходимо выполнять последовательно. ПЛК хорошо подходят для этого типа приложений, поскольку они предназначены для выполнения дискретных задач управления и очень надежны в своей работе. ПЛК можно легко запрограммировать и настроить для работы с различными типами датчиков, исполнительных механизмов и протоколов связи. ПЛК лучше всего подходят для: Приложений управления технологическими процессами: ПЛК лучше всего подходят для приложений, включающих управление технологическими процессами, например, управление работой химического завода, водоочистной станции или электростанции. Сложные системы управления: ПЛК идеально подходят для приложений, в которых используется сложная система управления, требующая расширенных алгоритмов и функций оптимизации. Крупномасштабные системы: ПЛК подходят для крупномасштабных систем управления, где количество входов и выходов велико, а система распределена по большой площади. Высокопроизводительные приложения: ПАК, способный обрабатывать высокопроизводительные приложения, требующие быстрой обработки данных, управления в реальном времени и высокой надежности. Система управления электростанцией является хорошим примером системы автоматизации, где ПАК является наилучшим вариантом. В этом приложении ПАК отвечает за управление и мониторинг большого количества сложных процессов и оборудования, таких как турбины, генераторы, котлы и насосы. ПАК также отвечает за сбор и анализ данных с различных датчиков и других источников и принятие решений на основе этих данных для оптимизации производительности станции. Система управления электростанцией является очень сложной и динамичной средой, в которой одновременно работает множество различных процессов и оборудования. ПАК хорошо подходят для этого типа приложений, поскольку они предлагают расширенные функции, такие как распределенное управление, резервирование и отказоустойчивость, которые необходимы для обеспечения надежности и безопасности станции. ПАК может обрабатывать большие объемы данных и может быть запрограммирован для выполнения сложных алгоритмов и задач оптимизации. Заключение ПЛК и ПАК используются в приложениях промышленной автоматизации. Они имеют разные возможности и лучше всего подходят для разных типов приложений. При выборе между ПЛК и ПАК важно учитывать конкретные требования приложения. ПЛК обычно используется в дискретных приложениях управления, которые имеют относительно простую систему управления. ПАК используется в приложениях управления процессами, которые имеют сложную систему управления и требуют расширенных алгоритмов и функций оптимизации. -
Разница между микроконтроллером и ПЛК
leigehong posted A plc and hmi russian article in PLC programming learning
Управление процессом в любой машине или системе всегда было мечтой инженеров. Благодаря появлению технологий было разработано множество контроллеров для гибкого и надежного управления процессом. Существует два основных типа контроллеров, которые широко используются во многих процессах, от малых до больших. Это микроконтроллеры и ПЛК. Они могут выполнять любую операцию, начиная от небольших вычислений до сложных алгоритмов, логической производительности и обработки данных. Это упрощает задачу за счет автоматизации процесса. В этой статье мы рассмотрим разницу между микроконтроллером и ПЛК. Что такое микроконтроллер? Давайте сначала разберемся с основами. У вас есть одна кнопка и одна лампа. Вас просят включить лампу через 5 секунд после нажатия кнопки. Что из этого нам требуется для выполнения этой задачи? Вам понадобится один вход (кнопка), один выход (лампа), один контроллер для выполнения этой задачи (тип процессора), один источник питания для питания схем и одна память для хранения этой логики и состояния входов и выходов. При объединении в одном корпусе это создает микроконтроллер. Короче говоря, микроконтроллер — это тип небольшого компьютера, который принимает физические входы, обрабатывает логику в соответствии с ними и включает или выключает физические выходы. Это небольшое устройство типа чипа, которое встраивает в себя все эти схемы, как небольшой корпус, и выполняет всю работу по обработке и управлению. Микроконтроллер будет обрабатывать небольшое количество входов и выходов. Например, рассмотрим небольшую схему дисплея, такую как светодиод или ЖК-дисплей, установленную на портативном устройстве. Если вы нажмете на нем кнопку, он отобразит соответствующее число на дисплее. А когда вы нажмете другую кнопку, он отобразит какое-то другое число, записанное в соответствии с логикой внутри процессора. Это означает, что сначала он был запрограммирован на отображение числа, а затем при нажатии второй кнопки будет показано вычисленное число. Все эти вычисления, хранение обработки переменных и обработка ввода-вывода выполняются внутри этого чипа микроконтроллера. Что такое ПЛК? Давайте перейдем к более высокому уровню обработки. У вас есть 50 датчиков, либо 4-20 мА, либо термопар. У вас есть 20 различных типов выходов, либо приводы постоянного тока 0-10 В, либо релейные выходы. Вам была назначена одна и та же задача принимать входы и управлять выходами в соответствии с прописанной в нем логикой. Потребуются все те же компоненты ввода-вывода, блок питания, процессор и память. Но вы можете видеть, что все эти платы/контакты ввода-вывода с памятью и процессором не могут быть встроены в небольшой одиночный чип. Вот тут-то и появляется ПЛК. ПЛК по сути является расширением микроконтроллера. Это устройство типа шкафа-коробки, которое имеет платы ввода-вывода, память и процессор; все они соединены друг с другом на разных чипах. Все эти чипы составляют один шкаф ПЛК. Вводы-выводы могут быть разных типов, от простых цифровых сигналов до сложных аналоговых сигналов. У них есть специальные платы связи, которые могут взаимодействовать с реальными протоколами, такими как Ethernet, Modbus, CAN Open, Profibus, Profinet и т. д. Микроконтроллеры тоже имеют платы связи, но они имеют небольшие интерфейсы и ограниченные возможности подключения. Модули ввода-вывода либо встроены в основной ПЛК, либо подключены к удаленным модулям через связь. Это легко позволяет расширять ввод-вывод. Различные высококачественные промышленные датчики и исполнительные механизмы могут быть легко соединены с ПЛК. Разница между микроконтроллером и ПЛК Теперь, когда мы поняли их значение, давайте рассмотрим их различия: Только в определении мы узнали, что ПЛК может обрабатывать большое количество процессов и циклов. Вот почему его лучше всего использовать для промышленных приложений. Микроконтроллеры не могут обслуживать большое количество входов/выходов со сложными требованиями к проводке и коммуникациям. Лучше всего подходит для небольших приложений. Обработка сигналов в ПЛК гораздо более гибкая по сравнению с микроконтроллером. Это означает, что аналого-цифровое преобразование, высокоскоростные входы счетчика и выходы легче настраивать в ПЛК, чем в микроконтроллере. Микроконтроллеры дешевле ПЛК из-за ограниченного количества предоставляемых ими функций. Главное преимущество ПЛК — его прочность и стабильность. Благодаря очень высокой температуре и устойчивости к воздействию окружающей среды он является наилучшим подходящим продуктом для критических, опасных и суровых условий. ПЛК может быть гораздо более подвержен электромагнитным помехам и другим типам помех, чем микроконтроллер. Программирование в ПЛК намного проще, чем в микроконтроллере. Микроконтроллеры используют сложное программное обеспечение, такое как C и C++, для программирования, что намного проще в ПЛК, поскольку в нем есть языки, которые легко соотносятся с пониманием электрических чертежей. Для проектирования микроконтроллеров необходимы знания встраиваемых систем, СБИС и программного обеспечения, тогда как программистам ПЛК для проектирования требуются знания промышленной автоматизации, контрольно-измерительных приборов и сетей. -
Что такое последовательности FIFO и LIFO в ПЛК?
leigehong posted A plc and hmi russian article in PLC programming learning
Последовательная логика очень полезна в программировании ПЛК. Она помогает легко сортировать вещи. Во многих приложениях, использующих ПЛК, написана та или иная последовательная логика. Две наиболее широко используемые последовательности — LIFO и FIFO. Вы наверняка слышали эти названия в электронике, когда они используются для укладки и упорядочивания. Эти типы последовательной логики также доступны в ПЛК. В этой статье мы изучим концепции последовательностей LIFO и FIFO в программировании ПЛК. Последовательность FIFO в ПЛК FIFO означает «первым пришел — первым вышел». Значение этой последовательности легко понять из ее названия. То, что пришло первым, выйдет первым. Вы вводите один элемент; и когда вы запрашиваете элемент, вам будет предоставлен первый введенный элемент. Эта же логика работает в программировании ПЛК для последовательности FIFO. В программировании логическому блоку присваивается имя FIFO. Он может хранить до 16 слов или более, в зависимости от ПЛК. Он содержит три типа входов — сброс, хранение и извлечение. По переднему фронту входа сброса последовательность сбрасывается и становится пустой. По переднему фронту входа хранения слово, присутствующее на входе, сохраняется в блоке. Блок запомнит последовательность полученных слов. По переднему фронту входа извлечения слово, введенное первым, будет выдано в слове назначения, настроенном программистом ПЛК. Он имеет два выхода — пустой и полный. Если пустой бит истинен, то это означает, что хранилище пусто, а если полный вход истинен, то это означает, что хранилище заполнено. Последовательность LIFO в ПЛК LIFO означает последний вошел — первый вышел. Значение этой последовательности можно легко понять из ее названия. То, что приходит последним, выйдет первым. Вы вводите один элемент; и когда вы запрашиваете элемент, вам будет выдан последний введенный элемент. Эта же логика работает в программировании ПЛК для последовательности LIFO. В программировании логический блок называется LIFO. Он может хранить до 16 слов или больше, в зависимости от ПЛК. Он содержит три типа входов — сброс, хранение и извлечение. По переднему фронту входа сброса последовательность сбрасывается и становится пустой. По переднему фронту входа хранения слово, присутствующее на входе, сохраняется в блоке. Блок запомнит последовательность полученных слов. По переднему фронту входа извлечения слово, которое поступило последним, будет передано в целевое слово, настроенное программистом. Он имеет два выхода — пустой и полный. Если пустой бит истинен, то это означает, что хранилище пусто, а если полный вход истинен, то это означает, что хранилище заполнено. Эти последовательности довольно просты в использовании. Программист должен следить за тем, чтобы никакие входы не подавались одновременно в блоки хранения. В этом случае блок не будет выполнять никаких действий. Только один вход должен быть предоставлен за один раз. Также следует отметить, что разные ПЛК функционируют по-разному при теплом или холодном перезапуске. Обычно, например, при холодном перезапуске ПЛК регистр будет сброшен, а в случае теплого перезапуска регистр останется нетронутым. Это зависит от производителя. -
Сдвиг битового регистра в ПЛК
leigehong posted A plc and hmi russian article in PLC programming learning
В ПЛК есть много инструкций, которые помогают выполнять логику упрощенным способом. Инструкции бывают разных категорий, таких как арифметические, сравнительные, логические, контроллерные и т. д. Например, простая инструкция сложения для сложения двух переменных относится к арифметической категории. Таким образом, аналогично, в логике ПЛК доступно много типов инструкций. Одной из таких инструкций, которая широко используется в программировании ПЛК, является инструкция сдвига. Она относится к категории числовой обработки. В этой статье мы изучим концепцию инструкции сдвига битового регистра в программировании ПЛК. Сдвиг битового регистра в ПЛК Как следует из названия, инструкция сдвига — это команда для сдвига битов слова на некоторую предопределенную позицию. Например, у вас есть слово из 16 бит. Вы хотите переместить бит номер 3 из его текущей четвертой позиции в седьмую позицию. Таким образом, всякий раз, когда дается импульс команды сдвига, бит будет сдвигаться в каждом триггере из четвертой позиции в седьмую позицию. В этой непрерывности бит в пятой позиции переместится в восьмую позицию; а бит в третьей позиции переместится в шестую позицию. Итак, здесь вы сдвигаете биты в группе на определенное вами количество позиций. Инструкция сдвига Инструкции сдвига бывают двух типов — сдвиг и поворот. Давайте рассмотрим инструкцию поворота. Рассмотрим синтаксис — %MW10:= SHL (%MW12, 4). %MW10 — это целевое слово памяти, а %MW12 — это исходное слово памяти. Обратитесь к изображению ниже. В %MW10, когда дается первый триггер для сдвига влево, бит 0 сдвигается в бит 1 и так далее. Этот результат сохраняется в %MW12. Когда такие триггеры даются четыре раза, в конечном итоге бит 0 окончательно сместится в бит 4 и так далее. Конечный результат в любом случае сохраняется в %MW12, и вы получаете окончательный ответ битов, сдвинутых на четыре позиции от исходного слова. Но следует помнить, что при каждом сдвиге предыдущий бит заполняется значением 0. Это вы можете ясно видеть на изображении. После первого сдвига первый бит в %MW12 равен 0. Таким образом, после четырех сдвигов конечный результат будет – 0000 1101 1100 0000. Таким образом, этот сдвиг может быть как правым, так и левым. В ПЛК есть еще один тип сдвига; более ранний добавляет нули из предыдущей позиции, но этот второй тип сохраняет значение первого бита (MSB для правого и LSB для левого) как есть. Это называется арифметическим сдвигом. Таким образом, если значение первого бита (MSB для правого и LSB для левого) изначально перед сдвигом было 1, то последний бит останется только 1, а нули будут добавлены из второго предыдущего бита до тех пор, пока не будет дана команда сдвига. Следует отметить, что последний сдвинутый бит всегда сохраняется в бите переноса. Инструкция поворота Второй тип — инструкция поворота. Рассмотрим синтаксис: %MW10:= ROL (%MW12, 4). %MW10 — это целевое слово памяти, а %MW12 — это исходное слово памяти. Мы будем использовать то же самое изображение выше для справки. Инструкция поворота, как следует из названия, просто сдвигает биты на указанное вами количество позиций. По сравнению с инструкцией сдвига, где ноль добавлялся после каждого предыдущего бита; здесь биты просто сдвигаются в той же последовательности, что и в левом направлении. Итак, предположим, что у вас есть исходное слово – 1100 1010 1100 0101; затем после срабатывания триггера из 4 позиций конечный результат будет – 1010 1100 0101 1100. Та же логика работает и в правом направлении. Последний сдвинутый бит также сохраняется в бите переноса. Еще один тип относится к категории вращения. Здесь вместо сдвига только 16 битов бит переноса переворачивается. Это означает, что последний бит смещается к биту переноса, а затем бит переноса будет смещен к первому биту и т. д. В более раннем типе последний бит сохранялся только в бите переноса. -
SIEMENS-RU Конфигурация оборудования S7-1200 – Учебные пособия по ПЛК Сименс
leigehong posted A plc and hmi russian article in PLC programming learning
ПЛК S7-1200 — это компактное, модульное и экономичное решение, которое предлагает широкий спектр функций и гибкости для небольших и средних приложений автоматизации. Эти функции включают в себя параметры связи, память, производительность ЦП и конфигурацию ввода-вывода. Если у вас есть процесс, которым вам нужно управлять, вам следует выбрать ПЛК и настроить его так, чтобы он наилучшим образом соответствовал требованиям вашего процесса. В этой статье мы обсудим конфигурацию оборудования ПЛК S7-1200 и приведем пример его настройки на портале Сименс Tia. Содержание: Какова конфигурация оборудования ПЛК? Важность конфигурации оборудования. Простой пример проекта. Как настроить наш ПЛК с помощью данного примера? Конфигурация оборудования ЦП. Конфигурация оборудования ввода-вывода. Конфигурация ЧМИ. Заключение. Какова конфигурация оборудования ПЛК? Аппаратная конфигурация относится к определенным компонентам ПЛК, таким как ЦП, память, модули ввода/вывода (I/O), порты связи, источник питания и любые дополнительные модули или аксессуары, которые могут потребоваться и быть добавлены в систему. Аппаратная конфигурация ПЛК также включает включение или отключение некоторых функций ЦП в зависимости от устройства, его возможностей и требований вашего процесса. Шаги аппаратной конфигурации для ПЛК обычно включают следующее: Выберите подходящую модель ПЛК на основе требований приложения. Определите требования к вводу/выводу для системы, которые включают тип и количество датчиков, исполнительных механизмов и других устройств, которые будут подключены к ПЛК. Выберите протокол связи и топологию сети, которые будут использоваться для подключения ПЛК к другим устройствам и системам. Определите требования к источнику питания для ПЛК и его периферийных устройств. Смонтируйте ПЛК в подходящем месте и подключите все необходимые кабели и провода. Настройте программное обеспечение ПЛК для связи с аппаратными компонентами и настройте соответствующие логические и управляющие функции. Конкретные шаги по настройке оборудования могут различаться в зависимости от модели ПЛК и требований приложения, но это основные шаги, которые обычно задействованы в процессе. В этой статье мы поговорим о настройке оборудования, которая выполняется на платформе TIA Portal. Это означает, что мы предполагаем, что вы знаете свое приложение и что вы уже выбрали свою модель ПЛК и источник питания для его питания. Вы можете вернуться к предыдущим статьям, где мы обсуждали, как выбрать ПЛК и источник питания, которые лучше всего подходят для вашего приложения. Важность настройки оборудования в ПЛК Правильная настройка оборудования обеспечивает надежность и устойчивость системы. Если компоненты оборудования настроены неправильно, они могут работать не так, как задумано, что приведет к сбоям или ошибкам системы Настройка оборудования влияет на производительность системы. При выборе правильных компонентов оборудования и их соответствующей настройке система может работать с максимальной эффективностью и скоростью и может обрабатывать большой объем входов и выходов. Настройка оборудования влияет на масштабируемость и гибкость системы. Выбор аппаратных компонентов и их конфигурации должен учитывать будущее расширение или модификацию системы, чтобы гарантировать, что система сможет легко вносить изменения или обновления. Аппаратная конфигурация влияет на стоимость системы. Выбрав соответствующие аппаратные компоненты и конфигурацию, можно избежать ненужных затрат и минимизировать общую стоимость системы. Аппаратная конфигурация S7-1200 Мы предположим простой проект ПЛК и посмотрим, как мы можем настроить ПЛК в нашем проекте, прежде чем мы начнем писать наш код. Система контроля температуры для реактора с использованием ПЛК Проект включает в себя контроль температуры реактора с использованием ПЛК. Система должна измерять температуру реактора и регулировать температуру, управляя потоком охлаждающей жидкости. В проекте используются четыре термопары для измерения температуры, два соленоидных клапана для управления потоком охлаждающей жидкости и двигатель для привода рабочего колеса реактора. Конфигурация ввода/вывода Входы: Термопары 1–4: это 4 аналоговых входа, которые измеряют температуру в разных местах внутри реактора. Кнопка аварийной остановки: это цифровой вход, который используется для остановки системы в случае возникновения чрезвычайной ситуации. Потенциометр заданного значения температуры: это аналоговый вход, который позволяет оператору устанавливать желаемое заданное значение температуры. Выходы: Электромагнитный клапан 1 и 2: это 2 цифровых выхода, которые управляют потоком охлаждающей жидкости через трубы реактора. Управление двигателем: это цифровой выход, который управляет скоростью и направлением двигателя, который приводит в движение рабочее колесо. Управление нагревателем: это цифровой выход, который управляет системой нагрева реактора. Работа системы: Система ждет, пока оператор установит заданное значение температуры с помощью потенциометра. ПЛК считывает заданное значение температуры и сравнивает его с текущей температурой реактора, которая измеряется четырьмя термопарами. Если температура реактора ниже заданного значения, ПЛК активирует выход управления нагревателем для увеличения температуры. Если температура реактора выше заданного значения, ПЛК активирует один из выходов электромагнитного клапана для увеличения потока охлаждающей жидкости и уменьшения температуры. ПЛК непрерывно контролирует температуру и регулирует нагреватель и системы охлаждения для поддержания желаемого заданного значения. ПЛК также управляет двигателем, который приводит в движение рабочее колесо для перемешивания содержимого реактора. Если нажата кнопка аварийной остановки, ПЛК деактивирует все выходы и останавливает систему. Проект ПЛК может быть дополнительно расширен и изменен для включения дополнительных функций, таких как сигналы тревоги, регистрация данных или удаленный мониторинг, в зависимости от конкретных требований проекта. Однако мы не будем беспокоиться о кодировании логики ПЛК этой системы, а воспользуемся этим примером, чтобы объяснить, как настроить оборудование ПЛК в соответствии с нашим проектом. Сюда входит: Выбор ЦП ПЛК. Выбор модулей ввода-вывода. Назначение входных и выходных тегов аппаратным модулям. Назначение IP-адреса ПЛК для связи. Назначение пароля защиты. Настройка локального времени ПЛК. Настройка ЧМИ и установка соединения с ПЛК. Как настроить ПЛК с помощью данного примера? Ниже мы обсудим создание базового проекта ПЛК с необходимым оборудованием. Конфигурация оборудования ЦП: Выбор ЦП: При запуске нового проекта в TIA Portal необходимо настроить новое устройство и добавить его в проект. См. рисунок 1. Рисунок 1. Настройте устройство для вашего проекта Как вы можете видеть на предыдущем рисунке, портал TIA уже показывает вам, что первым шагом должна быть настройка нового устройства. В предыдущей статье мы обсуждали, как выбрать ПЛК, который подходит для вашего процесса, поэтому мы не будем упоминать это здесь снова, для нашего проекта, поскольку это простой проект, мы выберем ЦП 1214C AC/DC/RLY. См. рисунок 2. Рисунок 2. Добавьте новый контроллер в проект Свойства ЦП: В зависимости от ЦП, который вы выбрали для своего проекта, будут доступны различные функции и свойства ЦП. Вы можете включить или отключить эти функции в зависимости от ваших потребностей. Некоторые из функций потребуют дополнительной настройки. См. рисунок 3. Рисунок 3 – Свойства ЦП Как вы можете видеть на предыдущем рисунке, есть много свойств, которые вы можете задать для вашего ЦП в проекте. Мы упомянем некоторые из этих свойств, которые вам нужно будет настроить в каждом проекте, некоторые другие свойства используются только в особых случаях. Связь: Это очень важная конфигурация для любого проекта ПЛК; ваш проект, скорее всего, будет иметь различные модули и устройства, которые должны общаться друг с другом. Настройка связи между вашим ПЛК и этими устройствами важна для вашего проекта. Выбрав ЦП, вы уже определили, как будет осуществляться связь. Некоторые ЦП работают только с Profinet, некоторые работают только с Profibus, а некоторые могут использовать оба. Выбранный ПЛК для этого примера работает только с Profinet. Из интерфейса Profinet вы установите IP-адрес для вашего ПЛК, этот IP должен быть уникальным в проекте; вы не можете использовать один и тот же IP для двух разных модулей. См. рисунок 4. Рисунок 4 – Интерфейс Profinet Время цикла: Это еще одно важное свойство для вашего ПЛК, как вы знаете; время цикла вашей программы будет зависеть от того, сколько кода вы написали и сколько времени потребуется ПЛК для выполнения этого кода. В свойствах времени цикла вы можете установить время мониторинга цикла, если ПЛК требуется больше этого установленного времени для выполнения программы, то ПЛК выдаст ошибку. См. рисунок 5. Из этого свойства вы также можете определить минимальное время цикла для вашего ЦП, вы можете сделать это, если вы активировали «Включить минимальное время цикла для циклических OB». Затем вы можете указать минимальное время цикла, которое вы хотите, и ПЛК отрегулирует свою производительность в соответствии с этим временем. Конечно, это время ограничено производительностью ЦП, поэтому вы не можете уменьшить это время ниже определенного предела. Рисунок 5 – Свойство времени цикла Биты системной и тактовой памяти: Биты системной памяти и биты тактовой памяти являются встроенными битами внутри ЦП, которые операционная система использует для указания определенных событий в ПЛК. Например, есть бит памяти, который изменится на TRUE только при первом сканировании, или бит памяти, который будет TRUE, если изменится состояние диагностики, также есть некоторые выделенные биты тактовой памяти, такие как бит, представляющий тактовую частоту 10 Гц, или бит, представляющий тактовую частоту 2 Гц. Эти биты могут быть очень полезны в некоторых приложениях и могут сэкономить много программного кода для получения той же функциональности. Смотрите рисунок 6. рисунок 6 – Включение битов системной и тактовой памяти Вы можете включить использование одного или обоих байтов памяти; вы также можете определить адрес этих байтов, как вы можете видеть на рисунке. Время суток: Еще одним очень важным свойством вашего ПЛК является установка времени внутри вашего ПЛК. Практически в любом проекте, который вы делаете, вам нужно знать реальное время, чтобы иметь возможность назначать определенные действия с разными датами. В предыдущей статье мы говорили о локальном и системном времени внутри ПЛК и о том, как их использовать. Это свойство ЦП позволяет вам устанавливать локальное время в нужном вам часовом поясе. Смотрите рисунок 7. Рисунок 7 – Свойство локального времени Защита и безопасность: С помощью этого свойства вы можете определить уровень доступа и защиту паролем для вашего ПЛК. См. рисунок 8. Рисунок 8 – Свойство защиты и безопасности Упомянутые ранее свойства являются наиболее часто настраиваемыми свойствами практически для любого проекта ПЛК, который вы бы сделали. Есть некоторые другие свойства, которые вряд ли будут использоваться с простыми программами, такими как веб-серверы и OPC UA. Следующий шаг в конфигурации оборудования вашего проекта – это настройка IO. Конфигурация оборудования IO: Еще один важный шаг вашего проекта – это настройка IO, что означает решение о том, сколько модулей IO вам нужно и какие модули IO вам нужны. Принимая решение о ваших IO, вы должны учитывать некоторые ключевые моменты, такие как наличие некоторых запасных точек IO и выбор модулей IO, которые подходят для входных датчиков и выходных исполнительных механизмов внутри вашего проекта. См. рисунок 9. Рисунок 9 – Добавление модуля аналогового ввода Как мы уже упоминали в нашем примере проекта, у нас есть 4 термопары, используемые в качестве аналоговых входов для моего ПЛК, поэтому мне нужно добавить модуль аналогового ввода как минимум с 4 входными каналами, поскольку выбранный ПЛК имеет только 2 аналоговых входных канала. Другое дело, что термопара — это особый тип аналогового ввода, для которого требуется выделенный входной модуль. Вот почему мы выбрали модуль AI 8xTC, который имеет 8 входных каналов, выделенных для использования с термопарами; мы выбираем 8-канальный модуль и 4, чтобы иметь запасные каналы для будущего использования в случае, если нам понадобится расширить наш проект. Если вы перейдете к свойствам модуля AI 8xTC, вы увидите, что вы можете настроить каждый входной канал индивидуально, вы можете выбрать тип термопары, шкалу измерения и другие свойства. См. рисунок 10. Рисунок 10 – Настройка модуля ввода Далее вам нужно будет определить теги ввода-вывода и назначить каждый вход или выход, который у вас есть, правильной точке ввода-вывода в вашем ПЛК или в модулях ввода-вывода. См. рисунок 11. Рисунок 11 – Назначение тегов ввода Затем вы продолжаете назначать остальные теги входов и выходов, см. рисунки 12 и 13. Рисунок 12 – Назначение тегов ввода для ПЛК Рисунок 13 – Назначение тегов вывода вашему проекту Конфигурация ЧМИ Вашему проекту ПЛК, вероятно, понадобится ЧМИ, после выбора ЧМИ вы можете создать различные конфигурации. В этой статье мы покажем только, как настроить связь между ЧМИ и ПЛК. Как вы видите на предыдущем рисунке, вы выбираете ЧМИ, добавляя новое устройство, а затем выбираете ЧМИ. Смотрите рисунок 14. Рисунок 14 — Выбор ЧМИ Существуют разные способы настройки связи между ЧМИ и ПЛК, но самый простой способ — через страницу просмотра сети. Смотрите рисунок 15. Рисунок 15 — Настройка соединения ЧМИ Внутри страницы просмотра сети вы можете настроить соединение между ЧМИ и ПЛК, просто щелкнув на маленьком зеленом квадрате, представляющем Profinet, из ЧМИ и перетащив его на ПЛК. Затем TIA Portal нарисует зеленую линию между двумя модулями и автоматически предоставит ЧМИ IP-адрес для настройки связи между ними. Заключение Конфигурация оборудования — очень важный этап любого проекта ПЛК. Правильная конфигурация оборудования вашего ПЛК обеспечит выполнение необходимых функций проекта. Конфигурации оборудования включают выбор модулей ввода-вывода, включение или отключение определенных свойств ЦП и настройку различных устройств, таких как ЧМИ, с вашим ПЛК. -
SIEMENS-RU Обзор ПЛК Сименс – S7-1500, S7-1200, S7-400, S7-300
leigehong posted A plc and hmi russian article in PLC programming learning
Сименс – известная многонациональная компания, работающая в различных отраслях, включая энергетику, здравоохранение, транспорт и промышленную автоматизацию. Сименс была основана в 1847 году и с тех пор превратилась в глобальную корпорацию с операциями во многих странах. Сименс известна своими инновационными продуктами и услугами, и она была признана одной из самых устойчивых компаний в мире. В этой статье мы дадим обзор ПЛК Сименс, который составляет очень небольшую часть различных продуктов Сименс в секторе промышленной автоматизации. Содержание: Сименс в промышленной автоматизации. Сименс Различные семейства ПЛК. Обзор ПЛК Сименс S7. Simatic S7-1200. Simatic S7-1500. Simatic S7-300. Simatic S7-400. Simatic S7-ET 200 CPU Почему существует так много разных моделей? Как решить, какой тип ПЛК S7 лучше всего подходит для моего приложения? Заключение. Сименс в промышленной автоматизации Сименс является лидером в области промышленной автоматизации и известна своими высококачественными продуктами и решениями. Компания предлагает широкий спектр продуктов промышленной автоматизации, включая программируемые логические контроллеры (ПЛК), человеко-машинные интерфейсы (HMI), частотно-регулируемые приводы (VFD) и промышленные коммуникационные сети. Сименс также предоставляет программные решения для промышленной автоматизации, такие как Totally Integrated Automation TIA Portal, представляющий собой инженерную структуру, которая объединяет все программные инструменты автоматизации на одной платформе. Кроме того, Сименс разработала собственную платформу промышленного Интернета вещей (IIoT) под названием MindSphere, которая позволяет собирать и анализировать данные с подключенных устройств в промышленных средах. Сименс Различные семейства ПЛК Компания Сименс разработала два основных семейства ПЛК: Семейство ПЛК Simatic S5 Семейство ПЛК Simatic S7 Серия Simatic S5 была предыдущим поколением ПЛК Сименс, и она все еще используется в некоторых старых промышленных системах. Но больше не производится. Серия Simatic S7 — это текущая серия ПЛК Сименс. Она предлагает широкий спектр ЦП с различными уровнями производительности и функциональности для удовлетворения различных потребностей в автоматизации. Серия S7 известна своей надежностью, прочностью и гибкостью и широко используется в таких отраслях, как автомобилестроение, производство продуктов питания и напитков, а также фармацевтика. Обзор ПЛК Сименс S7 Поколение ПЛК Сименс S7 предлагает широкий спектр ЦП с различными уровнями производительности и функциональности для удовлетворения потребностей различных процессов промышленной автоматизации. Эти ЦП будут принадлежать к одному из следующих подсемейств: Simatic S7-1200 Simatic S7-1200 — это компактный ПЛК, разработанный для малых и средних приложений. Он предлагает гибкое и экономичное решение для автоматизации благодаря своей компактной конструкции, интегрированным возможностям связи и программирования. Simatic S7-1500 Simatic S7-1500 — это высокопроизводительный ПЛК, разработанный для средних и крупных приложений. Он предлагает расширенные функции, такие как управление движением, безопасность и защита, что делает его подходящим для сложных задач автоматизации. Simatic S7-300 Simatic S7-300 — это модульный ПЛК, который можно легко адаптировать к широкому спектру приложений. Он предлагает высокую вычислительную мощность, обширные возможности связи и широкий спектр модулей ввода-вывода, что делает его популярным выбором для многих отраслей промышленности. Simatic S7-400 Simatic S7-400 — это высокопроизводительный ПЛК, разработанный для требовательных приложений, которым требуется высокая вычислительная мощность и обширные возможности связи. Он предлагает большое количество модулей ввода-вывода, возможности резервирования и расширенную диагностику, что делает его подходящим для сложных задач автоматизации. Simatic S7-ET 200SP Simatic S7-ET 200SP — это компактная система удаленного ввода-вывода, которая может быть легко интегрирована с другими ПЛК Simatic S7. Он предлагает высокую степень гибкости, масштабируемости и модульности, что делает его подходящим для различных приложений автоматизации. Когда вы создаете новый проект в TIA Portal и пытаетесь добавить новое устройство, вы можете найти все доступные и поддерживаемые ЦП из разных семейств S7. См. рисунок 1. Рисунок 1 – Различные ПЛК доступны в поколении Simatic S7 ПЛК S7-1200 Simatic S7-1200 — это универсальный и экономичный ПЛК, который предлагает ряд моделей для удовлетворения различных потребностей автоматизации, что делает его популярным выбором для малых и средних приложений. Вот обзор различных моделей серии S7-1200: ЦП Simatic S7-1200: Это стандартные ЦП серии S7-1200, и они поставляются в различных версиях, включая ЦП 1211C, ЦП 1212C, ЦП 1214C, ЦП 1215C и ЦП 1217C. Они предлагают более расширенную функциональность, чем базовые контроллеры, включая встроенные интерфейсы связи и дополнительные опции ввода-вывода. Они также выпускаются в разных версиях, включая DC/DC/DC, DC/DC/RLY, AC/DC/RLY и AC/DC/TC. Они имеют ограниченную функциональность, но идеально подходят для простых задач управления. Simatic S7-1200 Safety Integrated: Это сертифицированная по безопасности версия S7-1200, которая включает функции безопасности, такие как входы безопасности, выходы безопасности и безопасную связь, для повышения безопасности системы автоматизации. Simatic S7-1200 SIPLUS: Это защищенная версия S7-1200, которая предназначена для работы в суровых условиях с экстремальными температурами, влажностью и вибрацией. См. рисунок 2 для различных моделей S7-1200. Рисунок 2 – Различные модели ЦП S7-1200 ПЛК S7-1500 Simatic S7-1500 — это мощный ПЛК, который предлагает ряд моделей для удовлетворения различных потребностей автоматизации, что делает его популярным выбором для требовательных приложений. Вот обзор различных моделей серии S7-1500: Simatic S7-1500 Стандартные ЦП: Это стандартные ЦП серии S7-1500, и они поставляются в разных версиях, включая CPU 1511-1 PN, CPU 1513-1 PN, CPU 1515-2 PN и CPU 1518-4 PN. Они предлагают высокоскоростную обработку и расширенные возможности связи, такие как Profinet, Profibus и Industrial Ethernet. Simatic S7-1500 Safety Integrated: Это сертифицированная по безопасности версия S7-1500, которая включает функции, связанные с безопасностью, такие как входы безопасности, выходы безопасности и безопасную связь, для повышения безопасности системы автоматизации. Контроллеры Simatic S7-1500 Advanced: Это расширенные версии S7-1500, которые предлагают дополнительные функции, такие как управление движением, высокоскоростной подсчет и расширенные возможности связи. Simatic S7-1500 T-CPU: Это расширенная версия процессоров S7-1500, которые имеют расширенные функции управления движением, такие как кинематические функции и функции зубчатой передачи и кулачкового механизма. Simatic S7-1500 TM NPU: Это нейронный процессор (NPU), который разработан для приложений машинного обучения и искусственного интеллекта (ИИ), таких как предиктивное обслуживание, контроль качества и оптимизация процессов. См. рисунок 3 для различных моделей S7-1500. Рисунок 3 – Различные модели S7-1500 ПЛК S7-300 ЦП Simatic S7-300: Это стандартные ЦП в серии S7-300, и они поставляются в разных версиях, включая ЦП 312C, ЦП 313C, ЦП 314C, ЦП 315-2DP, ЦП 317-2DP и ЦП 319-3PN/DP. Они предлагают высокую вычислительную мощность, расширенные возможности связи и широкий спектр возможностей ввода-вывода. ЦП Simatic S7-300 Fail-Safe: Это сертифицированные по безопасности версии ЦП S7-300, которые включают функции, связанные с безопасностью, такие как входы безопасности, выходы безопасности и безопасную связь, для повышения безопасности системы автоматизации. Компактные процессоры Simatic S7-300: Это компактные версии процессоров S7-300, которые предлагают уменьшенный размер и энергопотребление, что делает их идеальными для приложений с ограниченным пространством и источником питания. Процессоры Simatic S7-300 Technology: Это специализированные процессоры, которые разработаны для определенных приложений автоматизации, таких как управление движением, регулирование температуры и управление процессами. Распределенные контроллеры Simatic S7-300: Это модульные контроллеры, которые предлагают распределенные возможности ввода-вывода и связи, что делает их идеальными для приложений, требующих распределенной автоматизации. См. рисунок 4 для различных моделей S7-300. Рисунок 4 – Различные модели S7-300 ПЛК S7-400 ЦП Simatic S7-400: Это стандартные ЦП в серии S7-400, и они поставляются в разных версиях, включая ЦП 412-1, ЦП 414-1, ЦП 414-2, ЦП 416-2 и ЦП 417-4. Они предлагают высокую вычислительную мощность, расширенные возможности связи и широкий спектр возможностей ввода-вывода. ЦП Simatic S7-400H: Это высокодоступные ЦП, которые предлагают возможности резервирования для повышения доступности и надежности системы автоматизации. ЦП Simatic S7-400F/FH: Это сертифицированные по безопасности ЦП, которые включают функции, связанные с безопасностью, такие как входы безопасности, выходы безопасности и безопасную связь, для повышения безопасности системы автоматизации. Распределенные контроллеры Simatic S7-400: Это модульные контроллеры, которые предлагают распределенные возможности ввода-вывода и связи, что делает их идеальными для приложений, требующих распределенной автоматизации. См. рисунок 5 для различных моделей S7-400. Рисунок 5 – Различные модели S7-400 ПЛК Simatic S7-ET 200 Процессоры Simatic S7-ET 200: Это стандартные процессоры в серии S7-ET 200, и они поставляются в различных версиях, включая CPU 1511C-1 PN, CPU 1513-1 PN и CPU 1515-2 PN. Они предлагают высокую вычислительную мощность, расширенные возможности связи и широкий спектр возможностей ввода-вывода. Процессоры Simatic S7-ET 200F: Это сертифицированные по безопасности процессоры, которые включают функции, связанные с безопасностью, такие как входы безопасности, выходы безопасности и безопасная связь, для повышения безопасности системы автоматизации. Процессоры Simatic S7-ET 200SP: Это компактные процессоры, которые предлагают уменьшенный размер и энергопотребление, что делает их идеальными для приложений с ограниченным пространством и источником питания. См. рисунок 6 для различных моделей S7-ET200. Рисунок 6 – Различные модели S7-ET200 Почему существует так много различных моделей? Существует множество различных моделей ПЛК Сименс S7, которые предоставляют клиентам широкий спектр опций и функций на выбор, позволяя им выбрать ПЛК, который наилучшим образом соответствует их конкретным потребностям в автоматизации. Различные модели предлагают различные функции, вычислительную мощность, память, параметры связи и возможности ввода-вывода. Некоторые модели предназначены для определенных приложений, таких как управление движением, регулирование температуры и управление процессами, другие предназначены для систем автоматизации общего назначения. Кроме того, по мере развития технологий и возникновения новых требований к автоматизации Сименс продолжает разрабатывать и выпускать новые модели и версии ПЛК S7 с улучшенными функциями и возможностями, предоставляя клиентам новейшие технологии автоматизации, чтобы помочь им повысить производительность, сократить расходы и улучшить производительность их систем. Как решить, какой тип ПЛК S7 лучше всего подходит для моего приложения? Выбор правильного типа ПЛК S7 для вашего приложения требует тщательного рассмотрения нескольких факторов. Вот несколько общих шагов, которые помогут вам решить, какой тип ПЛК S7 лучше всего подходит для вашего приложения: Определите размер и сложность вашей системы автоматизации: Если у вас большая и сложная система автоматизации, вам может понадобиться высокопроизводительный ПЛК, такой как S7-400 или S7-1500, который может обрабатывать большое количество точек ввода-вывода и расширенные возможности связи. Если ваша система меньше и менее сложна, может быть достаточно меньшего ПЛК, такого как S7-1200 или S7-300. Определите требуемые типы и количество вводов-выводов: Каждый ПЛК S7 имеет разный диапазон опций ввода-вывода и емкость. Вам необходимо определить тип и количество точек ввода-вывода, которые вам нужны для вашего приложения, и выбрать ПЛК, который может их поддерживать. Учитывайте требуемую скорость обработки и производительность: Различные ПЛК S7 имеют разные скорости обработки и возможности производительности. Вам необходимо определить требуемую скорость обработки и выбрать ПЛК, который может удовлетворить ваши требования к производительности. Оцените требуемые параметры связи: Различные ПЛК S7 предлагают различные параметры связи, такие как Ethernet, Profibus, Profinet и AS-i. Вам необходимо определить требуемые протоколы связи для вашего приложения и выбрать ПЛК, который может их поддерживать. Учитывайте требуемые функции безопасности: Если для вашего приложения требуются функции безопасности, такие как входы безопасности, выходы безопасности и безопасная связь, вам может понадобиться сертифицированный по безопасности ПЛК, такой как S7-1500F или S7-400F. Заключение Сименс предлагает широкий спектр продуктов промышленной автоматизации, включая различные модели ПЛК с различными функциональными возможностями и производительностью, включая ЦП S7-1200, S7-1500, S7-300 и S7-400. Множество различных моделей ПЛК Сименс S7 предоставляют клиентам широкий выбор опций и функций на выбор. При выборе модели ПЛК, которая наилучшим образом соответствует вашему процессу, необходимо учесть ряд моментов, среди которых — количество вводов-выводов, требования безопасности и параметры связи. -
Последовательное программирование ПЛК для пневматических клапанов
leigehong posted A plc and hmi russian article in PLC programming learning
Это программа ПЛК для работы пневматического клапана в последовательном режиме. Последовательное программирование ПЛК для пневматических клапанов Напишите релейную логику для последовательного программирования ПЛК для пневматических клапанов, чтобы управлять цилиндрами в последовательном режиме. Решение: В этой системе есть два цилиндра и две кнопки, которые подключены к ПЛК. Кнопки подключены к входам ПЛК, а цилиндры подключены к выходам ПЛК. Для работы системы существуют следующие условия: – При нажатии START PB цилиндр A должен запуститься, а цилиндр B должен запуститься через 5 секунд после цилиндра A. При нажатии STOP PB оба цилиндра A и B должны быть остановлены. Теперь, чтобы выполнить следующие условия, мы должны использовать таймер, который задерживает работу цилиндра B. Список входов/выходов Входы: X1 - START PB X2 - STOP PB Выходы: Y0 - Цилиндр A Y1 - Цилиндр B Релейная диаграмма последовательной работы цилиндров Пояснение программы: В звене 1 мы использовали STRAT PB (X1) для запуска цилиндра A (Y0). Здесь мы использовали NC контакт STOP PB (X2) для остановки цилиндра A (Y0). Параллельно с контактом X1 мы использовали NO контакт Y0 для защелкивания выхода. В звене 2 мы использовали таймер T0 для подсчета задержки для цилиндра B (Y1). В звене 3 мы использовали нормально разомкнутый контакт T0, поэтому после истечения времени задержки цилиндр B (Y1) включится. -
Как читать паспорт ПЛК? – Важные замечания о ПЛК
leigehong posted A plc and hmi russian article in PLC programming learning
В этой статье мы узнаем, как читать паспорт ПЛК и важные замечания о спецификациях ПЛК, которые полезны для инженеров по автоматизации. Также мы поговорим о том, какая различная информация предоставляется в паспорте ПЛК, и как она может быть полезна мне как программисту или инженеру по установке. Содержание: Какую информацию предоставляет паспорт? Примеры информации в паспорте ПЛК Номинальный ток и напряжение Память ПЛК Различные блоки и области данных, адресованные Характеристики входов и выходов Интерфейсы и протоколы связи Условия окружающей среды Важные замечания по чтению паспорта. Какую информацию предоставляет паспорт? Паспорт ПЛК предоставит вам много информации; эта информация будет охватывать почти все функции, которые может предоставить ПЛК. Но часть этой информации будет не так важна для вас, как другая, это зависит от того, какова ваша область применения ПЛК. Если вы инженер по установке, то вы сосредоточитесь на технических характеристиках ПЛК, таких как напряжение питания, тип входов и выходов и номинальная мощность этих точек ввода-вывода. Вы также уделите больше внимания размеру ПЛК и условиям окружающей среды во время работы ПЛК, чтобы определить размер электрической панели, которую вы будете использовать для ПЛК, а также методы охлаждения, используемые для ПЛК. Как читать техническое описание ПЛК? С другой стороны, если вы просто программист ПЛК, то предыдущая информация может быть не столь критична для вас, вместо этого вы сосредоточитесь на данных, связанных, например, с памятью ПЛК, количеством доступных входов-выходов и возможностью добавления новых модулей. Вы также обратите внимание на некоторую другую информацию, такую как языки программирования, поддерживаемые этим ПЛК, поскольку не все ПЛК поддерживают все языки программирования. Связь и сетевое взаимодействие также являются другими важными моментами, которые вас как программиста будут интересовать. Техническое описание ПЛК всегда начинается с общего обзорного описания ПЛК. См. рисунки 1 и 2 для простых примеров S7-1200 и S7-1500. Рисунок 1 – 1-я страница листа данных ПЛК S7-1500. Рисунок 2 – 1-я страница листа данных ПЛК S7-1200. Как вы видите, общее описание ПЛК дано в начале листа данных. Это общее описание даст вам базовое представление о ПЛК и о том, подходит ли он для вашего приложения или нет. Примеры информации в листе данных ПЛК В этой статье мы будем использовать лист данных ПЛК S7-1200, чтобы показать некоторую различную информацию, которую он содержит. Номинальные значения тока и напряжения В определенном разделе паспорта должна быть некоторая информация о номинальных значениях напряжения и тока ПЛК, некоторым ПЛК потребуется источник постоянного тока, а другим — переменного тока, также входы и выходы ПЛК могут иметь разные номинальные значения, что как раз и происходит в нашем ПЛК, где напряжение питания ПЛК составляет 220 В переменного тока, но номинальные значения для входов/выходов — постоянный ток. См. рисунок 3. Рисунок 3 — Номинальные значения напряжения и тока. Память ПЛК В паспорте будут указаны различные возможности памяти ПЛК, это покажет, какой объем рабочей памяти у вас есть и можете ли вы ее расширить или нет, см. рисунок 4. Рисунок 4 — Описание памяти ПЛК. Различные блоки и адресация областей данных В этом разделе вы узнаете о различных блоках, которые вы можете использовать с вашим ПЛК, таких как таймеры, счетчики, FC и т. д. И максимальное количество блоков, которые вы можете использовать. Вам также будет предоставлена память областей данных и их сохраняемость. См. рисунок 5. Рисунок 5 — Доступны блоки ЦП. Характеристики входов и выходов Это еще одни важные данные, которые следует предоставить, с помощью этой информации вы узнаете количество входов/выходов, предоставленных вашим ПЛК, и как подключить и использовать каждый вход/выход. См. рисунки 6 и 7. Рисунок 6 — Цифровые входы ПЛК. Как вы можете видеть, у нас есть 8 точек DI в нашем ПЛК, 6 из которых могут использоваться для входов HSC (высокоскоростной подсчет), таких как энкодеры. Также сообщается, что входное напряжение составляет 24 В постоянного тока, что означает, что вы не можете напрямую подключать датчики переменного тока входов к ПЛК. Рисунок 7 — Цифровые выходы доступны в нашем ПЛК. Если ПЛК имеет аналоговые входы/выходы, то это также будет указано в техническом описании. См. рисунок 8 Рисунок 8 — Описание аналоговых входов/выходов. Интерфейсы и протоколы связи Интерфейсы связи, доступные в вашем ПЛК, а также поддерживаемые им протоколы связи также будут указаны в техническом описании. См. рисунок 9. Рисунок 9 — Интерфейс связи ПЛК. Как вы видите, у нашего ПЛК есть только один интерфейс связи, который представляет собой интерфейс PROFINET, представленный в виде порта RJ-45. Однако сам ПЛК может поддерживать множество протоколов связи, таких как PROFIBUS и AS-Interface. См. рисунок 10. Рисунок 10 – Поддерживаемые протоколы связи. Условия окружающей среды Это еще одна очень важная информация, которую вам следует знать о вашем ПЛК, поскольку она поможет вам определиться с типом корпуса и охлаждения, которые лучше всего подойдут для вашего ПЛК. См. рисунок 11. Рисунок 11 – Условия окружающей среды ПЛК. Важные замечания по чтению паспорта ПЛК Не все паспорта ПЛК содержат одинаковую информацию, поскольку разные ПЛК будут иметь разные функции и возможности, а значит, и разную информацию для отображения. Не вся информация внутри паспорта будет важна для вас, это будет зависеть от того, являетесь ли вы программистом ПЛК или инженером по установке, как мы уже упоминали ранее. Ничего страшного, если вы не понимаете часть информации в паспорте, как мы уже говорили, паспорт предоставит информацию почти обо всех функциях, поддерживаемых вашим ПЛК, вы можете не знать о некоторых из этих функций и, возможно, вам даже никогда не понадобится их использовать. Например, OPC UA или функции веб-сервера. Поэтому если вы найдете какие-то данные, которые вам непонятны, это не обязательно будет означать, что ваш ПЛК не подходит для вашего проекта. Заключение Чтение спецификации ПЛК важно для того, чтобы решить, подходит ли ПЛК для вашего приложения или нет. Также важно решить, с какими типами входов-выходов и номиналами напряжения питания вы можете работать. Попробуйте прочитать спецификацию различных моделей ПЛК и посмотрите, сможете ли вы понять основную информацию, представленную в спецификации. -
SIEMENS-RU Что такое версия прошивки ПЛК? – Аппаратное обеспечение ПЛК Сименс
leizuofa posted A plc and hmi russian article in PLC programming learning
В этой статье мы поговорим о серьезной проблеме, которая часто возникает, когда вы начинаете программировать свой ПЛК, это распространенные ошибки версии прошивки и способы их устранения. Содержание: Какова версия прошивки ПЛК? Почему версия прошивки может вызывать проблемы? Как узнать версию прошивки аппаратного ПЛК? Как устранять ошибки версии прошивки? Выводы. Какая версия прошивки ПЛК? Прошивка ПЛК или модуля ПЛК (вводы-выводы, модули связи и т. д.) — это просто внутреннее программное обеспечение, установленное в ПЛК, которое отвечает за то, что на самом деле может делать оборудование. Версия прошивки определяет, какие внутренние функции есть у вашего ПЛК, такие как протоколы безопасности, внутренние функции оптимизации, лучшая обработка времени и другие различные функции и возможности. ПЛК со старой версией прошивки будет иметь меньше функций и внутренних возможностей, чем ПЛК с новой версией прошивки. На рисунках 1 и 2 показано, как один и тот же аппаратный ПЛК будет иметь разные функции и возможности производительности с разными установленными версиями прошивки. Рисунок 1 – Версия прошивки V4.0 Рисунок 2 – Версия прошивки V4.4 Вы заметили, что тот же самый ЦП теперь имеет больше функций, добавленных просто путем обновления до более высокой версии прошивки? С более высокой версией прошивки V4.4 ЦП теперь имеет OPC UA среди других функций, добавленных к его возможностям производительности. Почему версия прошивки может вызывать проблемы? Смотрите, вы обычно начинаете свой проект ПЛК, выбирая ПЛК, а затем начинаете программирование. Вы выбираете свой ПЛК в TIA Portal в соответствии с одним из двух пунктов: Вы уже приобрели аппаратный ПЛК, поэтому вы выбираете тот же ПЛК, который у вас фактически есть в проекте TIA Portal. Вы все еще не приобрели ПЛК, поэтому вы выберете ПЛК в TIA Portal, который соответствует вашим требованиям, а затем купите его позже. В любом из двух случаев, если версия прошивки ПЛК, выбранная в проекте TIA Portal, отличается от версии прошивки фактического оборудования, у вас возникнут проблемы. И ваша программа даже не будет загружена в аппаратный ПЛК. Поэтому вы всегда должны следить за тем, чтобы версия прошивки фактического ПЛК соответствовала ПЛК, выбранному в TIA Portal. Стоит отметить, что если версия прошивки, выбранная в TIA Portal, старше фактического ПЛК, у вас не возникнет никаких проблем с вашей программой, вы потеряете некоторые функции и возможности ПЛК, но ваша программа будет работать нормально. Проблемы возникнут, если верно обратное, если версия прошивки, выбранная в TIA Portal, новее фактического ПЛК, у вас возникнут проблемы. Вот почему, если вы не знаете версию прошивки вашего оборудования, вам следует выбрать более старую версию в проекте TIA Portal. Как узнать версию прошивки аппаратного ПЛК? Мы можем узнать версию прошивки аппаратного ПЛК, которая у нас есть, одним из двух способов: Из самого ПЛК Версия прошивки любого модуля ПЛК всегда записана где-то на аппаратном устройстве. Смотрите следующие рисунки. Рисунок 3 — Версия прошивки FS:04 Рисунок 4 — Версия прошивки V7.0.5 Из программного обеспечения TIA Portal Используя программное обеспечение TIA Portal, вы можете подключить свой ПЛК к своему TIA Portal и выполнить поиск устройства, затем вы можете найти версию прошивки аппаратного устройства, см. следующие шаги. Вам даже не нужно создавать новый проект; Достаточно только вида проекта TIA Portal, см. рисунок 5. Рисунок 5 – Вид проекта TIA Portal без создания проекта. Из онлайн-доступа найдите свой ПЛК. Поскольку соединение между TIA Portal и ПЛК осуществляется через кабель Ethernet, мы будем использовать опцию подключения Ethernet. Дважды щелкните на обновлении доступных устройств, чтобы начать поиск вашего ПЛК. См. рисунок 6. Рисунок 6 – Обновление доступных устройств для поиска вашего ПЛК. Если есть соединение между ПЛК и TIA Portal, то программное обеспечение должно найти ваш ПЛК. См. рисунок 7. Рисунок 7 – Ваш ПЛК был найден программным обеспечением. Теперь дважды щелкните на Онлайн и диагностика, чтобы отобразить информацию о вашем ПЛК. См. рисунок 8. Рисунок 8 – Онлайн-информация о ПЛК. Из атрибута General вы можете узнать версию прошивки вашего ПЛК, как показано на предыдущем рисунке. Вы также можете узнать версию прошивки из атрибута Functions. См. рисунок 9. Рисунок 9 – Версия прошивки из атрибута functions. Как обрабатывать ошибки версии прошивки? Сначала давайте создадим сценарий ошибки версии прошивки, а затем посмотрим, как обрабатывать и исправлять эту ошибку. Начнем с создания нового проекта, а затем добавим новое устройство. В этом примере ПЛК мы намеренно выберем более новую версию прошивки, чем у фактического аппаратного ПЛК. Мы знаем, что прошивка нашего ПЛК — V4.0, но в TIA Portal мы выберем версию прошивки V4.4. Смотрите рисунок 10. Рисунок 10 — Добавьте новый ПЛК с более высокой версией прошивки. Нажмите OK, чтобы добавить свое устройство, и все, вы создали ситуацию, которая вызовет ошибку прошивки. Чтобы это увидеть, давайте попробуем загрузить проект в наш ПЛК. Обратите внимание, что мы даже не написали никакого кода. Просто загрузите его в ПЛК. Смотрите рисунок 11. Рисунок 11 — Загрузка в ПЛК не удалась, несовместимая прошивка. Как вы видите на предыдущем рисунке, как только вы попытаетесь загрузить проект в ПЛК, появится ошибка о том, что версии прошивки ПЛК и TIA Portal не совпадают. Вы даже можете увидеть это, если попытаетесь выйти в Интернет. Смотрите рисунок 12. Рисунок 12 — ПЛК находится в состоянии ошибки. Чтобы устранить эту ошибку, нам просто нужно изменить версию прошивки ПЛК, выбранную в проекте TIA Portal, на более старую или ту же версию прошивки, что и у фактического аппаратного ПЛК. Для этого мы переходим на страницу свойств ПЛК и выбираем Изменить версию прошивки в атрибуте Общие. Смотрите рисунок 13. Рисунок 13 — Параметр Изменить версию прошивки. После нажатия кнопки Изменить версию прошивки появится окно изменения устройства; в этом окне вы сможете изменить версию прошивки. См. рисунок 14. Рисунок 14 – Окно изменения устройства. В окне изменения устройства вы увидите текущее устройство, которое вы выбрали ранее, и новое устройство, прошивку которого вам нужно сопоставить с той, что у вас есть на самом деле. Обратите внимание, что при выборе более низкой прошивки, например V4.3, информация в нижней части окна покажет вам, какие функции вы потеряли при переходе на более низкую прошивку, как вы видите на предыдущем рисунке. Теперь измените прошивку нового устройства на версию V4.0 аппаратного ПЛК. И обратите внимание, сколько функций и возможностей ПЛК потерял, просто выбрав более низкую прошивку. См. рисунок 15. Рисунок 15 – Сопоставление прошивки между аппаратным ПЛК и программным обеспечением. Нажмите OK, чтобы подтвердить изменения, и теперь попробуйте снова загрузить свой проект в ПЛК. Вы заметите, что теперь проект будет загружен в ПЛК без каких-либо ошибок. См. рисунок 16. Рисунок 16 – Проект загружен в ПЛК. Успешная загрузка проекта в ПЛК означает, что ошибка версии прошивки теперь исправлена. Вы также можете выйти в Интернет и проверить это из онлайн-просмотра проекта ПЛК. См. рисунок 17. Рисунок 17 – Онлайн-просмотр проекта. Зеленые галочки и круги, которые вы видите на предыдущем рисунке, указывают на то, что все конфигурации программного обеспечения и оборудования совпадают и совместимы друг с другом. Заключение Ошибки версии прошивки – очень распространенная проблема, с которой можно столкнуться при создании нового проекта в TIA Portal. Лучше всего знать версию прошивки имеющегося у вас аппаратного устройства и сопоставить ее с прошивкой выбранного устройства в TIA Portal. Если вы не знаете прошивку аппаратного устройства, то вам следует выбрать самую старую версию выбранного модуля в TIA Portal. Чтобы избежать проблем с прошивкой вашего проекта. -
SIEMENS-RU Использование битов памяти тактовых импульсов в TIA Portal – Сименс PLC
leizuofa posted A plc and hmi russian article in PLC programming learning
В этой статье мы рассмотрим биты памяти тактовых импульсов в TIA Portal и Siemens PLC. И покажем, как включить использование битов памяти и как это может помочь вам избежать кодирования большого количества логических линий для получения простой функции, которую ваш ПЛК уже выполняет внутри. Содержание: Что такое биты памяти тактовых импульсов? Необходимость в битах памяти тактовых импульсов. Включение памяти тактовых импульсов в моем проекте. Простой пример программы. Моделирование программы. Заключение. Что такое биты памяти тактовых импульсов? Память тактовых импульсов – это битовая память, которая периодически изменяет свой двоичный статус в соотношении 1:1. Это просто означает, что она периодически изменяет свой статус между истинным и ложным с предопределенной частотой. В ЦП предварительно определены 8 бит памяти тактовых импульсов, поэтому их также называют байтами памяти тактовых импульсов. Вы решаете, какой байт памяти ЦП станет байтом памяти тактовых импульсов, когда вы включаете использование байта памяти и назначаете параметры памяти тактовых импульсов. Необходимость в битах памяти часов Вам не обязательно нужна память часов, так как вы можете создать свою собственную логику и достичь той же функциональности. Тем не менее, ее полезно иметь в кармане, когда вам понадобится такая функциональность. Так как создание 8 отдельных логических схем для 8 бит памяти часов займет некоторое время и усилия и может сделать вашу программу неоправданно большой. Вы можете использовать память часов, например, для активации мигающих индикаторных ламп или для инициирования периодически повторяющихся операций, таких как запись фактических значений. Каждому биту байта памяти битов часов назначается частота. См. следующую таблицу. Бит байта памяти часов 7 6 5 4 3 2 1 0 Период (с) 2.0 1.6 1.0 0.8 0.5 0.4 0.2 0.1 Частота (Гц) 0.5 0.625 1 1.25 2 2.5 5 10 Таблица 1. Частоты битов памяти часов согласно справочному руководству TIA Portal. Включение памяти часов в ПЛК Siemens Чтобы использовать биты памяти часов в вашей логике, вам необходимо включить использование байта памяти часов в свойствах ЦП. См. рисунок 1. Рисунок 1 — Включение использования байта памяти часов Вы можете выбрать адрес байта, который вы хотите назначить для памяти часов, просто убедитесь, что он не конфликтует с другими байтами памяти в логике вашего ПЛК. Как вы видите на рисунке, мы выбрали адрес 0, поэтому, если вам нужно использовать бит синхронизации 2 Гц, вы будете использовать бит %M0.3 Пример программы конвейерной ленты Tia Portal В предыдущей статье мы использовали простой пример конвейерной ленты, перемещающей продукт между началом и концом ленты. Был светодиод индикации, который включается, когда лента работает. Смотрите рисунок 2. Рисунок 2 — Простая система конвейерной ленты Мы будем использовать тот же пример, но на этот раз мы сделаем светодиод более интуитивно понятным, используя биты памяти часов. На этот раз мы будем использовать биты памяти часов со светодиодом, чтобы дать индикацию различных случаев процесса. Описание процесса В системе конвейерной ленты, управляемой ПЛК, на двух концах ленты есть два датчика присутствия для обнаружения наличия продукта. Когда продукт обнаружен в начале ленты, конвейер можно запустить с помощью кнопки запуска, а когда продукт достигает конца, лента автоматически остановится и не будет работать снова, пока новый продукт не будет обнаружен снова в начале и не будет нажата кнопка ПУСК. Светодиод индикации должен иметь более одного поведения в зависимости от текущего случая системы. Эти случаи следующие: Если в начале ленты есть продукт, но кнопка ПУСК еще не нажата, светодиод должен мигать с частотой 0,5 Гц. Если конвейер перемещает продукт, светодиод должен мигать с частотой 2 Гц. Когда продукт достигает конца ленты, светодиод должен загореться. Когда продукт удаляется с конца, светодиод выключается. Проект IO У нас есть 4 цифровых входа, как показано ниже: START: кнопка запуска для запуска конвейера. STOP: кнопка остановки для остановки конвейера в любой момент. P1: датчик присутствия в начале ленты. P2: датчик присутствия в конце ленты. У нас также есть 2 цифровых выхода, как показано ниже: MOTOR: при активации конвейерная лента начнет работать. LED: будет активирован в соответствии с последовательностью, упомянутой ранее. Программный код Сначала мы выбираем наш ПЛК и назначаем теги IO. Смотрите рисунок 3 Рисунок 3 — Назначение тегов входов и выходов Не забудьте включить использование байта памяти часов, как показано на рисунке 1. У нас будет две сети кода, одна для управления лентой конвейера, а другая для светодиодной логики. Смотрите рисунки 4 и 5 для логики. Рисунок 4 – Логика управления конвейерной лентой Рисунок 5 – Логика управления светодиодом Как вы видите, использование битов памяти часов сделало логику простой и легкой для чтения. Представьте, если бы вы создали ту же логику без использования этих битов, вы бы использовали много таймеров, и ваша логика была бы довольно сложной. Моделирование программы Ранее мы объясняли, как использовать PLCSim для моделирования нашего кода. В этом примере мы будем использовать последовательность моделирования для создания той же последовательности фактического процесса и посмотрим, будет ли поведение светодиода соответствовать предполагаемой функциональности или нет. Начните с компиляции нашего кода и запуска новой симуляции. Смотрите рисунок 6. Рисунок 6 – Программная симуляция Как вы можете видеть, светодиод теперь выключен; в начале или конце конвейера нет продуктов. Мы создали последовательность моделирования и посмотрим, как светодиод будет реагировать на различные условия процесса. Смотрите следующую анимацию. Посмотрите, сможете ли вы заметить, как поведение светодиода меняется при различных условиях процесса. Заключение Биты тактовой памяти включаются и выключаются с предопределенной частотой. Они очень полезны, когда вам нужно активировать мигающие индикаторные лампы или инициировать периодически повторяющиеся операции. Использование битов тактовой памяти сэкономит вам время и усилия, затрачиваемые на получение той же функциональности посредством вашей собственной логики. -
Что такое аналоговые входы? – Обработка аналоговых сигналов в ПЛК
leizuofa posted A plc and hmi russian article in PLC programming learning
В этой статье мы поговорим об обработке аналоговых входных сигналов в ПЛК и о том, как мы можем обрабатывать эти сигналы в процессе автоматизации. Содержание: Что такое аналоговые входные сигналы? Обработка аналоговых входных сигналов в S7-1200 и 1500. Обработка аналоговых входных сигналов в S7-300 и 400. Что лучше всего подходит для управления? – аналоговые или цифровые сигналы Заключение. Что такое аналоговые входные сигналы? Прежде чем мы углубимся в обработку аналоговых входных сигналов в TIA Portal, давайте сначала разберемся с аналоговыми входами. Любой системе автоматизации нужны входные сигналы для понимания состояния процесса, чтобы иметь возможность принимать решения, которые будут поддерживать его работу и стабильность. Эти входные сигналы являются либо дискретными, либо цифровыми входными сигналами, которые имеют форму значений 0 или 1. Другой тип входа – аналоговые сигналы. Аналоговый сигнал — это просто непрерывное представление физической величины в вашей системе, поэтому, если вам нужно контролировать температуру или давление в вашем процессе, аналоговый сигнал даст вам непрерывные и мгновенные значения, которые соответствуют реальным изменениям физической величины. Аналоговые сигналы предоставляются во многих стандартных формах, но чаще всего это 0–10 В или 4–20 мА. Это будет зависеть от типа используемого вами аналогового датчика, а также от типа аналогового модуля ПЛК, который вы можете использовать. Предположим, что аналоговый датчик давления имеет диапазон измерения 0–10 бар и выход в форме 4–20 мА. Обычно аналоговый сигнал будет иметь линейную зависимость между измеренной физической величиной и соответствующим выходом. Это означает, что если датчик измеряет 0 бар, он выдаст сигнал 4 мА, а если он измеряет 10 бар, он выдаст сигнал 20 мА, и то же самое между ними также будет линейным. См. рисунок 1. Рисунок 1 – Аналоговое представление сигнала. ПЛК по-прежнему не может понять 4-20 мА физической величины, и здесь вступает в дело аналоговый модуль ПЛК. Аналоговый модуль выполнит еще одно преобразование этого представления, чтобы ПЛК мог его фактически понять. Аналоговый модуль преобразует аналоговые измерения мА в цифровые значения, которые зависят от типа модуля, но для ПЛК Siemens эти значения всегда находятся в диапазоне 0 – 27648. Таким образом, если датчик измеряет 0 бар, выходной сигнал будет равен 4 мА, и он будет преобразован в 0-е значение внутри ПЛК. См. рисунок 2. Рисунок 2 – Аналогово-цифровое преобразование входного сигнала ПЛК затем преобразует значения 0-27648 в эквивалентное физическое измерение в зависимости от вашего программирования, к которому мы вернемся позже. См. рисунок 3. Рисунок 3 – Масштабированное измеренное значение внутри ПЛК. Аналоговая обработка температур совершенно иная, поскольку поведение датчика температуры с физическими изменениями не линейно, как у датчика уровня или давления. Вот почему существуют стандартизированные таблицы для различных типов датчиков температуры, которые сообщают, какая температура соответствует какому значению датчика. Вот почему при измерении температуры вы должны выбрать специальные типы входных модулей вашего ПЛК, где эти стандартные таблицы определены внутри, и вы напрямую получаете значение температуры, соответствующее измерению датчика. Вот почему вы не можете найти датчик температуры, на котором написан диапазон измерения напряжения или тока. Вы найдете только написанный тип датчика, например, PT100, PT1000, KTY84, PTC и т. д. Обработка аналогового ввода в S7-1200 и 1500 Чтобы увидеть, как мы обрабатываем аналоговые сигналы в современных ПЛК семейства S7, давайте начнем с создания нового проекта и добавления ЦП S7-1200. Мы также добавим модуль аналогового ввода/вывода. См. рисунок 4. Рисунок 4 — Добавление модуля аналогового ввода. Теперь давайте определим наш тег входного сигнала, предположим, что датчик давления может измерять давление от 0 до 10 бар и выдает соответствующий сигнал от 4 до 20 мА. Мы определим этот входной сигнал в первых тегах входного модуля. См. рисунок 5. Рисунок 5 — Определение тега входного сигнала. Как мы уже говорили, входной модуль может работать с различными входными сигналами, будь то 0–10 В или 4–20 мА, поэтому нам нужно назначить правильную конфигурацию для нашего датчика. Как мы уже говорили, сигнал давления подается в форме 4–20 мА, поэтому мы настроим наш входной канал на него. Смотрите рисунок 6. Рисунок 6 – Настройка входного канала Теперь, когда мы закончили часть конфигурации оборудования, мы начнем программировать наш код обработки. Для этого мы создадим функцию FC, чтобы мы могли повторно использовать ее каждый раз, когда у нас есть аналоговый сигнал для обработки. Внутри этого FC мы создадим логику, которая будет обрабатывать аналоговый сигнал и преобразовывать его в физическое измеренное значение. В TIA Portal есть предопределенные инструкции, которые мы можем использовать для этого, эти инструкции — инструкции NORM_X и SCALE_X. Смотрите рисунок 7. Рисунок 7 – Инструкции NORM_X и SCALE_X Как вы можете видеть, NORM_X нормализует аналоговый вход в значение от 0 до 1, а затем SCALE_X будет использоваться для масштабирования этого нормализованного значения в диапазоне измеренного физического значения, которое в случае нашего датчика составляет от 0 до 10 бар. Мы использовали функцию FC вместо того, чтобы писать наш код непосредственно в главном OB1, чтобы сделать наш код пригодным для повторного использования с любым аналоговым сигналом. Каждый раз, когда у меня есть новый аналоговый входной сигнал, я просто перетаскиваю блок FC в наш главный OB1 и просто записываю связанные параметры требуемого входа. Смотрите рисунок 8. Рисунок 8 – Перетащите свой FC. Когда вы перетаскиваете FC в свой главный OB1, вам будет предложено указать связанный параметр этого вызова функции. В нашем случае входной сигнал — это датчик давления, а ScaledMIN и ScaledMAX — это диапазон значений измерения 0–10 бар. Смотрите рисунок 9. Рисунок 9 — Назначение параметров функции нашему датчику давления. Если у меня есть новый аналоговый вход, то мне не придется заново создавать логику ПЛК, я просто перетащу FC в главный OB1 и назначу новые параметры датчика. Предположим, что теперь у нас есть новый аналоговый датчик для измерения уровня внутри резервуара с водой от 0 до 100 % резервуара. Мы выполним те же шаги, что и раньше, начав с определения нового входного тега. Смотрите рисунок 10. Рисунок 10 — Определение нового датчика уровня Далее мы настроим входной канал для датчика уровня, как на рисунке 6. Мы предположим ту же конфигурацию. Далее мы просто перетащим созданный нами FC и просто назначим параметры датчика уровня. Смотрите рисунок 11. Фото 11 – Повторное использование FC с датчиком уровня. Как вы можете видеть на предыдущем рисунке, это одно из многих преимуществ использования функций FC в вашей логике, поскольку это помогло сократить объем программирования, который мы сделали. Теперь у вас есть универсальный код, который можно многократно использовать с любым входным аналоговым сигналом, который вам может понадобиться в вашем проекте ПЛК. Смотрите следующую симуляцию обработки входных сигналов в ПЛК Siemens. Аналоговые входы в S7-300 и S7-400 Чтобы увидеть, как мы обрабатываем аналоговые сигналы в старых ПЛК семейства S7, таких как S7-300, давайте начнем с создания нового проекта и добавления ЦП S7-300. Выбранный ПЛК уже имеет достаточно каналов аналогового ввода, поэтому мы не будем добавлять аналоговые модули. См. рисунок 12. Фото 12 — Добавление ПЛК S7-300. Затем мы определим новый тег аналогового датчика, предположим, что это датчик давления с диапазоном измерения от 0 до 100 бар и выходом 4–20 мА. Мы настроим входной канал ПЛК, как мы делали это ранее с S7-1200, чтобы он соответствовал нашему датчику аналогового ввода. См. рисунок 13. Фото 13 — Настройте входной канал. Теперь к части кодирования ПЛК: инструкция в s7-300, которая используется для обработки аналоговых сигналов, отличается от s7-1200. В ПЛК S7-1200 мы должны использовать NORM_X и SCALE_X. но в S7-300 у нас нет нормализованной инструкции, используется только инструкция SCALE. Смотрите рисунок 14. Рисунок 14 – Инструкция SCALE в S7-300 Как вы можете видеть на предыдущем рисунке, инструкция SCALE в S7-300 в некотором роде похожа на инструкции NORM_X и SCALE_X, объединенные вместе. Есть еще одно явное отличие, а именно вход BIPOLAR. Вход BIPOLAR используется для указания того, следует ли интерпретировать значение параметра IN как биполярное или униполярное. Параметр может принимать следующие значения: BIPOLAR = 1, тогда предполагается, что входное целочисленное значение находится в диапазоне от -27648 до +27648. Например, когда аналоговый датчик выдает нам выходной сигнал в диапазоне от -10 В до +10 В BIPOLAR = 0, то предполагается, что входное целочисленное значение находится в диапазоне от 0 до 27648. Например, когда датчик выдает нам выходной сигнал в диапазоне 0-10 В И это просто как обрабатывать аналоговые входные сигналы в ПЛК S7-1200 и S7-300. Что лучше для управления? — Аналоговые или цифровые сигналы Послушайте, оба сигнала важны и полезны для любой системы автоматизации, но я лично предпочитаю использовать аналоговые сигналы, если могу, потому что наличие аналоговых сигналов измерений для физических величин процесса даст мне непрерывный мониторинг параметров процесса, что позволит мне лучше отслеживать и контролировать мой процесс. Кроме того, наличие непрерывного мониторинга параметров позволит мне устанавливать различную логику управления для различных значений сигнала, это упростит наличие диапазона значений для управления процессом и других диапазонов значений для аварийных сигналов и предупреждений об отклонении процесса от нормальной работы. Заключение Аналоговый сигнал — это непрерывное представление физической величины в вашей системе. Аналоговые входы чаще всего предоставляются в диапазоне 0–10 В или 4–20 мА. Аналоговая обработка сигнала означает преобразование аналогового сигнала 4–20 мА в диапазон значений, который соответствует реальной физической величине и который может понять ПЛК. В современном семействе ПЛК S7, например S7-1200, обработка аналоговых сигналов выполняется с помощью инструкций NORM_X и SCALE_X. В более старом семействе ПЛК S7, например S7-300, обработка аналоговых сигналов выполняется с помощью инструкции SCALE, которая по сути является комбинацией инструкций NORM_X и SCALE_X.