А программный слейв-сервер это как? Через библиотеки? Пример можно или направление указать?!
Вид для печати
У меня похожая ситуация: в сети Modbus TCP к ПЛК 110 нужно подключить несколько панелей.
Давайте уточним для ясности:
1) Разные порты нужны для разных модулей TCP в ПЛК: один порт для Modbus Slave и другой для Modbus Master? Правильно я понял, или нет?
2) Несколько мастеров (панелей или ПК), которые опрашивают и пишут в один ПЛК Slave в сети TCP вполне могут работать за счет параллельно открытых TCP соединений. Это так? Или нет?
Правда в последнем случае возникает вопрос стабильности и скорости, особенно когда панелей больше 2х. И вот тут сразу возникает мысль о сервере. Но только я задумывался об отдельном устройстве, как посреднике между панелями и ПЛК. Как здесь может помочь тот-же ПЛК: не совсем понимаю?
Нет. Серверу-слейву порт назначаете Вы, мастеру - местная ОС.
Так, но чтоб и порт слейва один - только при программном слейве.
А для штатного слейва - к одному слейву прицепить несколько портов. Внешние мастера цепляются к разным портам, но всё падает в одну область слейва - штатно различить откуда прилетело не сможете. (Открытое окно на улицу. Кто украл трусы с подоконника - не узнаете)
Стабильность одинаковая во всех случаях. Предел (для МО2) около 1000 модбас-запросов в секунду.
Для программного : в принципе можно сделать больше за счет потока запросов от одного клиента. Но тут уже сам клиент должен уметь организовать поток запросов. Ну и при программном исполнении никто не запрещает несколько "расширить" модбас.
Для каких-то конкретных задач - поможет. Для других - лишнее звено.
Эксперимент подтвердил: подключается только один мастер.
Кроме панели Овен СП-310 в проекте планируется использовать в качестве панелей несколько iPad и Android планшетов с помощью ПО Iridium Mobile.
Оно умеет только в режиме Мастер. Сбило утверждение разработчиков что множество панелей нормально работают с одним контроллером.
Как теперь выяснилось, не все контроллеры поддерживают множественные подключения и ОВЕН в их числе.
Трюк с портом срабатывает, благодарю за подсказку! Но этот вариант усложняет разработку и обновление проектов.
Возможно придется разработать процедуру автоматического выбора порта при подключении, или внедрять Iridium сервер, который несомненно решит проблему за счет удорожания.
Буду думать. Благодарю за обсуждение!
Подскажите пожалуйста, на сайте Овен нашел библиотеку СЭТ-4ТМ.03М для Codesys 3.5, а есть ли для версии Codesys 2.5?
Добрый день господа, подскажите в какую сторону думать, необходимо реализовать многозадачность на плк, первая программа основная (PLC_PRG) должна работать при срабатывании какого либо события (в моем случае это автоподмена аквариума по кнопке), вторая программа doliv (автодолив воды в коллектор аквариума) тоже должна работать при включенной переменной (другой кнопке). На просторах разных форумов нашел лишь кусочек кода в котором не смог разобраться как его прилепить и работает ли он вообщев конфигурации задач если выставить выполнение по событию, то он не сбрасывает значение выхода что критично, в библиотеках порылся и не совсем разобрался как реализовать этот останов программы, привлекла внимание лишь SysLibTasks.lib, помогите кто знает или имел делоЦитата:
IF ФлагОбнаруженияСиналаСтоп=TRUE
THEN ПрограммаПустышка
ELSE ОсновнаяПрограмма
END_IF;
По умолчанию ПЛК циклически выполняет задачу, содержащую вызов одной программы PLC_PRG в которой Вы и пишете свой алгоритм на одном из выбранных языков.
При этом, в зависимости от заданных Вами условий (значения входов ПЛК например), выполняется то или иное действие, программа может ветвится, запуская в нужный момент дополнительные функции, блоки и подпрограммы.
Когда программа пользователя отработает один цикл, ПЛК считывает состояние входов, устанавливает выходы, обрабатывает коммуникационные каналы и снова запускает программу. И так примерно 1000 раз в секунду, ну или медленнее если программа достаточно сложная.
Конфигурация задач на закладке Ресурсы позволяет гибко настроить этот механизм, но если Вы новичок оно Вам точно не нужно.
Вам просто нужно описать алгоритм своей задачи по типу "если ... то".
Посмотрите простые примеры программ. Думаю разберетесь. Если будут затруднения, опишите подробнее свой алгоритм, подскажем. Успехов
Уважаемые знатоки, почему переменная "а" всегда False? Как это работает?
UPD: b - переменная типа WORD. Если изменить тип переменной на INT, то компилятор будет ругаться.
Добрый день.
Попробуйте поставить b=10 в скобки, так процедура сравнения будет проводиться корректно.
a:= NOT (b = 10);
Добрый день. Столкнулся с проблемой при написании программы в codesys. При симуляции программы один из fb перестает работать, линии связей окрашиваются в светло серый цвет, в окне объявления переменных появляются вопросы.Программа в CFC.
Причем это происходит не сразу после входа в режим симуляции, а через какое-то время. Подскажите как с этим бороться.
Спасибо.
Александр N
В данном проекте я обнаружил следующее:
1. Множественное объявление переменных. Например переменная di01_schetOborot объявлена в конфигурации и в FUNCTION_BLOCK zavihritel. Объявление в ФБ лишнее. Переменные, объявленные в конфигурации, имеют статус глобальных, и обращаться к ним можно из любого ФБ или ПОУ в любой момент.
2. Замер оборотов на входе DI1, примененный в данном случае, будет "медленным", ибо в этом режиме быстрые входа работают как обычные. Если замеряемая частота довольно высокая, то как вариант можно использовать SysLibPorts (сами входа в режиме Fast discrete inputs - direct control), ФБ переводить в ПОУ, а вызов этой задачи выполнять из Конфигуратора задач, используя прерывание таймера с минимальным временем (20мкс вроде как). Либо использовать функционал входов Fast Counters.
Спасибо за комментарий. По оборотам разберусь. Мне более важно разобраться с остановкой работы блоков. Множественное объявление переменных может быть причиной этого.
Какой конкретно ФБ подвисает?
zatvor_andGidravlika
В этом блоке тоже куча многократно объявленных переменных. Рекомендую все же убрать дубли объявлений.
Хорошо попробую
Все получилось, убрал лишние переменные, убрал перекрытия памяти и зависание пропало. Спасибо за Ваши отзывы.
Добрый день! Подскажите пожалуйста, как можно отправить String из ПЛК на панель оператора. Codesys предлагает только 2 байта, 4 байта, 8 бит и Float. Есть ли инструмент который передаст String в String на СП307? Спасибо!
Большое спасибо. Я решил кодировать в Integer, его отправлять на панель, а потом декодировать с помощью элемента "Вариационный текст", хорошо что на сп307 есть такая возможность.
Вложение 44343
А если нужно не только в панель но и обратно?
Если все таки понадобится, то вот для стринг из 20 символов
Вложение 57238
Вложение 57239
ЗЫ.
Как это работает:
Добавил кино
Как это работает:
Наглядно, доступно, понятно и просто круто! ;)
Вот это все надо бы сохранить в Каталог "Примеры программ для ПЛК100/150/154/110/160".
Как это сделать, кто знает? Написать Александру Приходько?
Добрый день. Прошу помочь советом. Ранее автоматизацией не занимался. Приточно-вытяжная вентиляция. Вентилятор притока канальный. Грелка 380 В, общая мощность 6 кВт, 3 ТЭН звездой без нейтрали. Есть желание переделать систему на ПР200, но запнулся как сделать регулировку ТЭН. Читал много, но видимо не достаточно для полного понимания. Вариант 1 через пид-регулятор получить 0-10 в на выходе, но тогда не получается подобрать ТТР с плавной регулировкой, 3-х фазное, с управлением 0-10 в. Вариант 2 использовать алгоритм двухпозиционного регулятора. Здесь смущает ресурс встроенных реле ПР200.
Купите ПР с выходами 0..10В и управляйте одним ТТР с входом управления постоянным напряжением напрямую или через транзистор.
Есть модификация ПР200 с 4 транзисторными выходами, там встроенная ШИМ:
Вложение 44400
+ одно трехфазное(полюсное) или три однофазных(полюсных) дискретных ТТР!
Короче, масса вариантов, глаза разбегаются в разные стороны!
Здравстуйте! Появился у меня вопрос по работе с таймерами.
FOR i:=0 TO 9 DO
FOR j:=0 TO 9 DO
ton1(IN:=TRUE, PT:=T#217ms);
IF ton1.Q THEN
a:=SysTimeGetMs();
x[i,j]=a;
END_FOR
END_FOR
Я не понимаю почему таймер срабатывает всего лишь 1 раз и независимо от цикла. То есть на первом шаге он запустился, а циклы i,j моментально проходят до конца, а таймер просто сам по себе отработал и все. Помогите пожалуйста разобраться, как правильно вызывать таймер на каждой итерации цикла. Пробовал сделать 2 функциональных блока: в одном циклы, на каждой итерации вызывается второй функциональный блок с таймером и арифметическим действием, но ничего не меняется, таймер так же сам по себе отрабатывает 1 раз и на этом все. Не знаю, что делать.
Здравствуйте! Я новичок в программировании ПЛК, поэтому вопросы будут возможно глупыми. Я программирую ПЛК110-30 (старого образца), и столкнулся с такой интересной проблемой, решение которой пока в интернете не нашел. При подключении онлайн для нормальной работы ПЛК я должен выполнить следующее: Онлайн -> Подключение -> Онлайн -> Сброс (заводской) -> Загрузка -> Старт. Если я сделаю подключение не в этой последовательности или перед сбросом пройдет больше 10 секунд, ПЛК перезагружается и теряет связь, приходится это все делать сначала. Причем неважно, я внес изменения в программу или только подал питание на ПЛК, в обоих случаях работает только после этих манипуляций. А вот с маленькими проектами (скажем проверяю работу какого-то блока отдельно) онлайн подключение происходит нормально, просто подключаюсь и запускаю ПЛК. Как можно избавиться от этих лишних телодвижений? Может есть какая настройка в программе?
Прикрепляю программу. Все программы, которые начинаются с CNC в данный момент не вызываются, они черновые.
1. То есть для начала попробовать убрать репит/антил и попробовать загрузить? Второй пункт не понял если честно. Но в общем, когда подключается к плк, все работает отлично. Мне самое главное избавиться от лишних движений при подключении онлайн, а код потом поправлю, я сам понимаю что там жесть, как уже говорил, новичок в этом, это мой первый, и уже если честно надеюсь что единственный проект
Здраствуйте, возможно ли использование ПК в роли панели оператора для контроллера ПЛК110 [М02] ? С панелями все понятно т.к там есть конфигуратор.
P\s: Если да, буду признателен ссылке (примера), как это все организовать и какое ПО для этого нужно.
Хороший вопрос, Илья ;) Вариантов, как обычно, сразу несколько.
Самый простой: Облако ОВЕН Cloud: Просто, удобно, бесплатно, но нужен интернет.
Затем на ум приходят многочисленные SCADA системы, ОВЕН рекомендует например такие: Можно создать систему любого уровня сложности, но уже за деньги.
Стоит упомянуть также системы "Умный дом": OpenHub, MajorDomo, Iridium Mobile.
Этим список не заканчивается, и чтобы посоветовать что-либо более конкретное обрисуйте подробности задачи.
Появилась необходимость перевести старое оборудование на логику и управление ПЛК.
В программа будет иметь возможность управлять множеством (~60 дискр. ~ 5 аналог.) дискретных и аналоговых вх\вых. А также необходимо реализовать возможность построения графиков тех.процесса.
Возможность соединения ПЛК и ПК через компьютер не вариант. Использование панели оператора СП3хх, более простой способ в плане связи с ПЛК и созданием самой архитектуры управления, но ее цена сопоставима с *нормальным* ПК. К тому же (если я не прав то исправьте, т.к знаю все это на уровне плинтуса) хотелось бы большей вариативности (высокое разрешение изображения) с созданием окон на СП3хх, а именно создать в 3D проект(AutoCAD\Cinema 4D) установки и использовать его (отдельные ракурсы в jpg) как кнопки и фронтальное изображение окна.
Подключаю модуль MY210-403 к ПЛК110-60. Добавил ModBus Master, в нем добавил универсальное устройство, настроил IP, добавляю 32 bit output state, чтобы записывать значения в модуль, для управления реле. Но команды не проходят, пока не записать 255 во второе поле которое называется Command. Как-то от этого можно уйти?
Вложение 44420
А добавить обычный 32 bit output без всяких "state", не судьба?
Вложение 44421