Смотря что вы понимаете под словом встроенный? Если вам обычный ПИД без автонастройки то там формула почти 100 лет известна и с тех пор не менялась. В чем для вас разница?
Вид для печати
Еще раз здравствуйте!
Евгений, благодарю за ответ про ПИД-регулятор!
Все четко. И другим участникам диалога спасибо за ваши мысли и вопросы!
1. Вопрос: cкажите, а вот мы хотели бы еще рассмотреть такой вариант. Это еще мысли только. Сможем ли мы очень быстро реализовать на СПК107, сам регулятор 2TRM1 т.е. повторить его функционал. У нас просто измеряется одна температура (один сигнал входной) на нем и все. Хотелось бы очень быстро и просто или не получится так, ведь 2TRM1 сертифицированное устройство.
2. Вопрос: заказчик просит еще у нас руководство по загрузке и восстановлению работоспособности ПЛК , т.е. СПК107. Подскажите, что мы должны ему предложить? Есть ли типовой документ руководство по загрузке и восстановлению ПЛК (СПК107) или этот документ нам надо самим разрабатывать?
Сертифицировано как низковольтное оборудование. СПК107 тоже такой сертификат имеет. Какое отношение это имеет к регулированию? И касательно вашего вопроса то 2х позиционное регулирование это 5 строк кода на ST или можно готовый ФБ в библиотеке найти.
Всем добрый день! При установке CDS3.5 на диск D вылезает : it is possible that packages from this patch cloud not be installed. Пробовал дважды. Запускаю для инсталляции *.exe
В чем может быть проблема? На C:\ не пробовал, места маловато.
Здравствуйте Евгений! В видео про Латч переменные (29. Вывод ошибок обмена Modbus в таблицу тревог ) есть момент, где с 30:17 (мин:сек) идет объяснение о Latch переменной. И далее на интервале с 30:37 – 30:56 сказано об одном Триггере 1 и более двух Триггерах, и о возможности добавить большее количество столбцов Триггеров привязанной к одной дискретной переменной (столбец Детали). Я увидел еще возможность добавить и столбцы нескольких сообщений: Сообщение 2 ...Сообщение 3 и т.д и все это к одной переменной или выражению (см. столбец Действие).
У меня получилось по одному дискретному событию (столбец Действие ) вытаскивать с помощью Латч переменной (в колонке Сообщение) само значение Температуры (строковый тип). А как мне выполнить задачу, чтоб от этого же дискретного события (у меня это общая Авария кондея) “вытаскивалась” – фиксировалось все мои 10 сигналов одновременно (у меня 6 сигналов аналоговых и 4 дискретных)? Как правильно выполнить синтаксис? Что, надо мне набивать 10 строк или добавить в одной строке все: добавив новые столбцы Триггеров или добавляя новые Сообщения и что надо номер Латч переменной постоянно менять в каждой строке с разным номером. Не могу пока понять механизм, как правильно решить свою задачу. С уважением!
Добрый день.
Вопросы становятся всё более частными, и давать точечные ответы на них становится сложнее.
Свяжитесь, пожалуйста, со мной через телеграм (в подписи) и подготовьте доступ по AnyDesk, чтобы мы, глядя на ваш открытый проект, смогли более предметно обсудить ситуацию.
Доброго знатоки.
Кликаю ПКМ на графике трассировки (логин, не логин - не влияет), контекстное меню не появляется и перестает появляться на любом элементе. Помогает только закрытие CoDeSys (3.5 сп17 патч 6 32бит). Проверил с разными проектами так же. Хотел загрузить трассировку для наблюдения за переменным, не получается. Тут архив проекта с библиотеками и настройками.
Подскажите пожалуйста что не так, как можно выполнить?
Добрый день.
Вопрос хотел бы прояснить для себя.
При объявлении структуры инициализирую ее элементы определенными значениями.
Объявляю экземпляр без инициализации новыми значениями
Потом меняю значения в объявлении структуры. Перекомпилирую программу. Но программа при этом в экземпляре продолжает видеть самые первые значения, заданные при объявлении структуры, хотя они нигде уже в программе не фигурируют.
Это нормальное поведение? Я что-то совсем потерялся.
При объявлении экземпляра структуры с индивидуальными значениями в скобочках программа конечно их видит.
Но и я конечно понял, что логичнее наверное ENUM использовать для этого случая.
Соглашусь, что степень серьезности бага каждый пользователь оценивает по собственным критериям.
Наблюдаю у себя и коллег привычку на автоматизме выполнять "очистить все" перед каждой загрузкой проекта.
Справедливо, что у других пользователей ее может не быть.
В любом случае - в более поздних версиях CODESYS этот баг исправлен.
Здравствуйте! Регулирование температурой самого простого кондиционера. Хотим попробовать реализовать с выбором уставки, например от 2 градусов до 45. Задание все с панели СПК107 с кнопок (выбор уставок). Укажите или подскажите готовый интерфейс из примеров или видео самый простой пример (например в описании Визуализации - самый простой вариант: просто выбор значений с привязанных графических примитивов) для выбора уставки. Не большой пример, но рабочий. Регулировать будем как у ТРМ (диапазон вкл/выкл – когда выше верхней границы или ниже). Гистерезис – если есть опробованный готовый вариант примера (гистерезис от 2-х до 3-град, рассмотрим любой готовый пример). Более менее рабочий вариант, если можно, а то бывают учебные варианты в инете и почему-то часто в методичках пишут, что нельзя использовать как рабочий.
Не пойму, как грамотно возводить и сбрасывать переменную для записи/чтения по Модбас
Вроде бы раньше получалось и так. Но не выходит сейчас
Вот один цикл ПЛК. Переменные внутри условий не возводятся. Или они успевают перезаписаться быстро в том же цикле? И получается что не возвелись.
Но команды модбаса по крайней мере не активируются таким образом, только если убрать две строчки, которые за пределами IF
Если коротко, при изменении переменной в поле на hmi панели, там же выставляется бит в регистре, за которым циклически следит ПЛК.
При появлении сигнала об изменении этого бита в 1, ПЛК забирает значение с панели.
И ПЛК сам сбрасывет этот бит в панели.
В другой более крупной программе это у меня работало. Простой сброс в FALSE в том же цикле ПЛК.
Очень простой наверное вопрос для тех кто в теме ПЛК.Код:IF pumpType = 0 THEN
IF pumpTypeValueChangedByOperatorRead THEN
readPumpTypeValueTrigger := TRUE;
pumpType:= pumpTypeFromHMI;
pumpTypeValueChangedByOperatorWrite := FALSE;
resetPumpTypeValueTrigger := TRUE;
IF pumpType = PUMP_TYPE.nitrogen THEN
minStartPumpTemperature:= s_minStartPumpTemperatures.nitrogen;
END_IF
END_IF
END_IF
readPumpTypeValueTrigger := FALSE;
resetPumpTypeValueTrigger := FALSE;
Циклически конечно проще, но а если считать нужно вообще всего один раз? Вообще только при первом старте ПЛК (даже не цикле).
Есть смысл постоянно читать?
Суть понял про сброс, спасибо
Но одна переменная у меня не сбрасывается и я не пойму почему, вот она в начале цикла должна уходить в False. Но постоянно True.
Вложение 76372
Потому что отображается всегда последний её статус а ниже он как раз в истине...
Fds:= true
Fds:= false
Fds:= true
В статусе у всех будет последнее присвоение, true
Не, она сбрасывается, просто компилятор или как его, показывает переменные только после всего цикла. По идее в кодесисе вроде есть пошаговое отображение. Можно его попробовать.
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал. Это особенности среды, и я не встречал контроллеров с другим отображением.
Почему не сбрасывается? Должна же. В каждом цикле, сброс и возведение.
Просто по другим переменным я видел прям в живую как менялось false на true в пределах одного цикла.
А тут и запись должна происходить, а ее не было и изменения переменной я не видел глазами.
Возможно потому что
Ну ладно, это я потом еще посмотрю проверю. Пока оборудование не под рукой.Цитата:
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал
Можно полробовать этот бит возвести только в первом цикле, дальше сбросить.
Ибо запись этой переменной нужна один раз, из retain в плк на панель, там в макросе идет проверка по данному параметру, если 0, то показывается окно выбора, выбирается параметр и данные нужно с панели забрать на плк
В следующих циклах уже выбор не предлагать (и при следующих включениях контроллера без сброса retain), а показывать основное окно. Ибо панель должна получать параметр отличный от 0.
Я немножко с алгоритмом запутался получается, не во всех случаях работает адекватно (смотрю например, чтобы работало при перезагрузке контроллера отдельно от панели и наоборот). Перекидывание переменных туда-сюда, куча триггеров
До этого было сделано подобное, но проще. Есть retain переменная в ПЛК, ее нужно при старте записать в панель и дальше чтоб на панели можно было ее поменять и отправить обратно в retain ПЛК. При следующих запусках уже соответсвенно из ПЛК грузить в панель измененный вариант.
Это все работало отлично. В панель писал в первом цикле программы ПЛК или по флагу о перезагрузке панели, макрос на секунду выставлял флаг, читал его контроллером.
Сейчас для другого случая оставил в макросе только подъем бита, снимаю его уже командой из ПЛК по факту выполнения нужных операций.
Пока все в комплексе не совсем работает.
Спасибо за подсказки всем. Буду разбираться, докручивать.
Это горе от ума))) Зачем вы всё усложняете?
Храните уставку в панели, в PFW. При включении считываете в оперативный регистр PSW, если надо, там же и меняете пока идёт процесс.
При нажатии кнопки Стоп, например в конце смены, записываете уставку обратно в PFW. Запись делать желательно не чаще нескольких раз в день.
Никаких одноразовых считываний, никаких триггеров и подобной дребедени вообще не надо.
Или вообще, можно читать уставку циклически и не париться совсем, а упор лучше сделать на групповое чтение, запись по 120 регистров за раз, например массивом.
Код между присвоениями будет работать, но вы всё равно будете видеть false...Цитата:
Возможно потому что
Если бы между присвоениями фальши и истины был бы код, учитывающий фальш, он бы работал
Но переменная Asd в редакторе будет false, я про это писал.Код:Asd:= false
If not asd then fff:= fff+1
Asd:= true
Подскажите, что не так может быть с настройками, что запись задания частоты не проходит? Нажимаю Ctrl+F7 естественно.
Вложение 76483
Связь по Модбас есть, еще в самом частотнике выставил такие настройки
https://owen.ru/uploads/383/primer_9...upravlenie.pdf
Долгое время не получалось изменить язык, в итоге нашла ошибку, при установке нет выбора complete, полностью все удаляла и переустанавливала несколько раз с сайта овен, подскажите пожалуйста что делать?
Язык интерфейса?
Вот так не пробовали? (сам не пробовал, т.к. всегда все нормально ставилось...)
Вложение 76532
PS Tools/Options.../International Settings - вроде работает...
Добрый день.
Переустановите CODESYS в точности по видео:
https://youtu.be/3KcJWZEVXCg?si=p4zs9mCdr9V0tkBL
Извините, что не уточнила, язык программирования, только ST
Здравствуйте.
Хочу реализовать такой подход:
При нажатии на одном из экранов визуализации на клавишу должна переключиться визуализация и на ней выбраться нужная вкладка.
Подскажите, как это реализовать.
Спасибо.
Да. У меня есть экран со вкладками. Их 12 штук.
Я могу их переключать, нажимая по заголовку вкладки.
И есть 12 клавиш где-то на другом экране.
Я хочу, что-бы при нажатии на те клавиши сразу переключаться на этот экран и на нужную вкладку.
С экраном понятно как реализовать. А как реализовать открытие нужной вкладки?
Вложение 76546