Добрый день, уважаемые коллеги.
Большую часть времени работал с контроллерами M241 и М340, программирование которых осуществляется через другие среды разработки, где есть другие языки программирования. Там все легко и просто с функциональными блоками. Но столкнулся с задачей сделать программку для М221, соответственно приходится ковыряться с SoMachine Basic (ну или как теперь его зовут EcoStruxure Machine Expert - Basic).
Вопрос заключается в следующем. Написал функциональный блок (User-defined function blocks) по управлению насосом. Таких насосов, которые будут управляться аналогичными блоками, допустим будет 4. Соответственно в программе я использую несколько экземпляров написанного функционального блока, но при отладке через симулятор появился вопрос. Есть ощущение что независимо от того что экземпляры разные - для всех насосов выполняется один и тот же функциональный блок.
Прошу помощи, подскажите, в чем может быть проблема? Неужели для каждого насоса придется писать каждый блок?
P.S. Маленькое дополнение. Есть ФБ1, ФБ2 и ФБ3, которые выполяются в ФБ4. Внутри ФБ1, ФБ2 и ФБ3 используются таймеры. ФБ4 и является основным блоком, который управляет насосом. Я так понимаю, дело в том, что таймеры в ФБ1, ФБ2 и ФБ3, независимо от экземпляра находятся по одному и тому же адресу (например в ФБ1 таймер %TM0, в другом экземпляре того же ФБ1, таймер также расположен по адресу %TM0. Все это сводит использование ФБ с таймерами на нет)
Заранее спасибо за советы.
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
SoMachine Basic (Пользовательские функциональные блоки)
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 94
- Зарегистрирован: 21 дек 2019, 19:49
- Имя: Дмитрий
- Страна: Россия
- город/регион: Тамбов
- Благодарил (а): 7 раз
- Поблагодарили: 4 раза
SoMachine Basic (Пользовательские функциональные блоки)
Небольшое дополнение по теме:
Все дело в адресации. Но, как оказалось, проблемы на этом с ФБ не заканчиваются. Если в ФБ используются конструкции "IF .. ENDIF" то возникают похожие проблемы, так как у каждой инструкции есть уникальный номер.
Видимо пользовательские функциональные блоки в басике расчитаны исключительно на простейшую логику и выполнение арифметических операций, но ни как не предусматривают использование внутри себя других ФБ, инструкций и тд
Все дело в адресации. Но, как оказалось, проблемы на этом с ФБ не заканчиваются. Если в ФБ используются конструкции "IF .. ENDIF" то возникают похожие проблемы, так как у каждой инструкции есть уникальный номер.
Видимо пользовательские функциональные блоки в басике расчитаны исключительно на простейшую логику и выполнение арифметических операций, но ни как не предусматривают использование внутри себя других ФБ, инструкций и тд
________________________________________________
Не так страшны первые 90% ПНР, как вторые 90% ПНР
Не так страшны первые 90% ПНР, как вторые 90% ПНР
-
- здесь недавно
- Сообщения: 18
- Зарегистрирован: 01 авг 2018, 10:08
- Имя: Михаил
- Страна: Россия
- город/регион: Благовещенск
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
SoMachine Basic (Пользовательские функциональные блоки)
Помогите разобраться с пользовательскими функциями и пользовательскими функциональными блоками. У меня ощущение, что они вообще не выполняются.
Вот простой пример ниже. Есть функция Write_SMI. Если я использую эту функцию в основной программе, то те ранги, которые внутри функции нее не выполняются. А сделал вывод ниже тех же блоков но без оформления в функцию - все работает.
Вот простой пример ниже. Есть функция Write_SMI. Если я использую эту функцию в основной программе, то те ранги, которые внутри функции нее не выполняются. А сделал вывод ниже тех же блоков но без оформления в функцию - все работает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 18
- Зарегистрирован: 01 авг 2018, 10:08
- Имя: Михаил
- Страна: Россия
- город/регион: Благовещенск
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
SoMachine Basic (Пользовательские функциональные блоки)
Разобрался сам где ошибся.
Во втором Rung нужно было поставить блок Short вначале и все заработало как надо.
Во втором Rung нужно было поставить блок Short вначале и все заработало как надо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.