1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

SoMachine Basic (Пользовательские функциональные блоки)

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

Модератор: Специалисты SE

Ответить

Автор темы
dsai
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 21 дек 2019, 19:49
Имя: Дмитрий
Страна: Россия
город/регион: Тамбов
Благодарил (а): 7 раз
Поблагодарили: 4 раза

SoMachine Basic (Пользовательские функциональные блоки)

Сообщение dsai »

Добрый день, уважаемые коллеги.

Большую часть времени работал с контроллерами 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. Все это сводит использование ФБ с таймерами на нет)

Заранее спасибо за советы.

Автор темы
dsai
здесь недавно
здесь недавно
Сообщения: 94
Зарегистрирован: 21 дек 2019, 19:49
Имя: Дмитрий
Страна: Россия
город/регион: Тамбов
Благодарил (а): 7 раз
Поблагодарили: 4 раза

SoMachine Basic (Пользовательские функциональные блоки)

Сообщение dsai »

Небольшое дополнение по теме:
Все дело в адресации. Но, как оказалось, проблемы на этом с ФБ не заканчиваются. Если в ФБ используются конструкции "IF .. ENDIF" то возникают похожие проблемы, так как у каждой инструкции есть уникальный номер.

Видимо пользовательские функциональные блоки в басике расчитаны исключительно на простейшую логику и выполнение арифметических операций, но ни как не предусматривают использование внутри себя других ФБ, инструкций и тд
________________________________________________
Не так страшны первые 90% ПНР, как вторые 90% ПНР

Abaddon7
здесь недавно
здесь недавно
Сообщения: 18
Зарегистрирован: 01 авг 2018, 10:08
Имя: Михаил
Страна: Россия
город/регион: Благовещенск
Благодарил (а): 3 раза
Поблагодарили: 1 раз

SoMachine Basic (Пользовательские функциональные блоки)

Сообщение Abaddon7 »

Помогите разобраться с пользовательскими функциями и пользовательскими функциональными блоками. У меня ощущение, что они вообще не выполняются.
Вот простой пример ниже. Есть функция Write_SMI. Если я использую эту функцию в основной программе, то те ранги, которые внутри функции нее не выполняются. А сделал вывод ниже тех же блоков но без оформления в функцию - все работает.
2023-03-10_11-54-20.png
2023-03-10_11-53-12.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Abaddon7
здесь недавно
здесь недавно
Сообщения: 18
Зарегистрирован: 01 авг 2018, 10:08
Имя: Михаил
Страна: Россия
город/регион: Благовещенск
Благодарил (а): 3 раза
Поблагодарили: 1 раз

SoMachine Basic (Пользовательские функциональные блоки)

Сообщение Abaddon7 »

Разобрался сам где ошибся.
Во втором Rung нужно было поставить блок Short вначале и все заработало как надо.
Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «ПЛК»