Jump to content

Search the Community

Showing results for tags 'SIEMENS-RU'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


PLC & HMI product application technology forum!

  • Commonly used PLC brand product application technology discussion area!
    • Siemens PLC Forum
    • Allen Bradley PLC Forum
    • Mitsubishi PLC Forum
    • Schneider PLC Forum
    • Omron PLC Forum
    • B&R PLC Forum
    • ABB PLC Forum
    • Honeywell PLC Forum
    • Emerson PLC Forum
    • Hitachi PLC Forum
    • Rexroth PLC Forum
    • IDEC PLC Forum
    • Koyo PLC Forum
    • Delta PLC Forum
    • Eaton PLC Forum
    • Keyence PLC Forum
    • LS PLC Forum
    • Panasonic PLC Forum
    • Phoenix PLC Forum
    • Pilz PLC Forum
    • WAGO PLC Forum
    • Yokogawa PLC Forum
    • Toshiba PLC Forum
    • PEPPERL+FUCHS PLC Forum
  • Commonly used HMI brand product application technology discussion area!
    • Siemens HMI Forum
    • Fatek HMI Forum
    • Advantech HMI Forum
    • Weintek HMI Forum
    • Mitsubishi HMI Forum
    • Fuji HMI Forum
    • Pro-face HMI Forum
    • B&R HMI Forum
    • IDEC HMI Forum
    • Schneider HMI Forum
    • Weinview HMI Forum
    • LS HMI Forum
    • Omron HMI Forum
    • Panasonic HMI Forum
    • Delta HMI Forum
    • MCGS HMI Forum
    • beijer HMI Forum
    • Kinco HMI Forum
    • Redlion HMI Forum
    • XINJE HMI Forum
    • Samkoon HMI Forum
  • European PLC brand product application technology discussion area!
  • Americas PLC brand product application technology discussion area!
  • Asian PLC brand product application technology discussion forum!
  • European HMI brand product application technology discussion forum!
  • Americas HMI brand product application technology discussion forum!
  • Asian HMI brand product application technology discussion forum!
  • Industrial automation SCADA & HMI configuration software!
  • Technical discussion area related to industrial automation control
  • Commercial service area for PLC&HMI products of various brands!

Categories

  • PLC programming learning
  • HMI interface design
  • DCS control system
  • SCADA technology

Categories

  • European PLC & HMI brand
  • Americas PLC & HMI brand
  • Asian PLC & HMI Brands

Categories

  • PLC programming learning
  • HMI interface design
  • DCS control system
  • SCADA technology

Categories

  • PLC programming learning
  • HMI interface design
  • DCS control system
  • SCADA technology

Categories

  • PLC programming learning
  • HMI interface design
  • DCS control system
  • SCADA technology

Categories

  • PLC programming learning
  • HMI interface design
  • DCS control system
  • SCADA technology

Categories

  • PLC product technical files
  • HMI product technical files
  • DCS product technical files
  • PAC product technical files
  • SCADA product technical files

Product Groups

  • PLC products
  • PLC accessories
    • PLC lithium battery
    • PLC memory card
    • PLC programmer
    • PLC data line
  • HMI products
  • HMI accessories
    • HMI protection installation box
    • HMI self-made assembly accessories
    • HMI communication cable
    • HMI circuit board card components
  • Advertising for rent

Blogs

There are no results to display.

There are no results to display.

Categories

  • PLC Programming Technology Videos
  • HMI Design and Configuration Video
  • DCS Control System Video
  • PAC Automation Control Video
  • SCADA acquisition monitoring Vides

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


date of birth

Between and

gender


Education degree


About Me


Mobile phone


website


address


WhatsApp


Messenger


Telegram


Line


Skype


Instagram


VK Messenger


Viber


Snapchat


Zalo


Kakao Talk


ICQ


QQ


WeChat


Taobao WangWang


Ali DingTalk

Found 21 results

  1. В предыдущей статье мы обсуждали, что такое функциональный блок 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.
  2. В предыдущей статье мы говорили о блоках данных и обсудили два различных типа блоков данных: глобальный блок данных и экземпляры данных функциональных блоков 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, невозможны. Поскольку теперь есть адреса, а только уникальные символические имена для каждого тега. Вы можете определить отдельные теги как сохраняемые. В стандартных БД вы можете определить только весь блок как сохраняемый. Заключение Оптимизированные блоки данных имеют много преимуществ по сравнению со стандартными БД. Использование символических имен помогает избежать любых изменений адресов тегов при добавлении новых переменных в ваш блок. С оптимизированными блоками не теряется ни одна область памяти. В отличие от того, что происходит при использовании стандартных БД.
  3. В предыдущих статьях мы обсуждали различные типы блоков в 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 раз.
  4. В предыдущей статье мы обсуждали, что такое организационный блок, и говорили об одном очень важном организационном блоке, которым является основной 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, поскольку это зависит от вашего процесса и вашей логики. И да, вы можете достичь той же функциональности, используя свой личный код, но это доступная и простая в использовании встроенная функция. И вы знаете, как ею пользоваться.
  5. В предыдущих статьях мы обсуждали, что такое организационный блок, и говорили о главном циклическом прерывании 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.
  6. В предыдущих статьях мы обсуждали различные типы организационных блоков, например, основной 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 Заключение Циклические прерывания очень полезны для задач, критичных по времени, которые не должны сталкиваться с какими-либо задержками. В вашей логике может быть более одного циклического прерывания. Используйте настройку смещения циклических прерываний, чтобы избежать одновременного времени начала. Используйте настройку приоритета, чтобы контролировать порядок выполнения различных циклических прерываний.
  7. В предыдущих статьях мы начали обсуждать различные организационные блоки ПЛК 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 запуска для инициализации параметров, калибровки датчиков и даже проверки условий безопасности перед запуском вашего процесса.
  8. В этой статье мы продолжаем обсуждение различных типов организационных блоков в ПЛК 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, чтобы также определить ошибку и устранить ее.
  9. ПЛК 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-адрес для настройки связи между ними. Заключение Конфигурация оборудования — очень важный этап любого проекта ПЛК. Правильная конфигурация оборудования вашего ПЛК обеспечит выполнение необходимых функций проекта. Конфигурации оборудования включают выбор модулей ввода-вывода, включение или отключение определенных свойств ЦП и настройку различных устройств, таких как ЧМИ, с вашим ПЛК.
  10. Сименс – известная многонациональная компания, работающая в различных отраслях, включая энергетику, здравоохранение, транспорт и промышленную автоматизацию. Сименс была основана в 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 предоставляют клиентам широкий выбор опций и функций на выбор. При выборе модели ПЛК, которая наилучшим образом соответствует вашему процессу, необходимо учесть ряд моментов, среди которых — количество вводов-выводов, требования безопасности и параметры связи.
  11. В этой статье мы поговорим о серьезной проблеме, которая часто возникает, когда вы начинаете программировать свой ПЛК, это распространенные ошибки версии прошивки и способы их устранения. Содержание: Какова версия прошивки ПЛК? Почему версия прошивки может вызывать проблемы? Как узнать версию прошивки аппаратного ПЛК? Как устранять ошибки версии прошивки? Выводы. Какая версия прошивки ПЛК? Прошивка ПЛК или модуля ПЛК (вводы-выводы, модули связи и т. д.) — это просто внутреннее программное обеспечение, установленное в ПЛК, которое отвечает за то, что на самом деле может делать оборудование. Версия прошивки определяет, какие внутренние функции есть у вашего ПЛК, такие как протоколы безопасности, внутренние функции оптимизации, лучшая обработка времени и другие различные функции и возможности. ПЛК со старой версией прошивки будет иметь меньше функций и внутренних возможностей, чем ПЛК с новой версией прошивки. На рисунках 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. Чтобы избежать проблем с прошивкой вашего проекта.
  12. В этой статье мы рассмотрим биты памяти тактовых импульсов в 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 – Программная симуляция Как вы можете видеть, светодиод теперь выключен; в начале или конце конвейера нет продуктов. Мы создали последовательность моделирования и посмотрим, как светодиод будет реагировать на различные условия процесса. Смотрите следующую анимацию. Посмотрите, сможете ли вы заметить, как поведение светодиода меняется при различных условиях процесса. Заключение Биты тактовой памяти включаются и выключаются с предопределенной частотой. Они очень полезны, когда вам нужно активировать мигающие индикаторные лампы или инициировать периодически повторяющиеся операции. Использование битов тактовой памяти сэкономит вам время и усилия, затрачиваемые на получение той же функциональности посредством вашей собственной логики.
  13. В предыдущей статье мы говорили о версии прошивки вашего ПЛК и о том, как обрабатывать ошибки, которые могут возникнуть из-за несоответствия прошивки между вашим проектом в TIA Portal и вашим фактическим ПЛК. В этой статье мы покажем, как обновить версию прошивки вашего ПЛК. Содержание: Что такое версия прошивки? Почему версия прошивки может вызвать у меня проблемы? Как узнать версию прошивки вашего аппаратного ПЛК? Как обрабатывать ошибки версии прошивки? Как обновить версию прошивки вашего ПЛК? Заключение. Что такое версия прошивки? Как мы объясняли в предыдущей статье, прошивка ПЛК или модуля ПЛК (вводы-выводы, модули связи и т. д.) — это просто внутреннее программное обеспечение, установленное в ПЛК, которое отвечает за то, что оборудование может фактически делать. ПЛК со старой версией прошивки будет иметь меньше функций и внутренних возможностей, чем ПЛК с новой версией прошивки. На рисунках 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. Как узнать версию прошивки аппаратного ПЛК? Мы можем узнать версию прошивки аппаратного ПЛК одним из двух способов: Из самого ПЛК: Версия прошивки любого ПЛК или модуля ПЛК всегда записана где-то на аппаратном устройстве. Из программного обеспечения TIA Portal: Используя программное обеспечение TIA Portal, вы можете подключить свой ПЛК к своему TIA Portal и выполнить поиск устройства, после чего вы сможете найти версию прошивки аппаратного устройства. Мы показали, как это сделать, в предыдущей статье. Как обрабатывать ошибки версии прошивки? Если версия прошивки фактического аппаратного ПЛК старше версии ПЛК, выбранной в проекте TIA Portal, это приведет к ошибкам прошивки, и для решения этих ошибок мы можем попробовать один из следующих подходов: мы можем выбрать ПЛК в проекте TIA Portal с той же или более старой версией прошивки, что и у фактического ПЛК. Мы показали это в предыдущей статье. мы можем обновить версию прошивки фактического аппаратного ПЛК до более высокой версии прошивки, чем выбранная в вашем проекте, или, по крайней мере, до той же версии прошивки. И это тема этой статьи. Как обновить версию прошивки вашего ПЛК? Вы можете обновить версию прошивки вашего ПЛК двумя способами: Онлайн с помощью TIA Portal. Оффлайн с помощью карты памяти Siemens SMC. Обновление прошивки онлайн с помощью TIA Portal: Вам не нужно открывать существующий проект в TIA Portal, вам просто нужно программное обеспечение TIA Portal и подключить ПЛК к вашему ПК. См. рисунок 3. Рисунок 3. Откройте Tia Portal, не создавая новый проект. Когда вы открываете TIA Portal, перейдите в онлайн-доступ, выберите подходящий адаптер связи между вашим ПЛК и вашим ПК, а затем нажмите «Обновить доступные устройства», чтобы найти ваш ПЛК. См. рисунок 4. Рисунок 4. Найдите свой ПЛК. После того, как ПЛК будет найден, как вы можете видеть на предыдущем рисунке, откройте папку ПЛК и нажмите онлайн и диагностика, чтобы увидеть версию прошивки ПЛК. См. рисунок 5. рисунок 5. Текущая версия прошивки ПЛК. ТЕПЕРЬ, чтобы обновить версию прошивки, нажмите атрибут Обновление прошивки. См. рисунок 6. рисунок 6. Страница обновления прошивки. Как вы видите, при нажатии на атрибут Firmware Update вы можете увидеть текущее обновление прошивки, которое является V4.1.3, а также вы можете увидеть Firmware Loader, где вы можете просмотреть версию прошивки, которую вы хотите установить. Конечно, сначала у вас должна быть версия прошивки на вашем ПК, что означает, что нам нужно загрузить версию прошивки. Чтобы загрузить версию прошивки, вы должны войти в свою учетную запись Siemens, если у вас ее нет, вы можете легко создать новую учетную запись, но активация займет 1 или 2 дня. После этого вы можете найти версию прошивки для вашего ПЛК. В нашем случае у нас есть S7-1200 CPU 1214C AC/DC/RLY, и мы найдем его версию прошивки, используя его номер артикула. Смотрите рисунок 7. Рисунок 7. Поиск версии прошивки вашего ПЛК. После этого загрузите версию прошивки, которую вы хотите установить, в нашем случае мы хотим обновить наш ПЛК до версии 4.4.0, поэтому мы загрузим эту версию на наш ПК. Смотрите рисунок 8. рисунок 8. Загрузите V4.4.0 Загруженный файл будет zip-файлом, вам следует распаковать файл, чтобы получить файл данных версии прошивки, а затем вернуться к атрибуту загрузчика прошивки и нажать «Обзор», чтобы найти версию прошивки. Смотрите рисунок 9. рисунок 9. Найдите файл версии прошивки. Не беспокойтесь о том, что вы допустите ошибку на этом этапе, потому что если версия прошивки несовместима с ПЛК, вы не сможете запустить обновление. Смотрите рисунок 10. рисунок 10. Обновление не будет продолжено, если прошивка не совпадает. Как вы видите, когда мы попытались загрузить версию прошивки для ЦП 1215C в наш ПЛК с ЦП 11214C, он выдал ошибку, что файл не подходит для ПЛК. ТЕПЕРЬ снова нажмите «Обзор», но на этот раз найдите правильную версию прошивки. Смотрите рисунок 11. рисунок 11. Нет сообщения об ошибке, когда версия прошивки правильная. Как вы видите, когда мы выбрали подходящую версию прошивки, не было сообщения об ошибке, и теперь мы можем нажать «Запустить обновление», чтобы начать обновление нашего ПЛК. Окно обновления прошивки появится, как только вы начнете процесс обновления, и в конце появится сообщение об успешном завершении, если обновление прошло гладко. Смотрите рисунки 12 и 13. рисунок 12. Обновление прошивки выполняется. Рисунок 13. Обновление прошивки успешно завершено. Теперь, когда версия прошивки обновлена, обновите связь, повторно нажав «Обновить доступные устройства» и проверив версию прошивки ПЛК. Вы обнаружите, что версия прошивки ПЛК теперь V.4.4.0 вместо V4.1.3, и это означает, что нам удалось обновить версию прошивки нашего ПЛК. Смотрите рисунок 14. Рисунок 14. Прошивка обновлена до V4.44.0 И вот как мы обновляем версию прошивки нашего ПЛК с помощью TIA Portal. Офлайн с помощью карты памяти Siemens SMC: Другой способ, который можно использовать для обновления прошивки нашего ПЛК, — это использование карты памяти SIEMENS SMC. Для этого нам просто нужно загрузить версию прошивки, которую мы хотим использовать, затем мы скопируем версию прошивки с нашего ПЛК на SMC, а затем вставим SMC в выделенный слот в ПЛК. При следующем включении ПЛК прошивка будет обновлена. Заключение Вы можете обновить версию прошивки с помощью программного обеспечения TIA portal или карты памяти SIEMENS SMC. Убедитесь, что вы выбираете версию прошивки точно так же, если есть несоответствие между ПЛК и TIA Portal, обновление не начнется.
  14. В предыдущей статье мы говорили о том, что такое ПИД, а также объяснили различные параметры ПИД и то, как система будет реагировать на изменение этих параметров. В этой статье мы покажем, как программировать, настраивать и настраивать ПИД в вашем проекте TIA Portal. Содержание: Как добавить ПИД в вашу логику? Как настроить ПИД? Базовая настройка параметров процесса Расширенная настройка Как выполнить настройку ПИД? Предварительная настройка ПИД Тонкая настройка Каковы различные методы настройки ПИД? Как добавить ПИД в вашу логику? В TIA Portal и почти на любой другой платформе ПЛК вам не нужно программировать ПИД-регулятор, поскольку в TIA Portal уже есть встроенные блоки для ПИД. Чтобы добавить PID в вашу логику, вам просто нужно перетащить блок PID в ваш код и просто начать настраивать его для вашей системы. Добавление PID в ваш код очень просто, однако есть очень важный момент, который вы должны принять во внимание. Это интервал выполнения вашего PID. Как вы знаете, основной цикл выполнения происходит внутри основного циклического OB1, и время цикла OB1 зависит от многих факторов, таких как длина вашего кода, математические вычисления в вашем коде, а также циклы и последовательности, все эти различные факторы могут сделать время цикла вашего OB1 не только длинным, но и разным для каждого цикла, в зависимости от вашего кодирования. Это означает, что если вы вызвали свой блок PID внутри основного OB1, выполнение PID будет зависеть от времени цикла вашего OB1, и это не лучший подход. PID обычно используются для управления физическими параметрами, такими как давление, температура или скорость, и это означает, что ваш контроллер должен очень быстро определять любые изменения в значении вашего процесса и быстро реагировать, чтобы противодействовать этим изменениям и обеспечивать вам плавное стабильное управление, которое должен иметь PID. Поэтому, если PID добавляется в основной OB1 и на него влияет время его выполнения, ему могут потребоваться задержки действия, и это сделает вашу систему нестабильной. Что делать? Лучше всего вызывать ваш блок PID в циклическом прерывании OB и устанавливать время цикла этого циклического прерывания на любое значение, которое вы считаете подходящим для вашей системы, обычно в диапазоне миллисекунд в зависимости от вашего приложения. Это означает, что если вы установите циклическое прерывание, например, на 1 миллисекунду, ваш PID будет вызываться и выполняться каждую миллисекунду независимо от того, где находится основной цикл OB1. Итак, чтобы добавить PID в вашу логику, мы начнем с добавления нового циклического прерывания OB и дадим ему правильное имя. См. рисунок 1. Рисунок 1. Добавление циклического прерывания в ваш проект. На рисунке видно, что мы установили циклическое время на 1000 микросекунд или 1 миллисекунду. Таким образом, наш PID будет вызываться и выполняться каждую миллисекунду. Теперь, когда вы добавили свой циклический OB в проект, вы можете просто перетащить блок PID. Вы можете найти его на вкладке «Инструкции»/«Технология»/«Управление PID»/«Компактный PID». См. рисунок 2. Рисунок 2. Добавление блока PID. Теперь добавьте системные параметры в блок PID, вход, выход и заданное значение. См. рисунок 3. Рисунок 3. Назначьте параметры PID. Вы заметили на последней картинке, что у вас есть 2 разных входа и 3 разных выхода, что это? Вход: Это ваше входное значение параметра процесса в реальных физических величинах, мы будем использовать нашу систему моделирования резервуара, поэтому в этом случае вход здесь — это уровень заполнения резервуара в литрах. Это означает, что вы сделали масштабирование аналогового входа где-то в другом месте вашего проекта и просто предоставляете ПИД фактический уровень заполнения в литрах. Input_PER: Это входное значение параметра процесса, но оно поступает из модуля аналогового входа. Это означает, что оно не будет масштабироваться и будет находиться в диапазоне 0-27648, а масштабирование входа будет выполняться внутри ПИД. Выход: В этом случае ПИД даст вам выходное значение контроллера в диапазоне от 0% до 100% от максимального выходного значения. Output_PER: То же, что и input_PER, ПИД даст выход в виде 0-27648. Output_PWM: В этом случае ПИД будет выдавать свой выходной сигнал в виде импульсов ВКЛ/ВЫКЛ, так что либо есть выход, либо нет. И выходное значение тогда составляет 100%, когда он ВКЛ и 0%, когда он ВЫКЛ. Мы будем использовать ту же систему моделирования резервуара, которую использовали раньше, и, как вы можете видеть на предыдущем рисунке, мы использовали Input и Output_PER, поскольку наше моделирование построено таким образом. Как настроить ПИД? Чтобы войти в представление конфигурации ПИД, вы можете либо щелкнуть вкладку конфигурации в дереве проекта, либо нажать на небольшой значок конфигурации над самим блоком ПИД. См. рисунок 4. Рисунок 4. Вход в представление конфигурации. Это перенесет вас в функциональное представление, где вы можете настроить различные параметры вашего ПИД. См. рисунок 5. Рисунок 5. Настройка типа контроллера. Первая конфигурация — это тип контроллера, и здесь вы можете выбрать, какой тип управления вы хотите использовать, у вас есть много вариантов из показанных раскрывающихся меню, таких как температура, давление, длина и многое другое. Вы также можете установить его на общий, где система будет видеть ваши значения как %. В нашей системе мы контролируем литры воды внутри бака, поэтому мы выберем объем. Вы также можете установить ручной/автоматический режим ПИД. Далее вам нужно настроить параметры ввода/вывода. Смотрите рисунок 6. Рисунок 6. Параметры ввода/вывода. Здесь вы можете выбрать из различных типов входов или выходов, как мы объясняли ранее. Как мы сказали, мы будем использовать Input и Output_PER. Далее вам нужно настроить настройку значения процесса. Смотрите рисунок 7. Рисунок 7. Предел значения процесса. На этом этапе вы установите нижний и верхний пределы значения вашего процесса. Если вы выберете тип Input. Тогда эта настройка будет открыта для изменения, и вы сможете установить пределы вашего процесса. В нашем случае пределы резервуара составляют от 0 до 50 литров. Поэтому мы устанавливаем эти значения. Обратите внимание, что если вы выберете Input_PER, эта настройка будет вам недоступна, и вы сможете установить предел вашего процесса только на следующей вкладке. Смотрите рисунок 8. Рисунок 8. Масштабирование значения процесса. Если вы используете Input_PER, то, как вы видите на предыдущем рисунке, вы можете установить предел вашего значения процесса относительно имеющегося у вас масштабирования 0-27648. Если вы хотите настроить предупреждение, когда значение вашего процесса достигает нижнего или верхнего предела, вы можете настроить его на вкладке мониторинга значения процесса. Смотрите рисунок 9. Рисунок 9. Мониторинг значения процесса. Далее в списке настроек вы найдете пределы ШИМ, см. рисунок 10. Рисунок 10. Пределы ШИМ Здесь вы можете установить минимальное время включения и выключения вашего выхода, представьте, что у вас есть насос или клапан в вашей системе, которым ПИД управляет через выход ШИМ, вы не хотите, чтобы ПИД просто давал вашему насосу череду очень быстрого поведения ВКЛ/ВЫКЛ, потому что это, вероятно, приведет к тому, что ваш насос сгорит. Таким образом, вы можете указать ПИД из этой настройки, чтобы он включал насос на минимальное время, прежде чем закрыть его, и наоборот. Вы можете иметь такое же управление с вашим ПИД, если у вас нет выхода ШИМ из следующей настройки, пределов выходного значения. См. рисунок 11. Рисунок 11. Пределы выходного значения. Вы можете контролировать нижний и верхний пределы вашего управляющего выхода, например, вы можете сделать нижний предел 20%, и это заставит ПИД запустить насос как минимум на 20% его расхода. Таким образом, ваш диапазон управления будет от 20% до 100%. Наконец, и самое главное, вы можете установить параметры ПИД в режиме конфигурации из следующей вкладки, вкладки параметров ПИД, см. рисунок 12. Рисунок 12. Параметры ПИД. Здесь вы можете записать параметры настройки для ваших коэффициентов усиления ПИД P, I и D, если вы их знаете или если вы выполнили настройку самостоятельно и у вас есть параметры откуда-то еще. Вы также можете выбрать использование ПИД или просто ПИ-регулятора. Если у вас нет этих параметров, вы можете загрузить их автоматически после настройки вашего ПИД. Как выполнить настройку ПИД? Теперь, когда вы закончили настройку ПИД, вы можете так же легко настроить свой контроллер с вкладки ввода в эксплуатацию в дереве проекта. Смотрите рисунок 13. Рисунок 13. Ввод в эксплуатацию вашего ПИД На странице ввода в эксплуатацию ваш экран разделен на 3 части, на верхней странице вы можете начать предварительную и тонкую настройку ПИД. Посередине у вас будет область графика, которая покажет вам реакцию вашей системы в реальном времени. Вы можете видеть выход контроллера и значение процесса. И каждый раз, когда изменяется заданное значение, вы будете видеть поведение вашего ПИД, чтобы поймать это новое заданное значение. Даже если заданное значение не изменилось, но, например, увеличился спрос на поставку из нашего резервуара, вы увидите реакцию ПИД, чтобы удовлетворить этот спрос, а также поддерживать заданное значение на требуемом уровне. В третьей области у вас будет онлайн-статус вашего контроллера, и вы также можете выбрать режим работы вашего ПИД. Посмотрите следующее видео моделирования, демонстрирующее процедуру автоматической настройки ПИД в TIA Portal. Из видео вы можете увидеть, что после предварительной настройки наш ПИД нашел параметры P, I и D, которые лучше всего подходят для нашей системы. Вы можете увидеть, что при изменении уставки или расхода контроллер очень быстро отреагирует, чтобы вернуть уставку к требуемым значениям. Теперь вы можете загрузить параметры настройки непосредственно в свой проект простым нажатием кнопки, см. рисунок 14. Рисунок 14. Загрузите свои параметры. После загрузки своих параметров вы сможете найти их на вкладке параметров ПИД в представлении конфигурации. См. рисунок 15. Рисунок 15. Параметры ПИД. Следующим шагом должно стать выполнение процедуры тонкой настройки ПИД из того же представления ввода в эксплуатацию, однако, поскольку у нас нет реальной системы, и мы просто моделируем поведение резервуара и насоса с помощью математических расчетов, мы не можем выполнить шаг тонкой настройки. Когда у вас есть реальная система, вы можете выполнить тонкую настройку, при которой ваш ПИД попытается найти параметры, которые дадут системе лучший отклик и даже устранят перерегулирование вашего значения процесса и напрямую достигнут заданного значения. В будущем, если у нас будет реальная система, мы сможем показать, как она выглядит. Каковы различные методы настройки ПИД-регулятора? Вам не нужно выполнять настройку вашего ПИД с помощью TIA Portal; существует множество различных методов, которые пытаются найти наилучшие параметры ПИД для вашей системы. В основном это математические методы, основанные на пробах и ошибках. Я бы рекомендовал использовать функцию автоматической настройки в TIA Portal. Но вот некоторые из методов, используемых для достижения тех же параметров. Эвристическая настройка. Метод настройки Циглера-Николса Метод настройки Коэна-Куна Метод настройки Каппа-Тау Метод настройки Лямбда И несколько других. Заключение Используйте циклическое прерывание с вашими PID. Настройте ваш PID так, чтобы он наилучшим образом подходил вашей системе. Функция автонастройки в TIA Portal очень полезна и эффективна.
  15. В этой статье мы обсудим еще один способ связи между двумя ПЛК, независимо от того, находятся ли они в одном проекте или в двух разных проектах ПЛК. В этой статье мы поговорим о команде PUT в Siemens ПЛК, которую можно использовать для отправки или помещения данных из одного ПЛК во второй ПЛК. Что такое команда PUT? В общем, команда PUT — это встроенный функциональный блок TIA Portal FB, который используется исключительно для ЦП семейства S7 для помещения данных из локального ПЛК в удаленный партнерский ПЛК. При использовании команды PUT у меня будет два ПЛК, где мне нужно будет отправить данные из одного ПЛК, называемого локальным, в другой ПЛК, называемый партнерским. Необходимо выполнить некоторые настройки для партнерского ПЛК, чтобы обеспечить к нему доступ для другого ПЛК. В дополнение к соединению Profinet между ПЛК. Мы создадим пример проекта, чтобы показать, как использовать команду PUT. Команда PUT в ПЛК Siemens Предположим пример проекта, в котором у нас есть два ПЛК в одном проекте, ПЛК_1, который будет действовать как локальный ПЛК, и ПЛК_2, который является партнерским ПЛК. Мы хотим записать целое число из локального в партнерский ПЛК. Пример проекта ПЛК Сначала создадим новый проект и добавим два ПЛК. Смотрите рисунок 1. рисунок 1. Добавьте локальный и партнерский ПЛК. Теперь мне нужно настроить ПЛК_2, который будет получать данные, чтобы иметь возможность получать эти данные. А ПЛК_1 будет использоваться с командой PUT. Первое, что мне нужно сделать, это разрешить доступ команды PUT к ПЛК_2, который будет получать данные. Смотрите рисунок 2. рисунок 2. Разрешить доступ к команде PUT. Как вы видите на рисунке, мы разрешаем команде PUT доступ к ПЛК_2 из свойств ПЛК_2, в опции «Защита и безопасность» нажмите на «Разрешить доступ с помощью связи PUT/GET от удаленного партнера» Теперь мне разрешено помещать данные от любого удаленного партнера в ПЛК_2 с помощью команды PUT. Второй шаг — подготовить пространство или память в ПЛК_2 для данных, которые будут помещены в него. Предположим, что мы хотим поместить целочисленное значение в этот ПЛК, поэтому я подготовлю память в соответствии с этим. См. рисунок 3. рисунок 3. Подготовка области для приема данных. И это все; это вся конфигурация, которую вам нужно подготовить со стороны ПЛК_2, чтобы иметь возможность получать данные с помощью команды PUT. Далее мы настраиваем данные, отправляемые с ПЛК_1. Мы создадим блок данных для хранения данных, отправляемых в ПЛК_2, и внутри этого блока данных мы определим целочисленный тег для PUT в ПЛК_2. Смотрите рисунок 4. рисунок 4. Создайте блок данных для хранения отправленных данных. Мы определили целочисленный тег «SendMeToПЛК_2», который мы хотим отправить в ПЛК_2. Смотрите рисунок 5. рисунок 5. Определите данные для отправки. Обратите внимание, что для ПЛК_1 нам не нужно разрешать доступ с опцией команды PUT. Мы активируем эту функцию в ПЛК, который будет получать данные, а не в ПЛК, который будет их отправлять. Теперь давайте используем команду PUT в нашем программировании, в главном OB1 мы перетащим команду PUT FB. См. рисунок 6. рисунок 6. Добавьте команду PUT в OB1. Обратите внимание, что команда PUT находится в папке связи S7, так как это эксклюзивная функция для ПЛК семейства S7, поскольку она связана с проблемами безопасности. Помните, на рисунке 2, когда мы разрешили использование команды PUT, она была в атрибуте «Безопасность и защита» свойств ПЛК, так как она связана с безопасностью и защитой ПЛК. Команда PUT по сути является функциональным блоком, поэтому при добавлении ее в мою логику мне будет предложено создать экземпляр данных. См. рисунок 7. рисунок 7. Создайте экземпляр данных для команды PUT. После нажатия кнопки «ОК» команда PUT теперь добавлена в вашу логику ПЛК. См. рисунок 8. рисунок 8. Команда PUT После того, как мы добавили команду PUT, теперь нам нужно ее настроить, у нас есть два параметра для настройки команды PUT. Соединение между ПЛК Блок, который будет PUT из ПЛК_1 в ПЛК_2 Чтобы перейти к конфигурационному виду команды PUT, нажмите на маленькую синюю иконку, показанную на последнем рисунке. В параметре соединения вы установите связь между локальным (ПЛК_1) и партнерским (ПЛК_2) ПЛК. См. рисунок 9. рисунок 9. Параметр соединения. Как вы можете видеть, локальный ПЛК установлен на ПЛК_1, который является ПЛК, где используется команда PUT. Сторона партнера все еще пуста, и именно там мы должны назначить ПЛК_2. Если вы щелкните по раскрывающемуся списку, у вас будет два варианта для партнера. См. рисунок 10. рисунок 10. Партнерское соединение Партнер — это ПЛК, который будет получать данные; вы увидите, что у вас есть два варианта выбора: ПЛК_2 [CPU 1516-3 PN/DP] Не указано Поскольку оба ПЛК находятся в одном проекте, когда я выбираю вариант ПЛК_2, все параметры соединения будут автоматически заполнены. см. рисунок 11. рисунок 11. ПЛК_2 как партнер С другой стороны, если партнерский ПЛК из другого проекта, то я выберу опцию «Не указано», и в этом случае мне придется заполнить некоторые данные, такие как IP-адрес партнерского ПЛК. Смотрите рисунок 12. рисунок 12. Неуказанный партнер Как вы можете видеть, в этом случае мне нужно заполнить некоторые данные, такие как IP-адрес, а также добавить подсеть для ПЛК_1. Чтобы добавить подсеть для ПЛК_1, мы перейдем в свойства Profinet ПЛК_1 и выберем опцию добавления подсети. Смотрите рисунок 13. рисунок 13. Добавить подсеть. После этого будет выполнена настройка параметров подключения. См. рисунок 14. Имя соединения должно быть уникальным для каждой команды PUT, которую вы создаете, TIA Portal автоматически присвоит ему новое имя, но, возможно, вам лучше назначить более подходящее имя для соединения в вашем проекте. Мы оставили его таким, какой он есть. фото 14. Параметры соединения готовы Следующий шаг в настройке команды PUT — настройка параметров блока. В этих параметрах мы указываем триггер для команды PUT, то есть какой сигнал запустит действие команды PUT. А также какие данные будут помещены из ПЛК_1 и где они будут храниться в ПЛК_2. См. рисунок 15. фото 15. Настройка параметров блока Для сигнала Start Request (REQ) мы определили входной тег (SendData %I0.0). И как мы уже упоминали ранее, мы уже определили тег, который будет отправлен в ПЛК_2, и где он будет храниться внутри ПЛК. Завершение конфигурации параметров блока завершит конфигурацию команды PUT. Смотрите рисунок 16. рисунок 16. Вызов команды PUT Итак, вкратце, когда срабатывает сигнал REQ, данные в SD_1 будут отправлены в ADDR_1.
  16. Существует множество способов, с помощью которых ПЛК могут общаться и взаимодействовать друг с другом, в этой статье мы поговорим об одном из этих методов, а именно о том, как установить Siemens Communication между ПЛК с использованием функции i-device для передачи данных от ПЛК к ПЛК. Что такое функция I-Device? Функцию I-Device можно использовать для очень простого обмена данными между двумя ПЛК. I-Device — это просто ПЛК, который используется как устройство ввода-вывода. Это означает, что ПЛК будет действовать как модуль ввода-вывода, предоставляя входы и получая выходы с другим ПЛК. Функция I-device позволяет PROFINET взаимодействовать не только с подчиненными устройствами, такими как контроллеры ввода-вывода, но и с другими контроллерами более высокого уровня или центральными контроллерами в качестве устройства ввода-вывода. Siemens Communications between ПЛКs Большинство ПЛК семейства S7 поддерживают функцию I-Device, но некоторые контроллеры не поддерживают ее в зависимости от версии прошивки, например: S7-300 (с версии прошивки V3.2) S7-1200 (с версии прошивки V4) Вы можете просто узнать, есть ли у вашего контроллера функция I-device или нет, зайдя в свойства интерфейса PROFINET вашего ПЛК и проверив опцию «рабочий режим». См. рисунки 1a и 1b. рисунок 1a. ПЛК не поддерживает I-device На рисунке мы не видим опцию «рабочий режим», поэтому мы знаем, что ПЛК не поддерживает функцию I-device. Рисунок 1b. ПЛК поддерживает функцию I-device Как видно из рисунка, этот ПЛК поддерживает функцию I-device. ПЛК с конфигурацией «Интеллектуальное устройство ввода-вывода» называется I-Device. I-Device похоже на стандартное устройство ввода-вывода и должно обрабатываться как таковое. Это означает, что I-Device также подключено к контроллеру ввода-вывода более высокого уровня. Таким образом, I-Device будет действовать как модуль ввода-вывода, но это также все еще ПЛК, поэтому он все еще действует как контроллер, если вы этого хотите. Концепция обмена данными Руководящий принцип метода I-Device заключается в использовании известного образа процесса в ЦП. С точки зрения контроллера ввода-вывода более высокого уровня, связь с I-Device похожа на связь с распределенным вводом-выводом с обычными процессами чтения и записи на входах и выходах. С точки зрения I-Device, передача данных на контроллер ввода-вывода более высокого уровня также аналогична передаче данных на локальный или назначенный распределенный ввод-вывод через входы и выходы. Варианты конфигурации I-устройства Существует две возможности конфигурации: Настройка I-устройства в проекте. Настройка I-устройства, используемого в другом проекте При настройке I-устройства для другого проекта STEP 7 позволяет сделать это путем экспорта настроенного I-устройства в файл GSD. Файл GSD можно импортировать в другой проект или другую инженерную систему, как и другие файлы GSD. Это позволяет не только осуществлять связь внутри проекта, но и связь между проектами и обмениваться данными между различными производителями проверенным и испытанным способом. Мы покажем это в другой статье. В этой статье мы покажем конфигурацию I-устройства в одном проекте ПЛК Siemens. Конфигурация I-устройства в одном проекте ПЛК Мы предположим, что в нашем проекте есть два ПЛК, CPU 1516-3 PN/DP, который будет действовать как контроллер в этой конфигурации, и CPU 1214C, который будет действовать как I-устройство. Начните с добавления двух ПЛК в ваш проект TIA Portal и настройте соединение Profinet между ними. Смотрите рисунок 2. рисунок 2. Настройте соединение между двумя ПЛК. Теперь нам нужно настроить ПЛК CPU 1214C как I-устройство. Это можно сделать, перейдя в свойства интерфейса Profinet и в опции режима работы нажав на опцию устройства ввода-вывода. Смотрите рисунок 3. рисунок 3. Выберите устройство ввода-вывода. После этого вам нужно назначить I-устройство контроллеру более высокого уровня, которым в нашем проекте является ПЛК CPU 1516-3 PN/DP. Для этого просто выберите этот ПЛК из раскрывающегося списка Назначенный контроллер ввода-вывода. Смотрите рисунок 4. рисунок 4. Назначьте I-устройство контроллеру. После этого I-устройство теперь подключено и назначено контроллеру ПЛК. Смотрите рисунок 5. рисунок 5. I-устройство назначено контроллеру ПЛК. Следующий шаг — обмен данными между I-устройством и контроллером с помощью так называемых областей передачи. Создание области передачи Области передачи — это области ввода-вывода, которые используются для обмена данными между I-устройством и контроллером ввода-вывода более высокого уровня. Перейдите в раздел «Связь I-устройства». Щелкните первое поле столбца «Области передачи». TIA Portal создаст предопределенное имя, которое вы можете изменить. Как вы можете видеть на рисунке 6. рисунок 6. Создание области передачи Выберите тип связи: в настоящее время можно выбрать только CD. См. рисунок 7. Рисунок 7. Выберите вариант связи CD. После выбора опции CD будет создана область передачи, а также автоматически созданы адреса контроллера ввода-вывода и I-устройства. См. рисунок 8. Рисунок 8. Область передачи создана. Адреса предварительно назначаются автоматически, при необходимости вы можете настроить адреса в соответствии со своей средой и указать длину области передачи для последовательной передачи. Чтобы создать другую область передачи, как и прежде, просто нажмите «добавить новую», см. рисунок 9. рисунок 9. Добавить новую область передачи. Как мы уже говорили, обмен данными основан на простой концепции образа обработки, что означает, что вы всегда отправляете выход и получаете вход. Также обратите внимание, что стрелка, которую вы видите на предыдущем рисунке, указывает поток информации между I-устройством и контроллером. Итак, если я отправлю данные с контроллера на I-устройство, то стрелка будет направлена от контроллера к I-устройству, и адрес контроллера будет выводом, а адрес I-устройства будет вводом и наоборот, как вы можете видеть на предыдущем рисунке. Также помните, что всегда лучше переименовывать области передачи на правильные указывающие имена. Смотрите рисунок 10. Рисунок 10. Переименуйте области передачи. Загрузка проекта ПЛК Чтобы загрузить данные проекта ПЛК, выберите оба контроллера один за другим в навигации проекта и загрузите проект в соответствующий модуль. Обратите внимание, что, поскольку у нас нет реальных аппаратных устройств, мы не можем смоделировать эту функцию.
  17. В предыдущей статье мы говорили о команде PUT и о том, как мы используем ее для связи между двумя ПЛК, если они находятся в одном проекте или в двух разных проектах. В этой статье мы поговорим о команде GET, используемой для проекта связи Siemens ПЛК-to-ПЛК для обмена данными. Что такое команда GET? Так же, как и команда put, команда GET является встроенным функциональным блоком TIA Portal FB, который используется исключительно для ЦП семейства S7 для получения данных от удаленного партнерского ПЛК к локальному ПЛК. В отличие от команды PUT, вместо помещения данных из ПЛК_1 в ПЛК_2 команда GET будет получать данные из ПЛК_2 в ПЛК_1. При использовании команды GET у меня будет два ПЛК, где мне нужно будет получить данные из одного ПЛК, называемого партнером, в другой ПЛК, называемый локальным. Локальный ПЛК – это место, где будет запрограммирована команда GET. В дополнение к соединению Profinet между двумя ПЛК. Некоторые настройки должны быть выполнены для ПЛК-партнера, чтобы другой ПЛК мог получить к нему доступ. Мы создадим пример проекта, чтобы показать, как использовать команду GET. Проект связи между ПЛК Siemens Мы предположим пример проекта, в котором у нас есть два ПЛК в одном проекте, ПЛК_1, который будет действовать как локальный ПЛК, и ПЛК_2, который является ПЛК-партнером. Чтобы создать ситуацию, в которой нам нужно использовать команду GET, мы предположим, что мы хотим прочитать/получить целое число из ПЛК-партнера в локальный ПЛК_1. Сначала давайте создадим новый проект и добавим два ПЛК. См. рисунок 1. рисунок 1. Создайте новый проект и добавьте два ПЛК. Теперь нам нужно настроить ПЛК-партнер для включения доступа GET из ПЛК_1. Нам также нужно подготовить данные, которые будут перемещены из ПЛК_2 в ПЛК_1. Сначала нам нужно разрешить доступ команды GET к ПЛК_2, который будет предоставлять данные. Смотрите рисунок 2. рисунок 2. Разрешить доступ команды GET. Как вы видите на рисунке, мы разрешаем команде GET доступ к ПЛК_2 из свойств ПЛК_2, в опции «Защита и безопасность» нажмите на «Разрешить доступ с помощью связи PUT/GET от удаленного партнера» Теперь мне разрешено читать/получать данные из партнера ПЛК_2 с помощью команды GET. ДАЛЕЕ мы хотим создать данные, которые будут перемещены в ПЛК_1, мы предположили, что ПЛК_1 хочет получить целое число из ПЛК_2. Мы определим целочисленный тег с именем «SendDataToПЛК_1», этот целочисленный тег будет считан из ПЛК_2 в ПЛК_1. См. рисунок 3. рисунок 3. Определите данные для перемещения в ПЛК_1 И это все; это вся конфигурация, которую вам нужно подготовить со стороны ПЛК_2, чтобы иметь возможность получать данные через команду GET. ТЕПЕРЬ мы переходим к ПЛК_1, в ПЛК_1 мы хотим создать логику, в которой мы используем команду GET для чтения данных из ПЛК_2. Как мы делали в предыдущей статье, мы просто перетащим команду GET в наш главный OB1. См. рисунок 4. рисунок 4. Перетащите команду GET Обратите внимание, что команда GET находится в папке связи S7, так как это эксклюзивная функция для семейства ПЛК S7, поскольку она связана с проблемами безопасности. Помните, на рисунке 2, когда мы разрешили использовать команду GET, она была в атрибуте «Безопасность и защита» свойств ПЛК, поскольку она связана с безопасностью и защитой ПЛК. Когда вы перетаскиваете команду GET в свой, вам будет предложено создать экземпляр блока данных, поскольку команда GET по сути является функциональным блоком FB. Смотрите рисунок 5. рисунок 5. Создайте экземпляр данных для команды GET. Теперь, когда мы добавили команду GET в нашу логику, нам нужно начать настраивать блок GET, как мы делали это ранее с командой put. Чтобы открыть представления конфигурации команды GET, нажмите на маленький синий значок в верхней части блока. Смотрите рисунок 6. рисунок 6. Откройте представление конфигурации. У нас есть два основных параметра для настройки: параметр соединения и параметр блока. Смотрите рисунок 7. рисунок 7. Конфигурация блока GET. Как вы можете видеть на рисунке, локальный ПЛК — это ПЛК, где вызывается команда GET. В то время как партнерский ПЛК — это тот, который предоставит данные, он также тот, для которого мы разрешили доступ GET. В нашем проекте партнерский ПЛК — это ПЛК_2. Вы также можете видеть на рисунке, что партнер пуст, и нам нужно выбрать ПЛК. Смотрите рисунок 8. рисунок 8. Другой вариант в списке партнеров Как вы можете видеть, у нас есть два разных варианта для выбора партнерского ПЛК. Не указано, когда ПЛК принадлежат к разным проектам TIA Portal, а если ПЛК принадлежат к одному и тому же проекту TIA Portal, то вы найдете другой ПЛК в списке. При выборе опции ПЛК_2, поскольку наши ПЛК находятся в одном проекте, конфигурация соединения будет заполнена автоматически. См. рисунок 9. рисунок 9. ПЛК_2 как партнер Поскольку оба ПЛК находятся в одном проекте, при выборе опции ПЛК_2 все параметры соединения будут заполнены автоматически. С другой стороны, если партнерский ПЛК из другого проекта, то я выберу опцию Unspecified, и в этом случае мне придется заполнить некоторые данные, такие как IP-адрес партнерского ПЛК. См. рисунок 10. рисунок 10. Партнерский ПЛК как неуказанный. Как видите, когда партнер не указан, то вам нужно вручную добавить некоторую информацию, такую как IP-адрес партнерского ПЛК. Вы также можете увидеть, что нам нужно добавить подсеть к локальному ПЛК_1. Для этого просто перейдите в свойства Profinet ПЛК_1 и выберите добавление новой подсети. См. рисунок 11. Рисунок 11. Добавление подсети для ПЛК_1 После добавления новой подсети в ПЛК_1 настройка параметров соединения будет завершена. См. рисунок 12. рисунок 12. Параметры соединения завершены. Следующая конфигурация, о которой нам нужно позаботиться, — это параметр блока. В параметре блока мы определяем данные, которые будут перемещены между двумя ПЛК, а также сигнал запуска, который позволит начать выполнение блока GET. См. рисунок 13. рисунок 13. Параметр блока. Как вы можете видеть, нам нужно определить сигнал запуска для блока GET, а также определить, какие данные будут перемещены из ПЛК_2 (область чтения ADDR_1) и куда эти данные будут отправлены (область хранения RD_1). Мы уже определили ADDR_1, перед которым находится целочисленный тег SendDataToПЛК_1, который мы определили внутри ПЛК_2. ТЕПЕРЬ мы определим область хранения для этого целочисленного тега и сигнала запуска. Смотрите рисунок 14. рисунок 14. Определение сигнала запуска и области хранения После того, как мы определили сигнал запуска, ADDR_1 и RD_1, мы заполним эти параметры в конфигурации блока. Смотрите рисунок 15. Рисунок 15. Заполнение параметра блока Теперь конфигурация блока GET завершена, и вы можете видеть, что блок теперь готов к загрузке и запуску. См. рисунок 16. рисунок 16. Блок GET Блок GET теперь настроен, и как только сигнал триггера активен, блок считывает ADDR_1 из ПЛК_2 и записывает его в RD_1 в ПЛК_1.
  18. В предыдущих статьях мы начали обсуждать различные способы связи между двумя или более ПЛК, до сих пор мы говорили о функции I-device, а также о командах PUT и GET, которые были методами, эксклюзивными для ПЛК Siemens. Связь между ПЛК Siemens и другими ПЛК В этой статье мы обсудим другой способ соединения двух ПЛК вместе, этот способ имеет больше преимуществ, чем команды PUT и GET, которые мы обсуждали ранее, поскольку противоположны командам PUT/GET, которые были эксклюзивными для семейства S7. Этот новый метод представляет собой открытую пользовательскую коммуникацию, то есть мы можем использовать его для связи между ПЛК SIEMENS и любым другим брендом ПЛК, это даже не обязательно должны быть два ПЛК, этот метод может связываться между ПЛК и любым другим устройством, которое может понимать сетевой протокол TCP, таким как ПК, серверы, принтеры и т. д. В этой статье мы покажем, как настроить связь между двумя ПЛК с помощью блоков TCON и TDISCON, а в следующей статье мы покажем, как перемещать данные между ПЛК после настройки соединения. Открытые пользовательские коммуникационные блоки TCON и TDISCON Мы используем блок TCON для настройки и установления коммуникационного соединения между двумя ПЛК. После настройки и установки соединения оно автоматически поддерживается ПЛК. Оба партнера по коммуникации вызывают инструкцию TCON для настройки и установления коммуникационного соединения. Это означает, что мне нужно вызвать блок TCON в обоих ПЛК, и нам нужно настроить блок в обоих ПЛК, как мы увидим в примере проекта. Во время конфигурации блока мы укажем, какой партнер является активной конечной точкой связи, а какой — пассивной. Это означает, что какой ПЛК попытается подключиться, а какой откроет порт связи и будет ждать другой. Существующее соединение завершается, а установленное соединение удаляется, когда выполняется блок TDISCON или когда ЦП переходит в режим STOP. Чтобы настроить и установить соединение снова, вам нужно будет снова выполнить TCON. Пример проекта ПЛК с использованием TCON Как мы уже объясняли в предыдущих статьях, для настройки связи между двумя ПЛК нам нужно установить две вещи: Связь между ПЛК. Передача данных между двумя ПЛК. В этой статье мы настроим открытую пользовательскую связь с протоколом TCP между двумя ПЛК с использованием блока TCON. В следующей статье мы покажем, как перемещать данные после установки соединения. Сначала давайте создадим новый проект и добавим два наших ПЛК. Мы добавим CPU1516-3PN/DP ПЛК и назовем их ПЛК_1 и ПЛК_2, и цель состоит в том, чтобы установить соединение между ними. Смотрите рисунок 1. рисунок 1. Добавьте ПЛК_1 и ПЛК_2. Теперь мы просто добавим блок TCON в нашу логику ПЛК, как мы уже упоминали ранее, нам нужно вызвать TCON для обоих ПЛК, давайте начнем с ПЛК_1. Просто перетащите блок TCON, который вы найдете в открытой папке пользовательской связи. Смотрите рисунок 2. рисунок 2. Перетащите инструкцию TCON Блок TCON по сути является функциональным блоком, поэтому при добавлении его в мой основной OB1 нам будет предложено создать экземпляр блока данных для этого блока. Создайте экземпляр данных и дайте ему правильное имя. См. рисунок 3. рисунок 3. Создание экземпляра данных. Теперь блок TCON добавлен в вашу логику, нам нужно настроить параметр соединения для блока. Просто нажмите на маленький синий значок конфигурации над блоком. См. рисунок 4. рисунок 4. Открыть представление конфигурации При нажатии на синий значок вы откроете представление конфигурации для блока TCON, где мы можем настроить параметр соединения. Вы найдете его почти таким же, как параметр соединения команд PUT и GET. См. рисунок 5. рисунок 5. Параметр соединения TCON. Параметры партнерского ПЛК в блоке TCON имеют больше параметров, чем у команд PUT/GET, поскольку мы используем открытое взаимодействие пользователей. См. рисунок 6. рисунок 6. Параметры партнерского ПЛК Как вы можете видеть на рисунке, у нас есть 4 различных параметра, а именно: ПЛК_2: если оба ПЛК находятся в одном проекте, здесь будет показан ПЛК_2 Трансляция: это сделает соединение доступным для любого устройства в сети Многоадресная передача: это сделает соединение с выбранными устройствами, более чем одним устройством, но не всеми из них Не указано: если ПЛК находится в другом проекте TIA Portal. При выборе не указанного параметра нам будет предложено добавить IP-адрес ПЛК, а также нам нужно будет добавить новые данные о подключении. См. рисунок 7. рисунок 7. Добавить новые данные о подключении Как вы можете видеть на рисунке, чтобы создать новые данные о подключении, просто щелкните стрелку раскрывающегося списка и нажмите «Новый». Это создаст новый блок данных соединения, и он будет автоматически назначен блоку TCON, см. рисунок 8. рисунок 8. Блок данных соединения создан. Как вы видите, был создан блок данных о подключении, теперь мне нужно добавить IP-адрес партнерского ПЛК. Еще нам нужно выбрать, какой ПЛК будет активным устанавливающим соединение. Это определит, какой ПЛК будет отвечать за установление соединения, а другой в этом случае будет отвечать только за открытие порта подключения. Смотрите рисунок 9. рисунок 9. Назначьте ПЛК_1 активным устанавливающим соединение. Поскольку мы выбираем ПЛК_1 активным устанавливающим соединение, то ПЛК_2 будет отвечать за открытие порта подключения, и мне нужно выбрать значение для этого порта. Это может быть любое значение, но в TIA Portal оно автоматически назначается как 2000, поэтому мы оставим все как есть. Смотрите рисунок 10. Рисунок 10. Порт партнера. На предыдущем рисунке вы можете видеть, что параметр соединения стал зеленым, что означает, что все настройки выполнены и приняты. При использовании TCON для установки соединения между двумя ПЛК оба ПЛК должны вызвать инструкцию TCON для установки соединения, поэтому теперь нам нужно сделать то же самое с другим ПЛК_2. Добавьте блок TCON в главный OB1 ПЛК_2, см. рисунок 11. рисунок 11. Вызов TCON в ПЛК_2. После добавления блока TCON нам нужно настроить параметр соединения, как мы это делали с ПЛК_1. См. рисунок 12. Фото 12. Параметры соединения ПЛК_2 На рисунке видно, что мы по-прежнему выбираем ПЛК_1 в качестве активного установления соединения, и мы по-прежнему оставляем порт ПЛК_2 равным 2000. Активное установление соединения и порт должны быть одинаковыми для конфигурации обоих ПЛК, иначе соединение не будет установлено. Теперь настройка соединения для обоих ПЛК завершена, см. рисунок 13. фото 13. Блок TCON в обоих ПЛК. Как видно из рисунка, нам нужно еще одно, а именно определить REQ для обоих ПЛК. Мы создали AllowConnection для ПЛК_2 и StartConnection для ПЛК_1. См. рисунок 14. фото 14. Определите сигналы REQ. Соединение между двумя ПЛК теперь установлено, и оно выглядит следующим образом: ПЛК_1 попытается установить соединение с ПЛК_2, когда сигнал REQ активен, но он не сможет этого сделать, пока ПЛК_2 не включит возможность соединения, а это будет сделано, когда блок TCON ПЛК_1 получит сигнал REQ. Сигнал REQ активен для TCON ПЛК_2, чтобы включить соединение (это означает, что ПЛК_2 откроет порт 2000 в ожидании соединения) Сигнал REQ активен для TCON ПЛК_1, чтобы начать соединение (это позволит ПЛК_1 установить соединение с ПЛК_2 через порт 2000) МОДЕЛИРОВАНИЕ ПРОЕКТА Давайте скомпилируем наш проект и запустим моделирование, чтобы увидеть, как будет установлено соединение. Чтобы увидеть соединение любого ПЛК, а также между ПЛК, можно открыть сетевой вид и открыть вкладку соединений, чтобы увидеть все активные и установленные соединения. См. рисунок 15. фото 15. ПЛК_2 ожидает соединения. Когда REQ равен True, ПЛК_2 будет открыт для соединения, вы можете увидеть значение STATUS 7002 _ если вы проверите справку блока TCON, статус 7002 означает ожидание соединения_. Вы также можете увидеть на рисунке из сетевого представления, что ПЛК_2 ожидает соединения. Когда REQ блока ПЛК_1 TCON равен True, ПЛК_1 попытается установить соединение с ПЛК_2, и поскольку ПЛК_2 уже открыт и ожидает соединения, ПЛК_1 сможет найти и установить соединение с ПЛК_2. См. рисунок 16. Фото 16. ПЛК_1 устанавливает соединение. Обратите внимание, что все соединения в сетевом представлении теперь зеленые, что указывает на исправное и продолжающееся соединение между ПЛК_1 и ПЛК_2. Как мы уже упоминали ранее, после того, как соединение было настроено и установлено, оно автоматически поддерживается. Таким образом, даже когда сигналы REQ становятся ложными, соединение между двумя ПЛК останется. Смотрите рисунок 17. Рисунок 17. Соединение все еще продолжается. Но если включение сигналов REQ не отключает соединение, как я могу его отключить, если захочу? Блок отключения TDISCON Чтобы отключить соединение между двумя ПЛК, мы можем перевести ПЛК в режим STOP, что непрактично во время выполнения процесса. И мы также можем использовать блок отключения или TDISCON. Чтобы добавить блок TDISCON, просто перетащите его в свою логику, см. рисунок 18. фото 18. Добавьте блок TDISCON как вы видите, для добавления блока TDISCON потребуется экземпляр блока данных, как только блок будет добавлен в вашу логику, все, что вам нужно сделать, это назначить идентификатор соединения, которое вам нужно отключить, а также вам нужно назначить сигнал REQ, чтобы начать завершение соединения. См. рисунок 19. фото 19. Блок TDISCON. ТЕПЕРЬ давайте добавим блок TDISCON в другой ПЛК, чтобы у нас была возможность отключить соединение. См. рисунок 20. Для блока TDISCON ПЛК_1. фото 20. TDISCON в ПЛК_1 Давайте вернемся к моделированию и посмотрим, как использовать блоки TDISCON, см. рисунок 21. фото 21. Соединение все еще активно. Как вы можете видеть на рисунке, соединение между ПЛК все еще активно, а сигналы REQ TDISCON все еще ложны. Если REQ ПЛК_1 станет ИСТИНА, соединение будет разорвано, но вы заметите, что ПЛК_2 все еще ожидает соединения, см. рисунок 22. фото 22. REQ ПЛК_1 является истинным. Когда REQ для блока TDISCON ПЛК_2 является истинным, ПЛК_2 больше не будет ожидать соединения. См. рисунок 23. фото 23. Соединение разорвано. В этой статье мы показали, как установить соединение между двумя ПЛК с помощью блоков TCON и TDISCON.
  19. В предыдущей статье мы говорили о том, как настроить соединение между двумя ПЛК с помощью открытого пользовательского взаимодействия, и использовали протокол TCP для соединения между двумя ПЛК. В статье мы показали, как использовать такие инструкции, как TCON и TDISCON, для установления этого соединения. Перемещение данных между ПЛК В этой статье мы покажем, как можно начать перемещение ДАННЫХ между ПЛК, которые мы подключили в прошлой статье. Для этой цели мы будем использовать блоки TSEND и TRCV. Отправка данных в ПЛК_2 Мы будем основываться на проекте, который мы создали в прошлой статье, то есть в нашем проекте уже установлены блоки TCON и TDISCON. и мы продолжим наш проект, добавив блоки TSEND и TRCV, чтобы начать перемещение данных между двумя ПЛК. Чтобы отправить данные из ПЛК_1 в ПЛК_2, давайте начнем с создания блока данных, который будет содержать всю информацию, которую нам нужно отправить в ПЛК_2. См. рисунок 1. рисунок 1. Создайте новый блок данных. Как мы уже обсуждали, лучше всего давать блокам правильное название, так будет проще и интуитивно понятно, для чего предназначен каждый блок. Во-вторых, давайте добавим некоторые данные в блок данных, которые мы хотим отправить в ПЛК_2. Мы предположили, что нам нужно отправить три разных тега данных. См. рисунок 2. рисунок 2. Определите некоторые данные для отправки в ПЛК_2. Есть еще одна вещь, которую нам нужно сделать, чтобы иметь возможность отправить только что созданный нами блок данных в ПЛК_2, а именно убедиться, что оптимизированный доступ к блоку данных не выбран. Для этого нам нужно перейти в свойства блока данных и снять этот выбор. См. рисунки 3 и 4. рисунок 3. Перейдите в свойства блока данных. рисунок 4. Снимите отметку с параметра Оптимизированный доступ к блоку. Обязательно снимите отметку с этого параметра перед использованием блока TSEND, иначе он не сработает. Теперь, когда мы подготовили данные, которые хотим отправить в ПЛК_2, давайте попробуем их отправить. Мы сделаем это с помощью блока TSEND. Просто перетащите инструкцию в ваш основной OB1, чтобы добавить ее в вашу логику. См. рисунок 5. рисунок 5. Добавьте блок TSEND. При добавлении блока TSEND вам будет предложено создать экземпляр блока данных, поскольку это по сути функциональный блок, снова дайте ему правильное имя. См. рисунок 6. Рисунок 6. Создание экземпляра данных для TSEND. Когда блок TSEND будет добавлен в вашу логику, вы обнаружите, что нам нужно сделать некоторые важные конфигурации. См. рисунок 7. рисунок 7. Блок TSEND. Как вы можете видеть, нам нужно сделать некоторые настройки: Сигнал REQ, чтобы разрешить отправку данных. Что касается сигнала REQ, мы определим тег SendData, который будет использоваться для включения отправки данных. Идентификатор соединения, которое я буду использовать для отправки данных, поскольку у меня может быть более одного соединения, поэтому мне нужно назначить, какое соединение будет использоваться. В последней статье мы определили идентификатор 1 для соединения между ПЛК_1 и ПЛК_2, поэтому мы установим идентификатор на 1. ДАННЫЕ, которые мне нужно отправить. Мы уже создали блок данных со всей информацией, которую мне нужно отправить, мы можем просто перетащить блок данных в блок TSEND. Смотрите рисунок 8. рисунок 8. Настройте блок TSEND. Получение данных из ПЛК_1 После того, как мы настроим TSEND для отправки данных в ПЛК_2, нам нужно получить эти данные внутри ПЛК_2. Для этого мы будем использовать блок TRCV. Смотрите рисунок 9. рисунок 9. Добавьте блок TRCV. Как видите, просто перетащите блок TRCV, чтобы добавить его в свою логику. И вы знаете, что далее нам нужно будет создать экземпляр данных для этого блока. Смотрите рисунок 10. рисунок 10. Добавьте экземпляр данных в блок TRCV. После вызова блока TRCV в вашу логику нам нужно будет настроить некоторые параметры, как мы это делали с TSEND. Смотрите рисунок 11. рисунок 11. Блок TRCV. Как вы можете видеть, EN-R — это разрешающий сигнал, который должен быть истинным, чтобы позволить блоку TRCV начать получать данные. ID — это соединение, которое будет использоваться, а DATA — это место, где будут храниться полученные данные. Итак, нам нужно создать блок данных для получения данных внутри него. Не забудьте дать ему правильное имя. Смотрите рисунок 12. рисунок 12. Создайте блок данных для получения данных. Далее определите информационные теги, которые будут получены от ПЛК_1, лучше всего убедиться, что блок данных содержит ту же структуру данных, что и данные, которые будут получены. См. рисунок 13. рисунок 13. Определите теги данных. Для EN-R мы определим тег RecieveData, чтобы включить прием данных. А для идентификатора соединения это 1, как мы установили ранее. См. рисунок 14. рисунок 14. Сигнал EN-R. Затем перетащите созданный нами блок данных в наш блок TRCV, чтобы завершить все настройки. См. рисунок 15. рисунок 15. Добавьте свой блок данных в блок TRCV. Когда вы перетащите созданную нами базу данных, вы заметите, что TIA Portal выдает предупреждение и не принимает только что добавленный нами блок данных. И это потому, что мы не сняли отметку с «Оптимизированного доступа к блоку» блока данных, как мы сделали с TSEND. Смотрите рисунок 16. рисунок 16. Оптимизированный доступ к блоку. Как мы уже говорили, нам нужно снять отметку с этой опции, иначе TSEND и TRCV не будут работать. Смотрите рисунок 17. рисунок 17. Снимите отметку с опции оптимизированного доступа к блоку. Вы можете видеть, что после снятия отметки с «оптимизированного доступа к блоку» блок данных теперь принимается с помощью инструкции TRCV. Теперь, когда вызов и настройка блоков TSEND и TRCV завершены, давайте смоделируем наш проект и посмотрим, как будут отправляться и приниматься данные. Сначала мы создадим простую логику, которая гарантирует наличие значений данных для наших определенных тегов. Простая логика для автоматического создания значений данных Мы создадим простую логику для автоматического создания и обновления значений данных, чтобы было легче увидеть передачу данных между двумя ПЛК. Смотрите рисунок 18. рисунок 18. Простая логика. Эта простая логика будет использовать тактовый бит %M50.5 для автоматического изменения значений данных, хранящихся в блоке данных SendToПЛК_2. Моделирование проекта ПЛК Давайте скомпилируем наш проект и начнем моделирование. Первое, что нам нужно будет сделать, это установить соединение между двумя ПЛК с помощью блока TCON, который мы настроили в прошлой статье. Помните, что нам нужно будет включить возможность подключения из ПЛК_2 и установить соединение с ПЛК_1. См. рисунки 19, 20 и 21. рисунок 19. Нет связи между ПЛК рисунок 20. включите соединение. рисунок 21. Установите соединение. Теперь, когда мы установили соединение между двумя ПЛК, давайте переместим данные из ПЛК_1 в ПЛК_2, как мы его настроили. Сначала установите тег SendData в значение TRUE. См. рисунок 22. Рисунок 22. Сигнал REQ имеет значение true. Вы можете видеть, что, хотя SendData имеет значение TRUE, данные не были отправлены из ПЛК_1 в ПЛК_2. И это потому, что блок TRCV еще не включен для приема каких-либо данных. См. рисунок 23. picture23. Сигнал EN-R — ложь. Как видите, поскольку RecieveData еще не имеет значения TRUE, блок TRCV не может принимать какие-либо данные. Как только EN-R становится истинным, данные будут отправлены из блока данных в ПЛК_1 в блок данных ПЛК_2. См. рисунок 24. picture 24. Сигнал EN-R — Истина. Как только EN-R становится истинным, вы можете видеть, что данные перемещаются из ПЛК_1 в ПЛК_2. Если вы откроете проект и смоделируете его самостоятельно, вы обнаружите, что данные постоянно обновляются в ПЛК_1 и передаются в ПЛК_2. И вот как мы можем установить связь между двумя ПЛК и использовать блоки TSEND, TRCV.
  20. В последних статьях мы обсуждали, как установить соединение между двумя ПЛК с помощью блоков TCON и TDISCON и как перемещать данные между ними с помощью блоков TSEND и TRCV. Передача данных между системами ПЛК В этой статье мы изучим новую инструкцию, которую можно использовать для связи и передачи данных между системами ПЛК с помощью блоков TSEND_C и TRCV_C. TSEND_C Инструкция TSEND_C — это инструкция TIA Portal, которая используется для настройки и установления соединения между двумя ПЛК. После настройки и установки соединения оно будет автоматически поддерживаться и контролироваться ПЛК. Инструкция TSEND_C выполняется асинхронно и имеет следующие функции: Настройка и установление коммуникационного соединения, аналогичного блоку TCON. Отправка данных через существующее коммуникационное соединение, аналогичное блоку TSEND. Завершение или сброс коммуникационного соединения, аналогично TDISCON. Следовательно, название «компактный» дается TSEND_C, поскольку он действует как более 3 блоков одновременно. TRCV_C Инструкция TRCV_C также является инструкцией TIA Portal, которая используется для настройки и установления соединения между двумя ПЛК. После настройки и установки соединения оно будет автоматически поддерживаться и контролироваться ПЛК. Инструкция «TRCV_C» выполняется асинхронно и последовательно реализует следующие функции: Настройка и установление коммуникационного соединения, аналогично TCON. Прием данных через существующее коммуникационное соединение, аналогично TRCV. Завершение или сброс коммуникационного соединения, аналогично TDISCON. Следовательно, название «компактный» дается TRCV_C, поскольку он действует как более 3 блоков одновременно. Использование TSEND_C и TRCV_C в нашем проекте ПЛК В последней статье, когда нам нужно было установить и перейти к отправке данных из ПЛК_1 в ПЛК_2, нам пришлось использовать три разных блока в каждом ПЛК. Смотрите рисунок 1. рисунок 1. Логика внутри ПЛК_1 Как вы можете видеть, мы использовали блоки TCON и TDISCON для установки и сброса соединения, а также использовали TSEND для отправки данных из ПЛК_1. То же самое было сделано для ПЛК_2. Смотрите рисунок 2. рисунок 2. Логика ПЛК_2 Снова мы использовали блоки TCON и TDISCON для установки и сброса соединения, а также использовали TRCV для получения данных из ПЛК_1. Теперь мы хотим заменить все эти блоки и попытаться использовать TSEND_C и TRCV_C вместо этого, чтобы достичь той же функциональности. Сначала в ПЛК_1, где нам нужно отправлять данные, мы будем использовать блок TSEND_C, просто перетащив блок внутрь основного OB1. Смотрите рисунок 3. рисунок 3. Добавьте блок TSEND_C. Поскольку TSEND_C по сути является функциональным блоком, вам будет предложено создать экземпляр данных. Смотрите рисунок 4. рисунок 4. Создайте экземпляр для TSEND_C TSEND_C похож на блок TSEND в том смысле, что вам нужно сделать некоторые настройки и добавить некоторые сигналы. См. рисунок 5. рисунок 5. Блок TSEND_C Теперь нам нужен сигнал для REQ и Data для отправки, а также для настройки соединения. Для сигнала REQ мы создали тег SendData. Кроме того, мы можем просто перетащить блок данных, который мы создали в прошлой статье, который нам нужно отправить в ПЛК_2, мы можем просто перетащить его на вход DATA блока. См. рисунок 6. рисунок 6. Конфигурация блока TSEND_C. Чтобы настроить параметр соединения для блока, мы можем нажать на небольшой значок конфигурации в верхней части блока, чтобы открыть представление конфигурации. Представление конфигурации будет выглядеть очень похоже на представление блока TCON. См. рисунок 7. рисунок 7. Параметр соединения TSEND_C Мы уже показали, как настроить параметр соединения в предыдущих статьях, поэтому мы можем просто сделать то же самое, что и с блоком TCON, см. рисунок 8. рисунок 8. Настройка параметра соединения С этой конфигурацией соединения мы завершили все настройки TSEND_C. Обратите внимание, насколько это быстрее по сравнению с настройкой блоков TCON, TDISCON и TSEND. Теперь нам нужно добавить TRCV_C в ПЛК_2, чтобы он мог получать данные, отправленные из ПЛК_1. В главном OB1 ПЛК_1 просто перетащите TRCV_C в свою логику. см. рисунок 9. Не забудьте создать экземпляр данных для блока TRCV_C. рисунок 9. Добавьте TRCV_C После добавления TRCV_C в вашу логику нам нужно его настроить. Как мы это делали с TSEND_C, нам нужно добавить сигнал для включения приема данных, а также нам нужно добавить блок данных, внутри которого мы будем сохранять данные. Смотрите рисунок 10. рисунок 10.TRCV_C Мы определили тег RecieveData как сигнал EN_R. Смотрите рисунок 11. рисунок 11. Определите тег EN_R Не забудьте снять флажок «оптимизированный доступ к блоку» блока данных, иначе блок не будет работать, как мы показали в прошлых статьях. Далее нам нужно настроить параметры соединения блока TRCV_C, как мы это делали с TSEND_C, просто помните, что неуказанный партнерский ПЛК теперь является ПЛК_1, см. рисунок 12. фото 12. Параметры соединения TRCV_C Моделирование проекта ПЛК Теперь, когда мы настроили блоки TSEND_C и TRCV_ C, мы хотим смоделировать наш проект и посмотреть, как они будут работать, но сначала мы создадим простую логику для автоматического обновления данных ПЛК_1, которые будут отправлены в ПЛК_2. См. рисунок 13. фото 13. Простая логика для автоматического обновления данных. Теперь давайте скомпилируем и запустим моделирование для нашего проекта. Первое, что вы заметите, это то, что ПЛК_1 и ПЛК_2 попытаются установить соединение сразу, потому что мы настроили TSEND_C и TRCV_C, они автоматически попытаются установить соединение. Вот почему будет соединение между двумя ПЛК. Смотрите рисунок 14. Рисунок 14. Соединение устанавливается напрямую. Как вы видите, соединение между ПЛК устанавливается напрямую, потому что параметр CONT в TSEND_C и TRCV_C установлен на TRUE, что означает, что блок автоматически попытается установить соединение с партнерским ПЛК. Мы можем поместить сюда любой управляющий сигнал для управления установлением соединения. Другое, что вы можете увидеть, это то, что REQ TSEND_C и EN_R TRCV_C установлены на FALSE, и именно поэтому не будет никаких данных, перемещаемых между ПЛК. См. рисунок 15. рисунок 15. Нет передачи данных между ПЛК. Если сигнал REQ TSEND_C установлен на значение true, ПЛК_1 попытается отправить данные, но будет ждать, пока другой ПЛК разрешит прием данных, см. рисунок 16. рисунок 16. REQ имеет значение true. Как вы можете видеть, SendData имеет значение TRUE, но данные не были отправлены, поскольку RecieveData все еще имеет значение false. ПЛК_2 будет получать данные от ПЛК_1 только тогда, когда ReceiveData имеет значение true. См. рисунок 17. рисунок 17. Данные отправляются в ПЛК_2 Как вы можете видеть, когда RecieveData имеет значение true. Данные будут отправлены из ПЛК_1 в ПЛК_2, однако вы можете видеть, что данные внутри двух ПЛК отличаются, поскольку данные ПЛК_1 автоматически изменяются в соответствии с простой логикой, которую мы создали ранее. Это означает, что сигнал EN_R позволяет передавать данные один раз, когда мне нужно снова передать данные, этот сигнал должен стать ложным, а затем снова истинным. Ознакомьтесь с прикрепленным проектом TIA Portal и посмотрите на передачу данных между ПЛК.
  21. Эта статья посвящена методу устранения неполадок при программировании ПЛК. В промышленных ПЛК, где используются тысячи входов и выходов, и мы знаем, насколько продолжительны программы ПЛК, это зависит от приложения или использования предприятия. Устранение неполадок в программах ПЛК Сименс Иногда люди могут неосознанно изменить логические параметры, что может привести к неисправности. Даже некоторые ошибки возникают на этапе проектирования логики из-за сложности конструкции. Программное обеспечение Siemens plc включает в себя различные удобные инструменты для устранения ошибок, возникающих в программах. Ошибки могут быть такими, как перекрытие адресации, несколько одинаковых экземпляров вывода, перекрытие адресов битов памяти, многократное использование одной программы для работы снова и снова и т. д. Чтобы обнаружить такие проблемы, в программном обеспечении Siemens доступны четыре типа окон, которые помогут нам устранить проблемы. Они есть: Перекрестная ссылка Структура звонка Список назначений Структура зависимостей Давайте обсудим, как их использовать в нашей программе для устранения неполадок и где их найти в программном обеспечении. Перекрестная ссылка Перекрестные ссылки используются для поиска всех цифровых и аналоговых входов и выходов, используемых в логике. Это поможет нам узнать, сколько раз входы/выходы используются в программе, а также направит пользователей непосредственно к конкретному месту ввода/вывода на страницах логики. Вот пример одной из программ, в которой можно увидеть, как выглядит таблица перекрестных ссылок. Он содержит всю информацию, такую как адресация, язык программы, используемые входы и выходы и т. д. Структура звонка Если вы хотите узнать, какой блок используется в программировании, используется структура вызова. Это обращение функции перекрестных ссылок, в которой мы узнаем, сколько раз SFC, блок FB используются в OB (организационном блоке), и здесь мы узнаем, сколько раз OB используется в SFC и FB. Список назначений Список назначений — очень полезная функция, когда нужно узнать, сколько входов, выходов, таймеров и счетчиков используется в нашем приложении и сколько из них еще осталось, чтобы мы могли использовать их в будущих логах. Структура зависимостей Структура зависимостей используется, чтобы показать, где каждый блок используется в программировании. Но на шаге 7 он не доставит вас прямо на локацию, а в TIA PORTAL перенесет вас туда, где написана программа. ПРИМЕЧАНИЕ: Чтобы открыть эти окна на шаге 7, используйте информацию, как показано на рисунке. После нажатия на дисплей у вас есть варианты. В TIA PORTAL выполните следующий шаг, показанный на рисунке.
Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...