Ispsoft руководство по программированию на русском

ISPSoft — это интегрированная среда разработки программного обеспечения от компании Delta Electronics. Она предназначена для программирования PLC (Programmable Logic Controllers). Среда разработки включает в себя множество инструментов, которые помогают разработчикам создавать качественное программное обеспечение для автоматизации производства.

Установка

Для установки ISPSoft скачайте установочный файл с официального сайта Delta Electronics. Установка проходит стандартным способом.

Основные функции

  • Разработка программного обеспечения для PLC.
  • Управление проектами.
  • Поддержка различных типов контроллеров.
  • Расширенный набор инструментов для отладки и тестирования.
  • Создание документации.
  • Генерация отчетов о проекте.

Руководство для начинающих

1. Создание проекта

Проект в ISPSoft означает набор файлов и настроек, необходимых для создания программного обеспечения для PLC. Чтобы создать новый проект, выполните следующие действия:

  1. Запустите ISPSoft.
  2. Нажмите на кнопку «Create new project» на главной странице.
  3. Введите имя проекта и выберите тип контроллера, для которого будет разрабатываться проект.
  4. Нажмите кнопку «Create».

2. Создание программы

После создания проекта можно начать создание программы для PLC. Для этого выполните следующие действия:

  1. Откройте созданный проект.
  2. Выберите «Program» в дереве проекта.
  3. Нажмите правой кнопкой мыши на «Program» и выберите «Add new program».
  4. Введите имя программы и выберите тип языка программирования.
  5. Нажмите кнопку «OK».

3. Написание программы

Далее можно начинать написание программы для PLC. ISPSoft предоставляет множество инструментов для визуального создания программ. Для создания программы выполните следующие действия:

  1. Откройте созданную программу.
  2. Используйте инструменты на панели инструментов, чтобы создавать элементы программы (контакты, реле, регистры, и т.д.).
  3. Сохраните программу.

4. Загрузка программы в PLC

После того, как программа написана и сохранена, необходимо загрузить ее в PLC. Для этого сделайте следующее:

  1. Подключите PLC к компьютеру.
  2. В ISPSoft выберите в меню «Target» -> «Download».
  3. Нажмите кнопку «Download».
  4. Дождитесь завершения загрузки программы в PLC.

5. Отладка программы

После загрузки программы в PLC можно приступить к ее отладке. Для этого можно использовать множество инструментов ISPSoft, например:

  • «Simulate» — инструмент для симуляции работы PLC.
  • «Monitor» — инструмент для отслеживания значений переменных в программе.
  • «Breakpoint» — инструмент для установки точек останова программы.

6. Создание документации

ISPSoft позволяет создавать документацию для программы в автоматическом режиме. Для этого выполните следующие действия:

  1. Откройте созданную программу.
  2. Выберите «Document» в меню слева.
  3. Нажмите кнопку «Generate Document».
  4. Дождитесь создания документации.

Вывод

ISPSoft — это мощная интегрированная среда разработки программного обеспечения для PLC. Она предоставляет широкие возможности для разработчиков PLC, позволяя создавать качественное программное обеспечение для автоматизации производства. Надеемся, что данное руководство помогло вам начать работу с ISPSoft и создать свой первый проект для PLC.

Delta Electronics

Привод-Движение-Управление

8 800 555 90 55

Каталог

Ваш заказ (корзина)Добро пожаловать в центр загрузки! / Download CenterДокументация и SoftШкафы управления и автоматикиГарантия и сервис (ЗИП)Примеры (применения, программирования…)ФорумДоставка / ОплатаКарта сайта


Контроллеры Delta DVP внесены в Госреестр средств измерений!

Контроллеры Delta DVP внесены в Госреестр средств измерений!

Контроллеры программируемые Delta DVP прошли положительные испытания, на основании которых было получено свидетельство об утверждении типа средств измерений.

Термоконтроллеры Delta DT внесены в Госреестр средств измерений!

Термоконтроллеры Delta DT внесены в Госреестр средств измерений!

Регуляторы температуры DTx прошли положительные испытания, на основании которых было получено свидетельство об утверждении типа средств измерений.

Документация и Soft

Время на прочтение
9 мин

Количество просмотров 6.3K

Промышленный логический контроллер (ПЛК) — это тот же компьютер, но попроще. В нем есть все или почти все, что есть в любом ПК, но только, может,  в меньшем объеме или не такой производительности. Но зато он может работать там, где обычный компьютер неприменим. У ПЛК есть то, что делает работу с ним проще при управлении оборудованием.  Например,  наличие «на борту» каналов ввода/вывода дискретных логических сигналов. Его программирование специфично. Выбор языков программирования достаточно ограничен, по  большому счету их всего-то пять, и определяется стандартом МЭК 61131-3 [1]. И этого, как убеждает практика, по большому счету вполне достаточно.

Выбор ПЛК фирмы DELTA, кроме наличия собственной IDE, предоставляет доступ к широкому перечню периферийного оборудования. Фирменное ПО, как минимум, удобнее тем, что не требует особой настройки и «в один клик» работает на всей линейке технических средств фирмы. Минусы могут проявиться в отставании от передовых тенденций программирования. Но для ПЛК это не самая большая проблема, т.к. языки, определяемые стандартом, достаточно консервативны, а их настройка под разные типы ПЛК, как правило, не так уж сложна.

Можно даже утверждать, что тип ПЛК достаточно условен, т.к. программирование при наличии промышленного стандарта для них фактически неотличимо (различие в IDE пока не рассматриваем). По крайней мере, сам стандарт на это настраивает. Нам же далее будет важнее реализация определенной идеи. И если уж, как мы увидим,  с этим справится столь элементарный язык программирования, как язык релейно-контактных диаграмм, то это будет вполне по силам и любому другому языку программирования для ПЛК.  И уж тем более по плечу почти любому из известных языков для ПК. 

Краткое введение в IDE

Установка IDE фирмы DELTA ISPSoft не требует от программиста каких-либо усилий. Установив ее, выберем из всего множества [стандартных] языков язык релейно-контактных схем (LD) и функциональных блоков (FB). На рис. 1 приведен пример проекта в среде ISPSoft.

В рамках программного проекта IDE код ПЛК разбивается на программные модули – POU (Program Organization Units), которые могут быть трех типов.

  1. Программа – PROG (в IDE модуль имеет пометку PRG).

  2. Функциональный блок — FB.

  3. Функция — FC.

Дерево проекта содержит типовые узлы, среди которых Программы и Функциональные блоки для нас представляют наибольший интерес. Узел Программы содержит исполняемые модули типа PRG (тип программного модуля и язык, на котором он реализован, указаны правее имени модуля в дереве проекта). Программные модули узла Программы содержат исполняемый программный код и запускаются последовательно сверху вниз. Есть несколько режимов работы, на которые можно настроить их работу. Это циклическое исполнение модуля, запуск его по времени, и по прерыванию.

Каждый из программных модулей  разбивается на Цепи или Командные строки (Network), где каждая строка представляют код на языке LD. Он включает и программный вызов функциональных блоков на языке FB. Цепи исполняются сверху вниз, а код в пределах цепи – слева направо. И эта та специфика, которая кардинально отличает работу «программной схемы» от аналогичной по виду электронной схемы, элементы которой работают параллельно. И наша задача эту специфику, если не устранить, то хотя бы в чем-то смягчить.

Рис.1. Пример проекта в ISP Soft

Рис.1. Пример проекта в ISP Soft

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

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

Причина отмеченного выше противоречия достаточно очевидна: компоненты программы ПЛК работают последовательно, а компоненты электронной схемы – параллельно. Можно ли устранить эту разницу и, если можно, то как? Ответ следующий: пусть не полностью, но можно. И поможет нам в реализации этого автоматная модель программ и технология автоматного программирования (теоретическое обоснование его представлено в предыдущей моей статье [3]).

Теория – это, конечно, правильно и хорошо, но вопрос, как ее реализовать, используя достаточно скромные возможности [последовательных] языков программирования для ПЛК? И поскольку «лучше раз увидеть, чем сто раз услышать»  рассмотрим для этого программную реализацию RS-триггера на ПЛК. Его модель, как и автоматные модели отдельного элемента И-НЕ и всего триггера, приведены в упомянутой выше статье.

Реализация RS-триггера

Пример проекта реализации модели RS-триггера приведен на рис. 2. Он содержит  три программных модуля. Это два модуля типа PRG – RS_триггер и CopyStates и один типа FB – И-НЕ. 

В модуле RS_триггер первые две цепи просто инвертируют два установочных входных сигнала триггера. Инвертирование необходимо, чтобы в исходном состоянии они были в единичном состоянии (кнопки, имитирующие соответствующие сигналы, отжаты). Так триггер фиксируется в неком установившемся состоянии и при этом не нужно будет держать кнопки, имитирующие сигналы, в нажатом состоянии.  Переменные bX1 и bX2 будут внутренними локальными переменными, зависящими от состояния внешних входных сигналов ПЛК, соответственно сигналов от кнопок X1 и X2.  

Рис. 2. Проект RS-триггера в ISP Soft

Рис. 2. Проект RS-триггера в ISP Soft

На рис.3. приведена реализация программного модуля CopyStates. Его функция – на каждом цикле работы ПЛК копировать массив слов с именем awTempStates в массив с именем awStates. Эти массивы содержат сопоставленные друг другу теневые и текущие состояния программных автоматов. Каждому автомату соответствует один элемент массива текущих состояний и сопоставленный ему (с таким же номером) элемент массива теневых состояний. Каждый автомат в процессе функционирования воспринимает элемент массива текущих состояний (это и есть его текущее состояние), и устанавливает в ситуации перехода значение следующего состояния, помещая его значение в элемент массива теневых состояний. Вот собственно и весь механизм реализации функции переходов отдельного автомата и множества параллельных переходов автоматов некой автоматной сети.

Если бы в рамках той же SWITH-технологии аналогичным образом устанавливались текущие состояния автоматов, то это позволило бы рассматривать и в ней параллельную работу автоматов на уровне состояний автоматов. Хотя для корректной реализации параллелизма нужно помещать в теневую память и данные. Однако в нашем случае мы этот механизм оставляем для реализации самому программисту. Даже в силу того, что только он знает, какие данные будут использованы для синхронизации автоматных процессов и, исходя уже из этих соображений, выбирать механизм оперирования ими (один из них мы далее рассмотрим).

Рис. 3. Программный модуль CopyStates

Рис. 3. Программный модуль CopyStates

Итак, реализация автоматов сводится к следующим шагам. Во-первых, создаются массивы для текущих и теневых состояний. Элементы этих массивов назначаются отдельным автоматам: один элемент для отражения текущего состояния и элемент с таким же номером из массива теневых состояний. Программный автомат, находясь в некотором текущем состоянии, анализирует входные сигналы, глобальные и локальные переменные, текущие состояния других автоматов и т.д. и т.п. В ситуации перехода он выполняет назначенные этому переходу действия и устанавливает, если это необходимо, новое текущее состояние, используя для этого массив теневых состояний. 

Описанный процесс реализации функций переходов и выходов происходит последовательно во всех автоматах проекта. И только после этого массив теневых состояний копируется в массив текущих состояний. Это и реализует как раз модуль CopyStates. Далее этот цикл повторяется.

Реализация модели элемента И-НЕ

 Модель элемента И-НЕ реализована в форме функционального блока (FB). Его программная реализация на языке LD приведена на рис. 4. Переменные, назначенные функциональному блоку, представлены на рис. 5 (на рис. 4 они скрыты).

Рис. 4. Реализация элемента И-НЕ на языке LD

Рис. 4. Реализация элемента И-НЕ на языке LD

Любой FB может иметь переменные нескольких типов: локальные переменные – тип VAR,  входные переменные — VAR_INPUT, выходные – VAR_OUTPUT и их совмещенный тип – VAR_IN_OUT. Наша программная реализация элемента И-НЕ имеет только входные и выходные переменные. На диаграмме они представлены входными/выходными линиями соответствующих FB (см. FB с именами И_НЕ1, И_НЕ2 рис. 2). Таким образом, функциональные блоки представляют собой некий аналог, близкий понятию подпрограммы с параметрами в форме его входных и выходных каналов.

Рис. 5. Переменные FB И_НЕ

Рис. 5. Переменные FB И_НЕ

Цепь 1 (Network 1) в реализации модели элемента выполняет стандартную операцию для любого функционального блока в автоматной форме. Она устанавливает автомат в исходное состояние по сигналу сброса – bClear или при установке системной переменной M1002, принимающей однократно на один цикл работы ПЛК единичное значение при включении  ПЛК.

Тестирование и эксперименты

После записи программы в ПЛК она начинает свою работу, сразу входя в режим генерации. Это процесс отражают светодиоды выходов Y1, Y2. Нажатие кнопок установочных входов, приводит модель в то или иное устойчивое состояние. Ввести модель в режим генерации можно, нажав кнопку сброса – X2 (см. рис.2). И это то, что ожидалось от поведения данной модели в данной ситуации. Если генерация наступает, то можно говорить о верной реализации модели, которая правильно отражает поведение реального триггера.

С другой стороны, возможна также следующая реализация модели триггера, которая представлена на рис. 6. И отличие-то, вроде, при этом не очень существенное – просто перенесли установку выходного сигнала непосредственно в цепи, реализующие переходы, устранив в целях экономии две цепи. Но … поведение модели изменилось. Теперь она не входит в режим генерации.

Рис. 6. Измененная модель элемента И-НЕ

Рис. 6. Измененная модель элемента И-НЕ

В чем дело? А дело в привязке выходных каналов к состояниям модели. В первом случае так мы поступили, создав модель по типу автомата Мура. В ней выходной сигнал изменит свое значение, только при смене текущего состояния. В последнем варианте выходной сигнал реализован по типу автомата Мили и изменяется раньше — в процессе реализации перехода, т.е. до смены текущего состояния модели (оно на этот момент еще находится в теневом массиве состояний).  И именно это фатальным образом сказывается на поведении модели. Но, заметим, если бы был реализован механизм теневой памяти (см. [3]), то поведение модели не зависело бы от выбранного типа автомата.

Рис.7. Реализация простейшего RS-триггера

Рис.7. Реализация простейшего RS-триггера

Наверняка найдутся программисты, у которых автоматное программирование вызывает явное неприятие. И вот только для них мы разработали еще один вариант, который представлен на рис. 7. Глядя на него можно понять их чувства.  Но, господа-товарищи, что нам важнее – красивый код или верная его работа? Анализ результатов тестирования приведенных выше двух реализаций придает этому вопросу уже риторическую окраску.

Проектирование первой версии триггера, безусловно, займет больше времени. Но, во-первых, с увеличением сложности создание автоматной модели, наоборот, уменьшает время проектирования. И должно привлекать не время, а качество проектирования.  Оно иное, т.к. в противном случае теория автоматов потеряла бы смысл своего существования. Во-вторых, потратив больше времени на разработку модели, мы можем применять ее как компоненту более сложных проектов, будучи уверенными в результатах ее работы. В-третьих, становится возможным качественно иное документирование проектов, т.к. автоматная форма более компактна и информативна, чем блок-схемное сопровождение программных проектов. И в последнем случае нам в помощь будет положительный опыт использования UML [4].

Вместо заключения

Хотелось бы, заключая статью, продолжить жизнеутверждающую тему предыдущего раздела, но … не получается. А все дело в том, что захотелось получить визуальные подтверждения генерации триггера. И вот с этим-то, как раз,  и возникли проблемы… Чтобы однозначно убедиться, что триггер входит в режим генерации, нужно было просто замедлить его работу. И затем по результатам индикации (в нашем случае это светодиоды Y1, Y2) получить наглядное подтверждение, казалось бы,  очевидного. Но как это сделать, не изменяя его код?

В ПЛК скорость работы программ зависит от длительностью цикла ПЛК. А он зависит от общего времени последовательной работы программных модулей, находящихся в папке Программы проекта (см. рис.1). Добавляем еще один модуль. В него вставляем уже программный цикл (в ПЛК это будут цепи между командами FOR и NEXT). Смотрим на результаты и … видим, что к нашему удивлению, светодиоды не одновременно загораются/гаснут, а в некой очередности. При этом, что еще больше поражает, сама генерация протекает, пусть и большими задержками, но исправно.

Не буду утомлять предположениями, версиями и т.п. После вынужденного (в целях выяснения проблемы) создания транспортной/инерционной задержки (подробнее о ней см. [3]), после «камлания» с длительностью цикл в добавленном модуле выяснилось, что, похоже, проблема именно в длительности цикла ПЛК. Но как быть с ней? Тоже не сложно. Избегайте операторов FOR-NEXT. А в ситуации, когда нужен все же программный цикл?! Создайте автоматный алгоритм, как это описано выше. В них эти операторы не нужны и потому длительность цикла работы самого ПЛК не будет фатально от них зависеть.   

Т.е. мы разобрались с причиной проблемы, так сказать, вывернулись, т.к. теперь понятно, что и как делать, чтобы ее не было. Другими словами, несмотря ни на что, нормальное заключение, кажется, все же получилось… Благодаря все тем же автоматам. Вот, как все просто! Особенно когда знаешь про автоматы…

Литература

1.      Рылов С. Языки программирования стандарта МЭК 61131-3. [Электронный ресурс], Режим  доступа: https://finestart.school/media/programming_languages, свободный. Яз. рус. (дата обращения 18.07.2022).

2.      Серия AS. Руководство по программированию. [Электронный ресурс], Режим  доступа: https://deltronics.ru/images/manual/AS_PrM_RU_[112018].pdf, свободный. Яз. рус. (дата обращения 18.08.2022).

3.      АВТОМАТНОЕ ПРОГРАММИРОВАНИЕ: ОПРЕДЕЛЕНИЕ, МОДЕЛЬ, РЕАЛИЗАЦИЯ.  https://habr.com/ru/post/682422/

4.      Буч Г., Рамбо Дж., Якобсон И. Язык UML. Руководство пользователя. Второе издание. Академия АЙТИ: Москва, 2007. – 493 с.

Alexander_I

Сообщения: 954
Зарегистрирован: 31 окт 2011, 15:18

Re: Вопросы по программированию ПЛК в ISPSoft

Да есть эти инструкции и в WPLsoft (если версия не древняя), если правильно указали тип контроллера в проекте (ES2), и в User Manual тоже есть, если, конечно, руководство для контроллеров ES2 и прочих обновленных.



Natrii

Сообщения: 28
Зарегистрирован: 02 май 2013, 08:57

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

Natrii »

Здравствуйте, подскажите пожалуйста, в программе я использовала инструкцию mc (mcr). Синтаксически код написан правильно, логически тоже все верно, тогда почему при компиляции ISPSoft выдает ошибку «Error 1001: Linking error»?
Что причина в данной инструкции абсолютна уверена, так как создала новую прогу с этой инструкцией и просто мегающей лампой, пока инструкция присутсвует, компилятор выдает эту ошибку, удаляю — все идет. Может кто знает причину?
P.S. Когда искала ответ на свой вопрос наталкивалась вот на что: человек на форуме спрашивал и ему прислали ответ:
«При компиляции программы в пакете ISPSoft появляется ошибка 1001 «linking error». Это ошибка появляется при использовании инструкции WSUM и её производных. Если её убираю — компилирует. Это ошибка обозначает, что используемые переменные неверного формата (word, bool..). По мануалам формат данных верный. Контролер DVP ES2.
Что делать?
Ответ: К сожалению, данная инструкция в ISPSoft пока не работает.»

Это значит, что данная инструкция mc (mcr), тоже пока не работает? А в WPLSofte она пойдет?
Заранее спасибо.


AlexB

Сообщения: 7
Зарегистрирован: 01 фев 2012, 16:34

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

AlexB »

Здравтствуйте, еще раз!

Занимаюсь сейчас проектом на ISPSoft и обнаружил одну непонятную для меня особенность использования функциональных блоков. Расскажу подробней.

Сделал функциональный блок, очень простой. Он выставляет числовые значения в соответствующих регистрах, если сработали соответствующие контакты. Но, обнаружилось, что числа выставляются даже тогда, когда контакты разомкнуты. Числа не выставляются нигде кроме функионального блока. Как такое может быть? Ведь, если контакт разомкнут, то следующая за ним инструкция выполняться не должна ни при каких условиях! Или в функциональных блоках правила другие? Или это все проблемы старой версии 1.03.

Вот, во вложенной картинке есть пример. Контакты DEV2 и DEV3 разомкнуты. До запуска функционального блока числа в регистрах NUM_2 и NUM_3 были обнулены.

И еще вопрос, вдогонку. В новой версии ISPSoft 2.03, при запуске симулятора, мне выдается предупреждение о том, что у меня в проекте задан контроллер типа ES2, а симулируется тип SV. В чем может выражаться это различие в результатах симуляции? Насколько я понимаю, в логике изменений быть не должно?

Вложения
voprosfb.png
voprosfb.png (107.04 КБ) 14052 просмотра


Ryzhij

Сообщения: 1026
Зарегистрирован: 26 авг 2012, 19:25
Откуда: Россия Рязань

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

Ryzhij »

AlexB писал(а):Сделал функциональный блок, очень простой. Он выставляет числовые значения в соответствующих регистрах, если сработали соответствующие контакты. Но, обнаружилось, что числа выставляются даже тогда, когда контакты разомкнуты. Числа не выставляются нигде кроме функионального блока. Как такое может быть? Ведь, если контакт разомкнут, то следующая за ним инструкция выполняться не должна ни при каких условиях! Или в функциональных блоках правила другие? Или это все проблемы старой версии 1.03.

Вот, во вложенной картинке есть пример. Контакты DEV2 и DEV3 разомкнуты. До запуска функционального блока числа в регистрах NUM_2 и NUM_3 были обнулены.

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

__________________________
Помощь — понятие растяжимое, всяк трактует его в меру своего эгоизма…


AlexB

Сообщения: 7
Зарегистрирован: 01 фев 2012, 16:34

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

AlexB »

После однократного исполнения фукционального блока разве программа где-то ещё записывает в эти регистры иное значение?

В том то и проблема, что в регистры значение записывается только в этом функциональном блоке и нигде более. Перед запуском функционального блока регистры обнуляются каждый раз. Я отключал строку (Network) с ФБ и убеждался, что обнуление работает. Поэтому я могу уверенно говорить, что регистры заполняются именно в функциональном блоке. Причем, достаточно замкнуть контакт на соответствующем входе блока, чтобы значение записалось в регистр. После размыкания контакта и последующего обнуления, значение в регистре сохраняется. В той картинке, что я приложил к предыдущему сообщению видно, что контакт DEV2 (входная переменная блока) разомкнут. Именно он в блоке разрешает запись числа 2 в регистр NUM_2.

То есть логика такая:

1) обнуляются регистры
2) после обнуления запускается ФБ
3) при замыкании входного контакта заполняется соответствующий регистр
4) при размыкании контакта он не меняется (как и должно быть)
5) а далее, так как программа циклична, мы возвращаемся к шагу 1, то есть к обнулению. И на этом шаге регистр по прежнему сохраняет свое значение. Напомню, без функционального блока обнуление прекрасно работает, так что проблема, по всей видимости, не в нем.

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

Вложения
vopros22.png
vopros22.png (90.17 КБ) 14043 просмотра



AlexB

Сообщения: 7
Зарегистрирован: 01 фев 2012, 16:34

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

AlexB »

Ура! Я понял свою ошибку. Инструкции в функциональном блоке действительно не выполнялись, при разомкнутых контктах, как и должно быть. Но регистры все равно заполнялись, потому что выходные переменные функционального блока сохраняли значение. Тое сть:

1) регистры обнуляются
2) в зависимости от состояния контактов на входе ФБ, заполняются выходные регистры ФБ
3) Значения выходных регистров ФБ передаются в те регистры, что ранее были обнулены. Так как выходные регистры (при разомкнутых контактах) не были перезаписаны, то в них и сохранялось значение, которое записывалось в обнуленные регистры.


AlexB

Сообщения: 7
Зарегистрирован: 01 фев 2012, 16:34

Re: Вопросы по программированию ПЛК в ISPSoft

Сообщение

AlexB »

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

Имелось в виду что присвоения и не должно быть, так как контакты для инструкций присвоения разомкнуты. Оказалось что функциональный блок сохраняет значение своих выходов. При разомкнутых контактах ФБ не записывает в выхорд новое значение, зато оставляет там старое. И оно записывается в регистр, который я присоединил к выходу, причем этот регистр ранее был обнулен. Так что, оказалось, что достаточно сделать не выходные регистры, а регистры типа IN_OUT. И проблема решилась. Теперь для незадействованных выходов значение НЕ СОХРАНЯЕТСЯ.



Introduction: PLC Programming WPLSoft & ISPSoft Simulator

#WPLSoft & #ISPSoft simulator steps

Supplies

#WPLSoft #ISPSoft #plc programming #simulator

Step 1: ISPSoft Simulator

ISPSoft simulator need to install COMMGR to run a simulator

1- open Commgr add driver (#DVP simulator) and start it follow image steps 1 to 5.

2 open ispsoft select communication settings from tools menu image step 6.

3 choose the driver name image step 7.

4 click on online mode then run step 8 then 9.

Step 2: WPLSoft Simulator

After programing you can simulate your program click on the below

simulator button 1 on image. to choose a simulator as a communication

Online mode button 2 on image. to start test and simulate your program

Step 3: WPLSoft Ladder Monitoring

to view the input output state you can select (ladder monitoring) or (stop ladder monitoring)

Step 4: WPLSoft Run Mode

to run the PLC and push an X0 input click the below

run button 3 on image. (put PlC ON Run Mode)

set on 4 on image. (active the input)

set off 5 on image. (de-active the input)

Понравилась статья? Поделить с друзьями:
  • Hatchwizard magic peteggs инструкция на русском
  • Назаваль плюс для детей с какого возраста инструкция по применению
  • Восстановление инн через госуслуги пошаговая инструкция
  • Йогуртница daewoo international инструкция по применению
  • Смесь нутрилон пепти гастро инструкция по применению