PDA

Просмотр полной версии : CODESYS V3.5. Вопросы и ответы



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 [13]

Johnystu
07.02.2021, 19:50
Поэкспериментировал с физическим портом на ноуте - всё нормально отображает. Почему такой эффект может происходить?

Евгений Кислов
07.02.2021, 20:09
Например, потому что на конвертере FTDI и Arduino может быть не RS-232, а TTL.

Johnystu
07.02.2021, 21:23
Например, потому что на конвертере FTDI и Arduino может быть не RS-232, а TTL.
Так и есть. Спасибо за помощь!

Mr_Camel
15.02.2021, 10:54
Всем добрый день! Нужно пнуть новичка в нужном направление. Что-то я запутался с передачей переменных Real. С ПЛК110.32 на СП310. Знаю что тем много...и все читал, но что-то не так делаю.
Подключил библиотеку ОСКАТ_333. Т.к там есть блок REAL_TO_DW, который не делает округление. Создаю в ресурсах переменную 4 byte (DWORD) и передаю на панель. Там создаю блок индикации, задую адрес регистра. И тип данных DWORD.
Формат Float. Без масштабирования. Но получается какой то бред на панели. Скрины прилагаю.53502535035350453505

Евгений Кислов
15.02.2021, 11:17
Всем добрый день! Нужно пнуть новичка в нужном направление. Что-то я запутался с передачей переменных Real. С ПЛК110.32 на СП310. Знаю что тем много...и все читал, но что-то не так делаю.
Подключил библиотеку ОСКАТ_333. Т.к там есть блок REAL_TO_DW, который не делает округление. Создаю в ресурсах переменную 4 byte (DWORD) и передаю на панель. Там создаю блок индикации, задую адрес регистра. И тип данных DWORD.
Формат Float. Без масштабирования. Но получается какой то бред на панели. Скрины прилагаю.53502535035350453505

Добрый день.

1. Ваш вопрос не по CODESYS V3.5, а V2.3 (обратите внимание на название темы).
2. Вам надо между последним 8 bits и первым 4 byte добавить элемент 2 byte для выравнивания памяти (соответственно, на панели вам потребуется указать регистр 6, а не 5).
Cм. здесь. 3.1.3.1:
https://ftp.owen.ru/CoDeSys23/06_Documentation/Plc1xx_PlcConfiguration_v2.0.pdf
3. Вместо элемента 4 byte можно использовать элемент Float - тогда не потребуется делать конверсию, можно сразу привязать Real.
4. В настройках панели должна стоять галочка Изменить порядок регистров:

53506

Mr_Camel
15.02.2021, 11:35
Добрый день.

1. Ваш вопрос не по CODESYS V3.5, а V2.3 (обратите внимание на название темы).
2. Вам надо между последним 8 bits и первым 4 byte добавить элемент 2 byte для выравнивания памяти (соответственно, на панели вам потребуется указать регистр 6, а не 5).
Cм. здесь. 3.1.3.1:
https://ftp.owen.ru/CoDeSys23/06_Documentation/Plc1xx_PlcConfiguration_v2.0.pdf
3. Вместо элемента 4 byte можно использовать элемент Float - тогда не потребуется делать конверсию, можно сразу привязать Real.
4. В настройках панели должна стоять галочка Изменить порядок регистров:

53506

Спасибо большое!
К сожалению не было такого документа у меня. Насчет версии CODESYS извиняюсь, не обратил внимания.
Элемент Float соответственно также 4 byte?
А можно по подробнее насчет галочки в панели? Или пните также где почитать, чтобы не бездумно поставить и радоваться, а понимать что будет с адресацией в таком случае.

Евгений Кислов
15.02.2021, 11:47
Элемент Float соответственно также 4 byte?

Элемент Float занимает 4 байта в памяти. К нему привязывается переменная типа REAL.


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

Галочка не влияет на адресацию.
Она используется для изменения порядка регистров для типа Float/DWORD при их считывании записи по Modbus.
Например, вы считываете с ПЛК 0xAABBCCDD, и панели переставляет регистры - получается 0xCCDDAABB.
Порядок регистров в панели отличается от порядка регистров в слэйве ПЛК1хх, поэтому галочку надо поставить.

Mr_Camel
15.02.2021, 12:05
Элемент Float занимает 4 байта в памяти. К нему привязывается переменная типа REAL.



Галочка не влияет на адресацию.
Она используется для изменения порядка регистров для типа Float/DWORD при их считывании записи по Modbus.
Например, вы считываете с ПЛК 0xAABBCCDD, и панели переставляет регистры - получается 0xCCDDAABB.
Порядок регистров в панели отличается от порядка регистров в слэйве ПЛК1хх, поэтому галочку надо поставить.

Еще раз спасибо!
Для меня это первый опыт работы в CODESYS и контроллеров ОВЕН.
Скоро придет СПК, буду постигать v 3.5. Я так понимаю там таких проблем с визуализацией нет. Все делаем в CODESYS?

Евгений Кислов
15.02.2021, 12:07
Еще раз спасибо!
Для меня это первый опыт работы в CODESYS и контроллеров ОВЕН.
Скоро придет СПК, буду постигать v 3.5. Я так понимаю там таких проблем с визуализацией нет. Все делаем в CODESYS?

Да, все верно.

fatlortroll
17.02.2021, 16:51
Добрый день.

Вопрос по ФБ MB_TcpSlave из библиотеки OwenCommunication.

Подскажите пожалуйста, для случая обмена массивом данных, который не помещается в один TCP Modbus ADU при нескольких подключенных клиентах (usiCurrentCountClients > 1) запрос каждого клиента будет выполнен, как единое целое, или возможно "перемешивание" ADU нескольких клиентов?

Как пример, если два клиента будут пытаться "одновременно" записать массив данных, останется ли он в согласованном состоянии?

Евгений Кислов
17.02.2021, 17:19
Добрый день.


Подскажите пожалуйста, для случая обмена массивом данных, который не помещается в один TCP Modbus ADU

Приведите, пожалуйста, цитату из спецификации Modbus TCP, которая явно указывает на возможность чтения/записи стандартными функциями (0x03, 0x04, 0x10) большего количества регистров, чем предусмотрено основной спецификацией ("MODBUS Application Protocol 1.1.b") - т.е. 125 регистров при чтении и 123 при записи (в сущности, только в этом случае и мог бы быть превышен размер ADU при использовании стандартных функций).

На мой взгляд - стандарт такой возможности не предусматривает.
Такой же точки зрения придерживаются разработчики CODESYS:

53537

fatlortroll
18.02.2021, 08:21
В документе MODBUS Application Protocol Specification V1.1b3 указано "TCP MODBUS ADU = 253 bytes + MBAP (7 bytes) = 260 bytes".

На практике у меня это приводило к тому, что при передаче относительно больших структур флаг xNewRequest поднимался несколько раз за процедуру обмена данными.

capzap
18.02.2021, 08:30
В документе MODBUS Application Protocol Specification V1.1b3 указано "TCP MODBUS ADU = 253 bytes + MBAP (7 bytes) = 260 bytes".
а если вспомнить что регистр это два байта...

Евгений Кислов
18.02.2021, 08:38
В документе MODBUS Application Protocol Specification V1.1b3 указано "TCP MODBUS ADU = 253 bytes + MBAP (7 bytes) = 260 bytes".

На практике у меня это приводило к тому, что при передаче относительно больших структур флаг xNewRequest поднимался несколько раз за процедуру обмена данными.

Поясните, пожалуйста, как ваша цитата связана со "случаем обмена массивом данных, который не помещается в один TCP Modbus ADU".

В блоке все нужные буферы имеют размер 260 байт.

Чтобы дать комментарии по поведению xNewRequest в вашем проекте - мне нужна урезанная версия вашего проекта (достаточно ФБ слэйва и минимального количества нужных переменных) и подробная инструкция, как воспроизвести эту ситуацию.

alexander.kinsfator@gmail.com
19.02.2021, 09:52
Здравствуйте!
Подключил ABZ энкодер (E40S6-1000-3-T-24 Autonics) к контроллеру ПЛК-210 ко входам FDI1-FDI3 настроил в "левой стороне" входы как ABZ энкодер.
В итоге Счётчик импульсов работает как и ожидалось, но счётчик показывает 4000 отсчётов на оборот, а не 1000. Это на самом деле не проблема и скорее всего связано с алгоритмом подсчёта импульсов. Действительно, за один период импульса происходит 4 переключения фронтов.
Но счётчик импульсов не сбрасывается в 0 при возникновении импульса на входе Z. Он продолжает увеличиваться или уменьшаться дальше.
И главное: если энкодер меняет направление вращения в момент прихода импульса Z, то счётчик импульсов Z сбивается. Можно поворачивая вал энкодера вблизи точки Z туда-обратно изменить состояние счётчика Z на несколько единиц.
Я что то сделал не правильно?
Так и должно Быть?
Где в документации описано поведение и настройка счётчиков энкодера?
Или энкодер плохой?

alexander.kinsfator@gmail.com
19.02.2021, 10:28
Посмотрел Ваше видео про энкодеры. Там тот же энкодер, что и у меня. Тоже видно, что энкодер даёт 4000 импульсов на оборот, и что счётчик импульсов не обнуляется от импульсов Z.
Тогда остаётся один вопрос: почему сбивается счётчик импульсов Z?

Мастеренко Иван
19.02.2021, 11:00
Тогда остаётся один вопрос: почему сбивается счётчик импульсов Z?

Здравствуйте!
Уточните, пожалуйста, что означает "сбивается"? Количество оборотов сбрасывается в 0?

alexander.kinsfator@gmail.com
19.02.2021, 11:09
Здравствуйте!
Уточните, пожалуйста, что означает "сбивается"? Количество оборотов сбрасывается в 0?

Нет, он не сбрасывается в ноль.
Я же писал "Можно поворачивая вал энкодера вблизи точки Z туда-обратно изменить состояние счётчика Z на несколько единиц"

То есть не сделав ни одного оборота можно насчитать 5-10 импульсов в счётчике Z. Происходит это при вращении вала около позиции переключения Z.

Мастеренко Иван
19.02.2021, 12:05
Нет, он не сбрасывается в ноль.
Я же писал "Можно поворачивая вал энкодера вблизи точки Z туда-обратно изменить состояние счётчика Z на несколько единиц"

То есть не сделав ни одного оборота можно насчитать 5-10 импульсов в счётчике Z. Происходит это при вращении вала около позиции переключения Z.

Приложите фото схемы подключения энкодера к клеммам контроллера.

alexander.kinsfator@gmail.com
19.02.2021, 12:29
53561 вот файл со схемой.

capzap
19.02.2021, 12:56
53561 вот файл со схемой.

нет расхождения с документацией? 53562

alexander.kinsfator@gmail.com
19.02.2021, 14:06
Сам проверял.
Да и ведь AB счётчик считает нормально, и Z счётчик считает. Но иногда показания Z счётчика явно неправильные.

Мастеренко Иван
19.02.2021, 14:20
У нас не повторяется ситуация с таким же энкодером.
1. В настройках CODESYS в конфигурации LeftSide-01 в параметрах "Период измерения фильтра" и "Количество измерений фильтра" выставлены значения по умолчанию (5 мкс и 1)?
2. Под показаниями счетчика Z имеется в виду параметр "Количество оборотов ABZ энкодера"?
3. Может реальное подключение отличается от присланной схемы?

alexander.kinsfator@gmail.com
19.02.2021, 16:39
У нас не повторяется ситуация с таким же энкодером.
1. В настройках CODESYS в конфигурации LeftSide-01 в параметрах "Период измерения фильтра" и "Количество измерений фильтра" выставлены значения по умолчанию (5 мкс и 1)?
2. Под показаниями счетчика Z имеется в виду параметр "Количество оборотов ABZ энкодера"?
3. Может реальное подключение отличается от присланной схемы?

1. Да по умолчанию 5мкс и 1. Но пробовал увеличивать.
2. Да, количество оборотов ABZ
3. Проверял. Проверю ещё раз. Но как нужно ошибиться, чтобы это так работало?

Ситуация возникает именно при попытке "нащупать точку перехода" счётчика Z. Возможно при активации сигнала Z, меняется направление вращения. Хотя аппаратный декодер состояния энкодера должен корректно отрабатывать и эту ситуацию. Кстати, а почему не стали делать сброс счётчика импульсов от сигнала Z? На сколько я понимаю, на более старых контроллерах у Вас так и было?

capzap
19.02.2021, 18:56
Сам проверял.
Да и ведь AB счётчик считает нормально, и Z счётчик считает. Но иногда показания Z счётчика явно неправильные.

если это мне адресовалось, импульсы и будут идти, просто тотемный полюс подразумевает оба вида подключения к SS, но схема ключей все равно остается n-p-n , может всёже дело в том что на общий надо подавать плюс

asutp2003
20.02.2021, 10:06
Всем доброго времени суток.
Есть ли у кого-нибудь пример работы с библиотекой MQTT client CodeSys V3.5 на примере ПЛК МХ210?
Начиная с прикрепления библиотеки к проекту.
Заранее благодарен.

krollcbas
20.02.2021, 10:20
asutp2003, что именно не выходит?
Что уже делали?
53569

DenisV
25.02.2021, 10:19
Добрый день, а как в итоге удалось решить возникшую проблему? Оказался в очень похожей ситуации, только в компоненте CmpIecTask и подобное исключение возникает не при каждой загрузке проекта и пока не удается выявить зависимость, отмечу, что сброс устройства к заводским решает проблему на некоторое время.


Если в этом состоянии сделать загрузочное приложение и перезагрузить контроллер - что произойдет?


Обеспечьте подключение по TeamViewer - я посмотрю, в чем может быть дело.

Евгений Кислов
25.02.2021, 10:26
Добрый день, а как в итоге удалось решить возникшую проблему? Оказался в очень похожей ситуации, только в компоненте CmpIecTask и подобное исключение возникает не при каждой загрузке проекта и пока не удается выявить зависимость, отмечу, что сброс устройства к заводским решает проблему на некоторое время.

Добрый день.
Я уже не помню, честно говоря.
Если вы можете обеспечить доступ по TeamViewer - то давайте посмотрим, что происходит у вас.

n200nn22
01.03.2021, 09:44
Доброго всем дня! Хочу сделать управление своего ИТП (2 контура отопления, 2 насоса на отопление, контур ГВС, 2 насоса ГВС, 2 насоса на подпитку) на СПК 110(М01) и модулях ввода-вывода 210.
Может кто уже сталкивался с этим или есть готовые решения буду очень признателен.
Так же сильно поможет код на отдельные процессы (регулирование задвижек, управление насосами и т.д.).
Заранее спасибо!

RV9WFJ
01.03.2021, 09:56
Лучше ПЛК210 используйте, а то у СПК бывает визуализация ложится и это довольно неприятно. А так я делал ИТП на СПК.

krollcbas
01.03.2021, 09:56
Принципы управления ИТП у всех похожие, но пока не встречались решения, которые годятся вслепую.
Всегда труд, причем всегда есть подводные камни.
Не важно кто будет программировать и заниматься наладкой, рекомендую начать с составления таблиц ввода вывода,
конструкторской документации на шкаф управления, составления технического задания (описать все элементы управления)
Сейчас реализую все на СПК107 2016 года выпуска))

n200nn22
01.03.2021, 10:39
Шкаф управления есть, действующий. 6 лет назад собрал с использованием ТРМ132. Сейчас хочу добавить датчиков температуры и давления. СПК использую по причине наличия.

DenisV
10.03.2021, 15:13
Доброго времени суток, коллеги!
А на текущий момент не существует способов защиты устройства от перезаписи приложения без ввода пароля в визуализации? 53901 ссылка, на видос https://www.youtube.com/watch?v=ehTkxII0CqA

Евгений Кислов
12.03.2021, 08:44
Доброго времени суток, коллеги!
А на текущий момент не существует способов защиты устройства от перезаписи приложения без ввода пароля в визуализации? 53901 ссылка, на видос https://www.youtube.com/watch?v=ehTkxII0CqA

Добрый день.
Нормального способа нет, но вроде в свежих версиях сделали обходной путь.
Если есть возможность предоставить доступ по TeamViewer - то могу попробовать помочь.

Максим Ульянов
15.03.2021, 10:36
Коллеги,Доброго Дня ,подскажите ,а возможно ли ,написать передачу значений из списка текстов( предварительно подгрузив туда CSV) в структуру?

Евгений Кислов
15.03.2021, 10:47
Коллеги,Доброго Дня ,подскажите ,а возможно ли ,написать передачу значений из списка текстов( предварительно подгрузив туда CSV) в структуру?

Добрый день.
Да, можно считать содержимое списка текстов в переменные программы.
Посмотрите в этой статье (https://ftp.owen.ru/CoDeSys3/98_Books/CodesysTextLists.pdf) описания библиотек для работы со списками текстов.

Максим Ульянов
15.03.2021, 11:25
так какая то ясность появляется...добавил объект :список текстов,при попытке импорта CSV файла появляется сообщение : Индекс находится вне границы массива....где бы про это почитать подробнее

Евгений Кислов
15.03.2021, 11:28
так какая то ясность появляется...добавил объект :список текстов,при попытке импорта CSV файла появляется сообщение : Индекс находится вне границы массива....где бы про это почитать подробнее

Там .csv файл должен быть определенной структуры - вы же это понимаете?
Выложите его, пожалуйста - попробую воспроизвести у себя.

Максим Ульянов
15.03.2021, 11:35
Там .csv файл должен быть определенной структуры - вы же это понимаете?

нет не понимаю...где бы про это почитать.....чет не получается у меня сюда CSV загрузить

Евгений Кислов
15.03.2021, 11:37
нет не понимаю...где бы про это почитать.....чет не получается у меня сюда CSV загрузить

Вы сначала наберите в списке текстов несколько записей и экспорируйте их в .csv - станет понятно, как должен выглядеть файл.
Почитать о команде экспорта/импорта можно здесь:
https://help.codesys.com/webapp/_cds_cmd_import_export_text_lists;product=codesys; version=3.5.16.0

Максим Ульянов
15.03.2021, 12:25
https://help.codesys.com/webapp/_cds_cmd_import_export_text_lists;product=codesys; version=3.5.16.0[/url]
не чего интересного там нет...

Максим Ульянов
15.03.2021, 13:16
тоесть какой то нормальной инструкции по внедрению .csv файла нет?

Евгений Кислов
15.03.2021, 13:32
тоесть какой то нормальной инструкции по внедрению .csv файла нет?

Может, видео окажется полезным:
https://dropmefiles.com/chK8P

Максим Ульянов
15.03.2021, 13:53
спасибо..понял...

aRRma99
15.03.2021, 20:01
Добрый вечер. Кто сталкивался с такой проблемой при симуляции (не могу запустить ее)? Как-то раз помогло обновление устройства. Но в этот раз даже и это не сработало... Антивирус пробовал отключать... На ошибки не обращайте внимание, скрин делал без перекомпиляции проекта.

54000

shvitaliy
16.03.2021, 06:19
Добрый день. Сколько приборов можно добавить в codesys для визуализации параметров?

Евгений Кислов
16.03.2021, 06:22
Добрый день. Сколько приборов можно добавить в codesys для визуализации параметров?

Добрый день.
Что вы называете "прибором"? Опрашиваемое устройство? (например, модуль ввода-вывода)

Linker1989
22.03.2021, 15:50
Добрый день, возможно ли в таблицу тревог вывести, значение переменной при которой произошло событие?

Допустим давление > 5 бар авария, соответственно в таблице текст : Высокое давление и значение 5.3 бара.

RV9WFJ
22.03.2021, 15:56
Добрый день, возможно ли в таблицу тревог вывести, значение переменной при которой произошло событие?

Допустим давление > 5 бар авария, соответственно в таблице текст : Высокое давление и значение 5.3 бара.Давление пишите в триггерную переменную 1, а в тексте сообщения <LATCH1 %.1f>

Linker1989
24.03.2021, 14:40
Спасибо! тут разобрался но возник вопрос. как сделать чтобы в журнал попадали данные за определенный момент времени. Т.е. есть переменная старт = 1 которая указывает на то чтобы с этого момента в журнал попадали данные, до того пока переменная не старт не будет равно 0.
нашел в инструкции это:
И можно ли как то отчистить журнал тревог?

Евгений Кислов
25.03.2021, 07:05
Используйте параметр Деактивация. В этом столбце для каждой тревоги нужно привязать переменную типа BOOL (можно одну на всех) - пока она TRUE, то эти тревоги не будут попадать в журнал.

54192

Штатного механизма очистки журнала тревог пока нет - его добавят в V3.5 SP17.

Linker1989
25.03.2021, 08:34
Еще вот это вчера картинка не загрузилась, как этим пользоваться?

Евгений Кислов
25.03.2021, 08:41
Еще вот это вчера картинка не загрузилась, как этим пользоваться?

Посмотрите здесь:
https://youtu.be/pycujpNRjaM?list=PLUw7cl8x4xnJGgLjxyI-jz4hGmuYtSNp9&t=1265

Но это поддерживается только начиная с V3.5 SP16 Patch 3, вам потребуется обновить прошивку и проект.

Gribanin
30.03.2021, 09:09
Здравствуйте, подскажите пожалуйста где искать? Пропал объект из вкладки права доступа, у меня на СПК пиштуся архивы в формате csv и складываются в папку. И настроена загрузка этих архивов из визуализации на ПК. СПК всегда подключен к интернету для удаленного доступа поэтому настроено управление пользователями, так вот я всегда раньше давал разрешения для папки в которой хранятся архивы(без этого архивы не скачиваются из визуализации) а сейчас объект этой папки куда то пропал.Скрины приложил.5426354264

Евгений Кислов
30.03.2021, 09:15
Здравствуйте, подскажите пожалуйста где искать? Пропал объект из вкладки права доступа, у меня на СПК пиштуся архивы в формате csv и складываются в папку. И настроена загрузка этих архивов из визуализации на ПК. СПК всегда подключен к интернету для удаленного доступа поэтому настроено управление пользователями, так вот я всегда раньше давал разрешения для папки в которой хранятся архивы(без этого архивы не скачиваются из визуализации) а сейчас объект этой папки куда то пропал.Скрины приложил.5426354264

Добрый день.
На скриншотах права доступа к ПЛК из CODESYS, так что непонятно причем здесь "я всегда раньше давал разрешения для папки в которой хранятся архивы".
У вас сейчас есть какая-то конкретная проблема с выгрузкой архивов?

Gribanin
30.03.2021, 09:23
Вот на другом СПК с этим же проектом все правильно, да сейчас я не могу загрузить файлы с визуализации54265

Евгений Кислов
30.03.2021, 09:29
Вот на другом СПК с этим же проектом все правильно, да сейчас я не могу загрузить файлы с визуализации54265

Можете показать это по TeamViewer?

Gribanin
30.03.2021, 09:45
AnyDesk 558 774 212

Евгений Кислов
30.03.2021, 09:56
AnyDesk 558 774 212

К вам не получается подключиться.

54267

Gribanin
30.03.2021, 10:51
Прошу прощения, у меня пропало электричество, отпишусь когда появится.

rencom
30.03.2021, 15:13
Добрый день .
Вопрос наверно примитивный , но с codesys никогда не работал , а тут надо в PLC на китайском частотнике внести одну поправку .

Суть вопроса .
В плк есть аналоговые входа и выхода . По 3 штуки .
Надо при снижении сигнала до 10% выдавать команду на отключение , при превышении на включение .
В codesys библиотека загружена .
Функциональный блок с аналоговыми входами и выходами - есть .
Как дальше сделать желаемое ?

Во вложении проект и скрин

Спасибо .

Евгений Кислов
30.03.2021, 17:24
Добрый день .
Вопрос наверно примитивный , но с codesys никогда не работал , а тут надо в PLC на китайском частотнике внести одну поправку .

Суть вопроса .
В плк есть аналоговые входа и выхода . По 3 штуки .
Надо при снижении сигнала до 10% выдавать команду на отключение , при превышении на включение .
В codesys библиотека загружена .
Функциональный блок с аналоговыми входами и выходами - есть .
Как дальше сделать желаемое ?

Во вложении проект и скрин

Спасибо .

Добрый день.

Вам нужно прочитать:

1. как объявлять и использовать экземпляры функциональных блоков
https://help.codesys.com/webapp/_cds_obj_function_block;product=codesys;version=3. 5.16.0

2. про операторы сравнения GT и LT
https://help.codesys.com/webapp/_cds_operator_gt;product=codesys;version=3.5.16.0
https://help.codesys.com/webapp/_cds_operator_lt;product=codesys;version=3.5.16.0

rencom
30.03.2021, 18:19
Добрый день.


Спасибо за ответ .
Мне возможно совсем базовые вещи надо подсказать .
Я пытаюсь по аналогии с omron studio . Но там как то про другому .



Вот скрин моей попытки ..
Присвоил входам - выходам имена .Но С_AI1 остаётся без имени . Как ? Или не надо

Оператор сравнения я нашёл , мышью его перетаскиваю , получатся ерунда . Как надо то ?

К выходу блока сравнения подцепил "обмотку реле " , присвоил имя . Контакт с таким же именем во второй строке поместил ( Там это аппаратные вход старт , стоп )

Покажите как блок сравнения правильно подключить .

Евгений Кислов
30.03.2021, 18:35
Вы создали GD350 как "элемент" - а надо как "элемент с EN/ENO" - см. на панели инструментов редактора.
После этого на EN GD350 заводите шину питания (просто напишите TRUE на автоматически созданном контакте), ENO соединяете с EN оператора GT. К нижнему свободному входу оператора GT цепляете нужный выход GD350 (C_AI№).

rencom
30.03.2021, 19:01
Вы создали GD350 как "элемент" - а надо как "элемент с EN/ENO" - см. на панели инструментов редактора.

Стало понятнее .
Теперь при компиляции на типы ругается .
Где править ?

Евгений Кислов
30.03.2021, 19:03
Выложите библиотеку с этим ФБ (GD350) или описание на нее.

rencom
30.03.2021, 19:11
Выложите библиотеку с этим ФБ (GD350) или описание на нее.

Сам накосячил при создании переменных .
Сейчас компилируется без ошибок .

Правильно я понимаю .
При сигнале C_AI1 большем 10 , сработает контакт COMP1 в 3 строке ?

Евгений Кислов
30.03.2021, 19:37
Да, вы понимаете верно.

rencom
30.03.2021, 20:08
Да, вы понимаете верно.

Спасибо большое . Хоть концепцию уловил .

rencom
02.04.2021, 08:21
Написал программу .
Online > Login
Предлагает загрузить код
Отладка > Старт .

Всё работает , но только до перезагрузки частотника .
Потом надо снова загружать .

Как загрузить на постоянку ?

Евгений Кислов
02.04.2021, 08:22
Написал программу .
Online > Login
Предлагает загрузить код
Отладка > Старт .

Всё работает , но только до перезагрузки частотника .
Потом надо снова загружать .

Как загрузить на постоянку ?

Онлайн - Создать загрузочное приложение

rencom
02.04.2021, 08:50
Онлайн - Создать загрузочное приложение


Сервис Create Boot Aplication не реализован на устройстве.

Евгений Кислов
02.04.2021, 08:52
Сервис Create Boot Aplication не реализован на устройстве.

Тогда вам нужно обратиться к производителю вашего устройства и задать этот вопрос ему.

rencom
02.04.2021, 09:01
Это если в online . В offline предлагает сохранить app файл .
Другие способы загрузки существуют ?

Евгений Кислов
02.04.2021, 09:04
Это если в online . В offline предлагает сохранить app файл .
Другие способы загрузки существуют ?

Способы зависят от конкретного устройства, уточните у производителя вашего ПЧ или поищите документацию на прибор.

Sh.M.
02.04.2021, 20:56
Добрый день.
предстоит реализовать не очень сложный проект и нужен совет по выбору: ПЛК110-60 с панелью СП310 или СПК110 с модулями дискретн.ввода-вывода.
у ПЛК свои входы-выходы, что должно быть наверно надежней чем СПК где обмен будет по модбас, но у СПК есть веб интерфейс, что позволит удаленно наблюдать за процессом. и сколько времени нужно контроллерам после подачи питания чтобы он начал работать?

Евгений Кислов
02.04.2021, 21:09
и сколько времени нужно контроллерам после подачи питания чтобы он начал работать?

ПЛК и панели - несколько секунд, СПК - полторы минуты.

Sh.M.
02.04.2021, 21:23
ПЛК и панели - несколько секунд, СПК - полторы минуты.

спасибо, скорей всего выберем ПЛК

TATARin
03.04.2021, 11:45
Здравствуйте. Есть проблема. Вместо ПЛК 110(М1), закупили ПЛК210 - 21шт и хотим адаптировать проекты из CoDeSys 2.3 в Codesys 3.5, но как возникает ошибка - "Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#BreakpointLogging'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'BreakpointLogging'.)". Нажимаю F1, но справки по этой проблеме нет. Как быть подскажите!54364

Евгений Кислов
03.04.2021, 12:12
Добрый день.
Нажмите на кнопку "Загрузка отсутствующих библиотек".

И рекомендую посмотреть видео об адаптации проектов:
https://youtu.be/f2TxkhV0ISU

TATARin
03.04.2021, 12:59
Видео смотрел уже раз 10, и читал док по конвертации. У меня при конвертации в CoDeSys 3.5 не появляются окна - "конверсия ссылки библиотеки" и "конверсия устройства", а всё происходит автоматом. На кнопку "Загрузка отсутствующих библиотек" нажимал там пусто.54367

Евгений Кислов
03.04.2021, 13:04
Установите архив репозитория (ссылка в подписи).

TATARin
05.04.2021, 08:10
Переустановил CoDeSys, установил CODESYS Repository Archive V3.5 SP4 и эта проблема ушла.

TATARin
05.04.2021, 15:41
Здравствуйте, при переносе проекта из CoDeSys 2.3 в CoDeSys 3.5 возникает проблема с библиотекой OSCAT building, а вот с OSCAT Basic проблем нет скрин прилагаю. Где взять библиотеку OSCAT building для CoDeSys 3.5?54398

glazastik
05.04.2021, 16:22
https://store.codesys.com/oscat-building.html?___store=en&___from_store=default

это не она? или вот https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/02_Libraries/OSCATBuilding.package

Dmitrij_
07.04.2021, 15:02
Добрый день!
С чем связано изменение ФБ STD_PID библиотеки CmpOwenPidRegs_v3.5.14.33? Убрали ограничение интегральной составляющей и т.д., по моему стал менее удобен.

Евгений Кислов
08.04.2021, 14:05
Добрый день!
С чем связано изменение ФБ STD_PID библиотеки CmpOwenPidRegs_v3.5.14.33? Убрали ограничение интегральной составляющей и т.д., по моему стал менее удобен.

Добрый день.
В них нет смысла, PMAX и PMIN являются более строгими ограничениями.

Дмитрий V
09.04.2021, 09:38
Добрый день. Подскажите, пожалуйста, возможно ли одновременно использовать обмен по протоколу Modbus TCP/IP с помощью библиотеки MB_TcpSlave и с помощью встроенных средств(ПЛК 210 - видео пример для modbus tcp slave). Связано это с тем, что необходимо некоторое количество параметров необходимо менять и в коде, и получать-отправлять эти же данные по модбасу

Евгений Кислов
09.04.2021, 09:39
Добрый день. Подскажите, пожалуйста, возможно ли одновременно использовать обмен по протоколу Modbus TCP/IP с помощью библиотеки MB_TcpSlave и с помощью встроенных средств(ПЛК 210 - видео пример для modbus tcp slave). Связано это с тем, что необходимо некоторое количество параметров необходимо менять и в коде, и получать-отправлять эти же данные по модбасу

Добрый день.
При использовании MB_TcpSlave встроенные средства вообще не нужны.

Дмитрий V
09.04.2021, 10:08
Добрый день.
При использовании MB_TcpSlave встроенные средства вообще не нужны.

Немного удобнее встроенными всё-таки. Привязал переменную к регистру и всё. А MB_TcpSlave всё-таки нужно программно разбирать-собирать массив
А по времени обработки есть какие-то различия у этих двух способов?

Евгений Кислов
09.04.2021, 10:23
Немного удобнее встроенными всё-таки. Привязал переменную к регистру и всё. А MB_TcpSlave всё-таки нужно программно разбирать-собирать массив
А по времени обработки есть какие-то различия у этих двух способов?

Принципиальных отличий быть не должно.

TATARin
09.04.2021, 14:36
Здравствуйте эксперты. Нужны библиотеки на Modbus 3.5.11. Скиньте пожалуйста ссылки для скачивания. Я думаю из-за этого у меня компилятор ругается, скрин прилагаю.54448. Или почему? Ваше мнение!

TATARin
09.04.2021, 16:17
Товарищи, может я как-то библиотеки устанавливаю не так? Установил все, что были на сайте овен для CoDesys3.5, даже архивные. Но где взять 3.5.11? Без этих библиотек компилятор не даёт загрузить. 54449

Евгений Кислов
09.04.2021, 19:32
Нажмите кнопку Загрузка.

TATARin
10.04.2021, 10:26
Я конечно нажимал - загрузки нет, и даже на сайте CoDeSys прошёл регистрацию, но там по бесплатным продуктам такого нет, может не там ищу(скиньте ссылку). Я видеоролики обучения просмотрел до "ДЫР", но никто о такой проблеме не говорит. Где они берут библиотеки: IoDrvModbusBase, 3.5.11.0; IoDrvModbusTCP, 3.5.11.30; Util, 3.5.11.0? Скиньте добрые люди, а то "парюсь" с OWEN 210-й серией и такие мелочи всё положительное впечатление портят.

Евгений Кислов
10.04.2021, 10:43
Я конечно нажимал - загрузки нет, и даже на сайте CoDeSys прошёл регистрацию, но там по бесплатным продуктам такого нет, может не там ищу(скиньте ссылку). Я видеоролики обучения просмотрел до "ДЫР", но никто о такой проблеме не говорит. Где они берут библиотеки: IoDrvModbusBase, 3.5.11.0; IoDrvModbusTCP, 3.5.11.30; Util, 3.5.11.0? Скиньте добрые люди, а то "парюсь" с OWEN 210-й серией и такие мелочи всё положительное впечатление портят.

Установите этот пакет:
https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/Mx210Templates_v3.5.11.7.package

Вместе с ним установятся нужные библиотеки.

TATARin
10.04.2021, 12:51
Спасибо, я уже сделал. Только открыв пример проекта с сайта овен. В примерах оказались нужные мне библиотеки.

TATARin
10.04.2021, 16:39
Господа и Товарищи. Снова проблемка теперь гружу проект в ПЛК(без ошибок от компилятора) и при нажатии на кнопку старт ПЛК не хочет исполнять проект моргает красным - "программа загружена - исключение". Скрин прилагаю. 54457. Как это исправить и не в размере ли кода проблема?

saii
10.04.2021, 21:38
У Вас же курсор стоит на строке, где произошло исключение. Посчитайте вручную получающееся выражение.

TATARin
13.04.2021, 12:53
Всё, с это мелкой проблемой разобрался. Дело всё в том, что этот проект работал на CoDeSys2.3(ПЛК110), а после конвертации в CoDesys 3.5(ПЛК210-03) появились ошибки. Но появилась снова проблема теперь по подключению СП270 к ПЛК210.

TATARin
13.04.2021, 13:16
Уважаемые знатоки есть проблема. Просмотрел видеоурок - ПЛК210 Видео 8. Настройка обмена в режиме Modbus RTU Master и на 13-й минуте спикер говорит - "максимальное число каналов для каждого слейва составляет 100", а мне на панель СП270 необходимо вывести 190 переменных REAL. Как это сделать вот ломаю голову. Помогите советом или ссылками.

Евгений Кислов
13.04.2021, 13:35
Уважаемые знатоки есть проблема. Просмотрел видеоурок - ПЛК210 Видео 8. Настройка обмена в режиме Modbus RTU Master и на 13-й минуте спикер говорит - "максимальное число каналов для каждого слейва составляет 100", а мне на панель СП270 необходимо вывести 190 переменных REAL. Как это сделать вот ломаю голову. Помогите советом или ссылками.

Вы можете использовать групповые запросы - т.е. в рамках одного канала можно записать, например, 60 REAL переменных (в виде 120 WORD).
Для этого с СП270 потребуется разместить эти данные в памяти панели последовательно (например, переменная 1: PSW300-301, переменная 2: PSW302-303 и так далее).

TATARin
13.04.2021, 15:27
Спасибо попробую. А ещё вопрос - каким кабелем подключить панель СП270(порт PLC) к ПЛК210(RS232) пробую КС14 чёт не получается. На старых, то RJ11, а тут RJ45?

glazastik
13.04.2021, 15:32
Спасибо попробую. А ещё вопрос - каким кабелем подключить панель СП270(порт PLC) к ПЛК210(RS232) пробую КС14 чёт не получается. На старых, то RJ11, а тут RJ45?
кабелем
КС16

TATARin
13.04.2021, 15:37
КС16 тоже не идёт (панель MASTER).

glazastik
13.04.2021, 15:49
Ну тут можно только гадать. Возможно конфигурация интерфейсов не совпадает, может адрес ПЛК не тот указан, может адреса переменных не те, да много чего можно предположить...

TATARin
13.04.2021, 16:53
После перезагрузки ПЛК210 с подключённым RS232(СП270) ПЛК постоянно перегружается пока не отключишь RS232. Как только вытаскиваешь RS232 со стороны ПЛК, контроллер начинает работать нормально.

Евгений Кислов
13.04.2021, 17:28
После перезагрузки ПЛК210 с подключённым RS232(СП270) ПЛК постоянно перегружается пока не отключишь RS232. Как только вытаскиваешь RS232 со стороны ПЛК, контроллер начинает работать нормально.

Проверьте в web-конфигураторе вкладку Система/Управление, что у вас на RS-232 отключена системная консоль.

TATARin
14.04.2021, 08:29
Где находится Web-конфигуратор в CoDeSys3.5? Справка не находит! Скрин прилагаю.54519

Евгений Кислов
14.04.2021, 08:35
Где находится Web-конфигуратор в CoDeSys3.5? Справка не находит! Скрин прилагаю.54519

https://youtu.be/ZIRRdIQ0s-U

TATARin
14.04.2021, 09:31
У меня системная консоль включена. Скрин прилагаю54521. А должна быть?

Евгений Кислов
14.04.2021, 09:33
У меня системная консоль включена. Скрин прилагаю54521. А должна быть?

Чтобы опрашивать другое устройство по RS-232 - ее надо отключить и перезагрузить контроллер (Система/Перезагрузка).

TATARin
14.04.2021, 10:26
Ура, счастье, всё получилась с СП270 связь есть.

asutp2003
14.04.2021, 11:04
Всем доброго времени суток.
Никто не подскажет, существует ли для CS3.5 готовый ФБ расписания? Если есть, то в какой библиотеке и если можно ссылку?
Заранее благодарен.

Евгений Кислов
14.04.2021, 11:14
Всем доброго времени суток.
Никто не подскажет, существует ли для CS3.5 готовый ФБ расписания? Если есть, то в какой библиотеке и если можно ссылку?
Заранее благодарен.

Добрый день.
В библиотеке Util есть ФБ TimerSwitch:
https://help.codesys.com/webapp/_l9I4DPEx9iQPGfgOATS30QJu3I%2FTimerSwitch;product= Util;version=3.5.14.0

Вячеслав@
14.04.2021, 12:06
Добрый день. Есть ли возможность научить ПЛК200 работать с XML запросами? Есть оборудование, в котором работает вэб сервис, хранящий статистику. К нему можно обратиться по Ethernet с помощью XML запросов и получить от оборудования ответ.
Собственно вопрос - реально ли сделать такое без компьютера, силами ПЛК?

TATARin
14.04.2021, 12:55
Господа - знатоки, "парюсь с адресацией". В старом проекте CoDeSys2.3 адрес %QX6.1.0.0 соответствовал в панели регистру 0х0(скрин прилагаю54528), а какой этому же регистру будет соответствовать адрес в CoDeSys3.5?(Скрин прилагаю54529). Помогите хоть с одним, дальше я сам.

Евгений Кислов
14.04.2021, 12:59
Добрый день. Есть ли возможность научить ПЛК200 работать с XML запросами? Есть оборудование, в котором работает вэб сервис, хранящий статистику. К нему можно обратиться по Ethernet с помощью XML запросов и получить от оборудования ответ.
Собственно вопрос - реально ли сделать такое без компьютера, силами ПЛК?

Добрый день.
В принципе, можно, но собирать и парсить запросы может быть затруднительно (если там не условный 2-3 запроса с четко известным числом элементов).
Можете посмотреть эту библиотеку:
https://forge.codesys.com/lib/xml-pac/home/Home/

Евгений Кислов
14.04.2021, 13:01
Господа - знатоки, "парюсь с адресацией". В старом проекте CoDeSys2.3 адрес %QX6.1.0.0 соответствовал в панели регистру 0х0(скрин прилагаю54528), а какой этому же регистру будет соответствовать адрес в CoDeSys3.5?(Скрин прилагаю54529). Помогите хоть с одним, дальше я сам.

Выходы[0] - Input регистр 0 (да, как ни странно, словом "выход" обозначает входной регистр)
Выходы[1] - Input регистр 1
и т.д.

На AT-адреса смотреть вообще не надо в CODESYS V3.5.

TATARin
14.04.2021, 13:19
Спасибо. Я методом "НАУЧНОГО ТЫКА" определил в моём проекте в CoDeSys3.5 соответствует %IX152.0

asutp2003
14.04.2021, 15:44
Прошу прощения. А есть ли пример работы с данным ФБ в ST? aslSchedule меня в замешательство вводит.)

RV9WFJ
14.04.2021, 15:58
Может asSchedule?

asutp2003
14.04.2021, 16:07
Не, aslSchedule!!! Скопировано из справки

Евгений Кислов
14.04.2021, 16:17
Прошу прощения. А есть ли пример работы с данным ФБ в ST? aslSchedule меня в замешательство вводит.)

Вот тут должен быть пример:
https://forge.codesys.com/forge/talk/Runtime/thread/5553b4e24f/

asutp2003
14.04.2021, 16:25
Не, aslSchedule!!! Скопировано из справки

Вячеслав@
14.04.2021, 16:46
Первый раз работаю с Codesys 3.5, не могу связаться с ПЛК-200-01-CS по Ethernet. По USB работает, хотя отваливается иногда. Таргет установлен, IP ПЛК стандартный, 192.168.0.10, порт Ethernet 1, на компьютере статический 192.168.0.1.
При этом вэб конфигуратор LuCI ПЛК видит стабильно. А Codesys при сканировании ничего не находит. Антивирус отключил. Что не так делаю?

TATARin
14.04.2021, 16:55
Уважаемы, тут пытаюсь скопировать комментарии с CoDeSys2.3 и перенести их в CoDeSys 3.5, банально - Ctrl+C и Ctrl+V. При переносе таким способом CoDeSys3.5 принимает какую-то "АБРАКАДАБРУ". Скрин прилагаю.54540

saii
14.04.2021, 17:36
Копируй при включенной русской раскладке

Мастеренко Иван
15.04.2021, 08:11
Первый раз работаю с Codesys 3.5, не могу связаться с ПЛК-200-01-CS по Ethernet. По USB работает, хотя отваливается иногда. Таргет установлен, IP ПЛК стандартный, 192.168.0.10, порт Ethernet 1, на компьютере статический 192.168.0.1.
При этом вэб конфигуратор LuCI ПЛК видит стабильно. А Codesys при сканировании ничего не находит. Антивирус отключил. Что не так делаю?

Посмотрите тут: https://owen.ru/forum/showthread.php?t=28167&page=7&p=330018&viewfull=1#post330018

Вячеслав@
15.04.2021, 09:53
Посмотрите тут: https://owen.ru/forum/showthread.php?t=28167&page=7&p=330018&viewfull=1#post330018

Спасибо! Помогла ручная установка Ip.

asutp2003
15.04.2021, 10:55
Подскажите, в какое место КС3.5 необходимо поместить файл библиотеки OwenCommunication_v3.5.11.3.compiled-library? Уже замучался искать. Репозиторий не видит её нигде при вводе в поисковой строке.

Мастеренко Иван
15.04.2021, 11:42
Подскажите, в какое место КС3.5 необходимо поместить файл библиотеки OwenCommunication_v3.5.11.3.compiled-library? Уже замучался искать. Репозиторий не видит её нигде при вводе в поисковой строке.

Для добавления библиотеки в кодесис нажмите Инструменты >> Репозиторий библиотек >> Установить и выберите библиотеку.

asutp2003
15.04.2021, 11:51
Благодарю.

Aleksey1408
16.04.2021, 14:24
Добрый день. Как можно реализовать функцию выключения контроллера, как мы компьютер выключаем? Хочу реализовать для обхода ошибки трендов при не корректном выключении ПЛК

Евгений Кислов
16.04.2021, 14:36
Добрый день. Как можно реализовать функцию выключения контроллера, как мы компьютер выключаем? Хочу реализовать для обхода ошибки трендов при не корректном выключении ПЛК

Такой функции нет.

DenisV
16.04.2021, 15:30
Добрый день!
В ходе разработки и эксплуатации накопился ряд вопросов:
1. Возникла проблема удаленной загрузки приложения в ПЛК210 через wan порт. Загрузка происходит с моего ПК, шлюзом является локальный ПК на объекте с установленным Codesys Gateway к нему подключение есть (зеленый индикатор), но при попытке подключения к ПЛК codesys выдет ошибку "не одно из устройств не отвечает запрос поиска" (активный путь указан ручным прописыванием IP адреса, согласно рекомендации). Тем временем подключение к web-конфигуратору есть и в межсетевом экране правила Allow-CODESYS-GATEWAY-TCP и Allow-CODESYS-GATEWAY-UDP разрешены.
2. Как в Codesys скрыть файлы и дерево проекта, оставив в нем только возможность загрузки проекта в ПЛК?
3. Есть ли какая-либо документация посвященная библиотеке NetVarUdp? Хотелось выцепить оттуда переменную наличия/отсутствия связи между двумя ПЛК в одном проекте.

Евгений Кислов
16.04.2021, 15:47
Добрый день.

1. А из CODESYS на локальном ПК удается загрузить проект?
2. Можно запаролить объекты в дереве проекта. См. здесь: https://youtu.be/yhfUygKHYU4
3. Можно детектировать отсутствие связи по счетчику ответов с помощью глобальных диагностических переменных:

54641

DenisV
16.04.2021, 16:11
1. Не пробовал, но так как это ПК предприятия не хотелось бы на него ставить среду разработки
2-3. Спасибо!

Евгений Кислов
17.04.2021, 08:31
1. Возможно, на этом ПК заблокированы нужные порты?
Проверка загрузки именно из CODESYS IDE сразу бы дала новую информацию по этому вопросу.

Дмитрий V
19.04.2021, 11:29
Добрый день. Для ПЛК 210(slave) и библиотеки MB_TcpSlave какое максимальное количество регистров контроллер может отдать мастеру за один групповой запрос?

Евгений Кислов
19.04.2021, 11:33
Добрый день. Для ПЛК 210(slave) и библиотеки MB_TcpSlave какое максимальное количество регистров контроллер может отдать мастеру за один групповой запрос?

Добрый как.
Как указано в спецификации - 125 для чтения и 123 для записи.

DenisV
19.04.2021, 12:27
Добрый день.

1. А из CODESYS на локальном ПК удается загрузить проект?
2. Можно запаролить объекты в дереве проекта. См. здесь: https://youtu.be/yhfUygKHYU4
3. Можно детектировать отсутствие связи по счетчику ответов с помощью глобальных диагностических переменных:

54641


1. Возможно, на этом ПК заблокированы нужные порты?
Проверка загрузки именно из CODESYS IDE сразу бы дала новую информацию по этому вопросу.

какие порты необходимо проверить? CODESYS IDE также не находит, брэндмауэр и антивирус на ПК отключены

Евгений Кислов
19.04.2021, 12:28
какие порты необходимо проверить? CODESYS IDE также не находит, брэндмауэр и антивирус на ПК отключены

https://owen.ru/forum/showthread.php?t=28167&p=269331&viewfull=1#post269331

Владимир Мал
22.04.2021, 17:04
Доброго времени суток!
Начинаю разбираться с CodeSys 3.5
Подскажите почему не отрабатывает ситуация когда я использую функции, точнее когда я тестировал их в простых арифметических действиях, то все отрабатывает, но если использовать функцию на FB такого рода как на скрине и подавать туда переменную при нажатию на кнопку то нет реакции.
В итоге в программе для каждого из входов тыкаю свой таймер с привязкой к переменной, разве нельзя описать функцию и подавать туда на вход переменную.
Немного не ясна работа функций тогда. Задача в данном конкретном случае подать глобальную переменную на вход функции и инвертировать ее через определенный промежуток времени.
Если несколько цепочек данного кода поместить просто в программу и привязать напрямую переменные все работает.
PS да можно сделать через ТР или TOF но это не принципиально в данном случае.
54769

Евгений Кислов
22.04.2021, 17:38
Доброго времени суток!
Начинаю разбираться с CodeSys 3.5
Подскажите почему не отрабатывает ситуация когда я использую функции, точнее когда я тестировал их в простых арифметических действиях, то все отрабатывает, но если использовать функцию на FB такого рода как на скрине и подавать туда переменную при нажатию на кнопку то нет реакции.
В итоге в программе для каждого из входов тыкаю свой таймер с привязкой к переменной, разве нельзя описать функцию и подавать туда на вход переменную.
Немного не ясна работа функций тогда. Задача в данном конкретном случае подать глобальную переменную на вход функции и инвертировать ее через определенный промежуток времени.
Если несколько цепочек данного кода поместить просто в программу и привязать напрямую переменные все работает.
PS да можно сделать через ТР или TOF но это не принципиально в данном случае.
54769

Добрый день.
Вызывать ФБ в функциях не имеет смысла, так как у функций нет памяти - они не сохраняют в памяти состояние своих объектов между вызовами.
Вам нужно создать ФБ вместо функции.

murzik
26.04.2021, 12:29
Здравствуйте, дорогие гуру или не совсем!
Возник вопрос по алгоритму. Задачка такая: надо по нажатии кнопок на визуализации прибавлять или убавлять некоторые фиксированные константы к работающей внутри ФБ переменной.
Я придумал алгоритм, тупой до омерзения. Внутри ФБ входная переменная всё время прибавляется к той переменной, которую нужно корректировать из визуализации. Следующим оператором в эту входную переменную сам ФБ пишет ноль. Ну и соответственно, кнопки из визуализации пишут свои константы в эту же входную переменную ФБ.
Вроде бы всё работает, но нет ли тут какого криминала, в том, что во входную переменную ФБ пишет не только визуализация, но и сам ФБ?

RV9WFJ
26.04.2021, 12:40
А зачем изнутри ФБ управлять его входами? Не проще прямо в действии кнопки прописать что-то типа iVar1:=iVar1+c_iConst;
Где iVar1 это вход вашего ФБ, а c_iConst константа которую прибавляете при нажатии

murzik
26.04.2021, 12:50
Тогда придётся делать переменную выходной, чтоб визуализация её видела, а потом чем-то в неё писать результат сложения с константой. Или я что-то недопонял во входных и выходных переменных?

RV9WFJ
26.04.2021, 12:55
Что-то не допоняли. Вы на вход ФБ подаете какую-то переменную. Вот и подавайте ее сразу в конечном виде. Зачем внутри ФБ конпку обрабатывать? Вы весь смысл ФБ хотите разрушить своими действиями иначе.

murzik
26.04.2021, 13:00
Что-то не допоняли. Вы на вход ФБ подаете какую-то переменную. Вот и подавайте ее сразу в конечном виде. Зачем внутри ФБ конпку обрабатывать? Вы весь смысл ФБ хотите разрушить своими действиями иначе.
Потому что внутри ФБ эта переменная ещё и инкрементируется время от времени по нескольким условиям. И вытаскивать её наружу - это разломать весь ФБ почти что.
Зы. Видится абсолютно травоядный алгоритм: всё то же, что и было, плюс каждая кнопка ещё и меняет на противоположное состояние дополнительную битовую переменную на входе ФБ. А ФБ, увидев, что бит переключился, прибавляет константу к переменной

RV9WFJ
26.04.2021, 13:15
И вытаскивать её наружу - это разломать весь ФБ почти что. В чем разлом то? Вам в коде ФБ не все ли равно где эта переменная объявлена? Но если вам нравятся велосипеды с квадратными колесами то никто вам их не запретит.

murzik
26.04.2021, 13:24
В чем разлом то? Вам в коде ФБ не все ли равно где эта переменная объявлена? Но если вам нравятся велосипеды с квадратными колесами то никто вам их не запретит.

Ну не знаю. Мне пока кажется, что если к переменной внутри ФБ идёт с десяток обращений, примерно половина из них на чтение, а половина на запись. И если я эту переменную вынесу из ФБ, то проще вообще разломать весь ФБ, и все действия над переменной осуществлять в плс-прг.

murzik
26.04.2021, 14:47
Есть ещё мысль: никакую входную переменную в ФБ не сбрасывать, а просто завести ещё одну переменную, которой перманентно присваивать сумму входной переменной, которую прибавляет и убавляет визуализация, и той переменной, что пересчитывается алгоритмом самого ФБ. И уже этой суммарной переменной и оперировать в результате.
Тоже нормально и лаконично вполне. Но всё-таки изначальный вопрос о правомерности сбрасывания входной переменной силами самого фб хотелось бы разъяснить для себя

ppaxan
27.04.2021, 11:14
Добрый день, прошу помочь оценить возможную глубину временного интервала для записи 50 трендов с дискретностью в 1мин. на СПК.

Карбофос
29.04.2021, 09:23
Вопрос по стандартному блоку Blink: если во время работы ему изменить TIMEHIGH или TIMELOW, то он все равно доработает до конца цикла со старыми значениями и только потом начнет работать с новыми. Например, если они были равны 1 час и попытаться изменить их на 1 минуту, Blink все равно завершит цикл условно через два часа и только потом начнет мигать с периодичностью в 2 минуты.

Вопрос: можно ли блок как-то сбросить при изменении TIMELOW или TIMEHIGH?

Евгений Кислов
29.04.2021, 10:12
Вопрос по стандартному блоку Blink: если во время работы ему изменить TIMEHIGH или TIMELOW, то он все равно доработает до конца цикла со старыми значениями и только потом начнет работать с новыми. Например, если они были равны 1 час и попытаться изменить их на 1 минуту, Blink все равно завершит цикл условно через два часа и только потом начнет мигать с периодичностью в 2 минуты.

Вопрос: можно ли блок как-то сбросить при изменении TIMELOW или TIMEHIGH?

Нужно вызвать ФБ с ENABLE := FALSE, а потом - с ENABLE := TRUE

Карбофос
29.04.2021, 10:37
Нужно вызвать ФБ с ENABLE := FALSE, а потом - с ENABLE := TRUE
Не выходит. Написал тестовый код:


VAR
blink1:BLINK;
time1 : TIME;
time2 : TIME;
en1 : BOOL;
en2 : bool;
ou1 : bool;
END_VAR

IF en2 THEN
blink1(enable:= en1, timelow := time1, timehigh := time2);
END_IF

ou1 := blink1.OUT;

Если TIMEHIGH и TIMELOW задать допустим 1 час, а потом 1 секунда, то в каких бы пропорциях не менялись значения en1 и en2, время в 1 час никак не сбрасывается.

Евгений Кислов
29.04.2021, 11:10
Вариант с нужным вам поведением:



PROGRAM PLC_PRG
VAR
blink1:BLINK;
time1 : TIME := T#1M;
time2 : TIME := T#1m;
en1 : BOOL;
en2 : BOOL;
ou1 : BOOL;
reset: BOOL;
END_VAR
VAR CONSTANT
blink2: BLINK;
END_VAR


IF en2 THEN
blink1(enable:= en1, timelow := time1, timehigh := time2);
END_IF

IF NOT(en1) THEN
blink1 := blink2;
END_IF

ou1 := blink1.OUT;


"Переключение" en1 (с TRUE на FALSE и обратно на TRUE) применит новые параметры времени.

Карбофос
29.04.2021, 11:28
Вариант с нужным вам поведением:



PROGRAM PLC_PRG
VAR
blink1:BLINK;
time1 : TIME := T#1M;
time2 : TIME := T#1m;
en1 : BOOL;
en2 : BOOL;
ou1 : BOOL;
reset: BOOL;
END_VAR
VAR CONSTANT
blink2: BLINK;
END_VAR


IF en2 THEN
blink1(enable:= en1, timelow := time1, timehigh := time2);
END_IF

IF NOT(en1) THEN
blink1 := blink2;
END_IF

ou1 := blink1.OUT;


"Переключение" en1 (с TRUE на FALSE и обратно на TRUE) применит новые параметры времени.

Работает, спасибо!

-=Vovka=-
05.05.2021, 11:04
Не пойму, что не нравится компилятору?
Пишет: C0037: 'eState' не является входом 'PLC_PRG'
Ведь другие переменные видит...
Объявление в PLC_PRG:
54968
В коде вызываемой функции:
54969

Евгений Кислов
05.05.2021, 11:17
Один POU не может произвести запись в локальные переменные другого POU.
Передача данных происходит через входные и выходные переменные.

-=Vovka=-
05.05.2021, 13:46
Ясно. Спасибо!

Максим Ульянов
05.05.2021, 15:31
Разбираемся дальше..Проект огромный у меня и притом первый ..но делать нужно за нами Москва...
Итак есть потребность в ПИД регуляторе ( управление чиллером ) я так понимаю что торопится с ним не стоит и поэтому ну думаю время для ПИД выставить ...хотя бы 1 мин ( 60 сек)
входной параметр - температура,пусть будет 5-30гр.Цельсия ,выходной - производительность чиллера в процентах...
подсмотрел в Библиотеке UTIL.Library есть PID и PID_FIXCYCLE ..прошу помощи...подойдут ли данные регуляторы для моей задачи или поискать что то еще...или может кто что посоветует?( если готовы помочь не только словом но и делом не откажусь от помощи за оплату)

forfiftyone
14.05.2021, 17:48
Добрый день.
Подскажите, где можно найти target - file для ПЛК Berghoff EC100?!
ПЛК взят с неработающей установки - решили использовать его в других целях, а target file нигде не могу найти(

Евгений Кислов
15.05.2021, 09:41
Добрый день.
Подскажите, где можно найти target - file для ПЛК Berghoff EC100?!
ПЛК взят с неработающей установки - решили использовать его в других целях, а target file нигде не могу найти(

Добрый день.
Напишите в Пролог - они являются российскими партнерами Berghof.
info@prolog-plc.ru

http://www.prolog-plc.ru/partners

Я в свое время именно у них запрашивал и таргет, и прошивку для EC1000.

geotime
17.05.2021, 14:06
Добрый день.
Где почитать про библиотеки, зависимости. Как допустим поменять более старую библиотеку в проекте на более новую. Вот скриншот пытаюсь установить MQTT client. 55121

Евгений Кислов
17.05.2021, 14:30
Добрый день.
Где почитать про библиотеки, зависимости. Как допустим поменять более старую библиотеку в проекте на более новую. Вот скриншот пытаюсь установить MQTT client. 55121

Добрый день.
Какую версию CODESYS вы используете?

geotime
18.05.2021, 03:15
Добрый день.
Установлен CDS 3.5 SP 14. patch 3 для ПЛК 210. Новая библиотека https://github.com/stefandreyer/CODESYS-MQTT MQTT 1.2.0.5.library использует версию CDS 3.5 SP 16. patch 3 и ее у меня не получается поставить, из-за того что версия системных библиотек меньше. Скачал версию 3.5.11 (более старую для CDS 3.5 SP 13. ) не могу поставить ругается как на скриншоте выше. Хотел для себя прояснить можно ли как-то в проекте поменять/заменить версию библиотеки? Допустим проект ссылается на версию CAAFile 3.5.13.0 , точно такой в системе нет, но есть более свежая 3.5.13.40 как указать в проекте использовать более свежую (понятно что ФБ (название, методы и т.д) в новой должны совпадать с предыдущей. И что делать в обратной ситуации когда версия библиотеки в проекте выше чем установлено в IDE. Прошу помочь разобраться в этом вопросе. С уважением Юрий.

P.S. Или поставить 3.5.SP16 и из него попробовать сохранить в предыдущую версию?

Евгений Кислов
18.05.2021, 06:24
1. Если в проекте используется библиотека более младшей версии (по сравнению с версией таргета) - то должна была быть кнопка Загрузка отсутствующих библиотек.
2. Если в проекте используется библиотека более старшей версии (по сравнению с версией таргета) - то должна была быть кнопка Плейсхолдеры для выбора конкретной версии.

У вас почему-то нет ни одной из этих кнопок.
Чтобы дать какие-то комментарии - нужен доступ по TeamViewer.

Максим Ульянов
18.05.2021, 14:17
Евгений доброго дня,общались сегодня с вами..после обновления CS до CODESYS V3.5 SP11 Patch 5 не открываются старый проект...55154

Евгений Кислов
18.05.2021, 14:22
Евгений доброго дня,общались сегодня с вами..после обновления CS до CODESYS V3.5 SP11 Patch 5 не открываются старый проект...55154

Логично - потому что старый проект у вас создан в CODESYS V3.5 SP14 Patch 3.
Создайте новый проект в CODESYS V3.5 SP11 Patch 5, одновременно с ним запустите CODESYS V3.5 SP14 Patch 3 и перетащите из старого в проекта в новый то, что сможете.

Максим Ульянов
18.05.2021, 15:19
ладно.....вопрос..версия прошивки контроллера (СПК 110) 1.1.0611.1056, какой таргет файл поставить?


поставил OwenTargets-3.5.11.50-14...551585515755159


не получается создать проект..

Евгений Кислов
18.05.2021, 16:21
Вам надо создать новый проект в CODESYS V3.5 SP11 Patch 5.
Установите туда таргет OwenTargets-3.5.11.50-14.
Тогда при создании проекта будет доступен шаблон СПК с иконкой CODESYS - вам нужен именно он.

geotime
19.05.2021, 07:16
Добрый день Евгений.
Кнопки есть но из- за того что работаю на ноутбуке описание не помещается в строчку и нужно нажать на стрелочку правее (для меня это было не очевидно). Смотрите скриншоты5516655166 после клика 55167

Евгений Кислов
19.05.2021, 07:45
Добрый день Евгений.
Кнопки есть но из- за того что работаю на ноутбуке описание не помещается в строчку и нужно нажать на стрелочку правее (для меня это было не очевидно). Смотрите скриншоты5516655166 после клика 55167

Да, согласен - это выглядит неочевидно.

-=Vovka=-
23.05.2021, 19:48
Доброго времени суток!
Вопрос по работе с датой-временем: чем воспользоваться чтоб к переменной (в формате 'dt#2021-05-08-04:10:32') прибавить два часа?

Евгений Кислов
23.05.2021, 19:54
Доброго времени суток!
Вопрос по работе с датой-временем: чем воспользоваться чтоб к переменной (в формате 'dt#2021-05-08-04:10:32') прибавить два часа?

Добрый день.

... + T#2h;

-=Vovka=-
23.05.2021, 20:29
... + T#2h;
Что-то не получается:


dtAdd: DATE_AND_TIME;

dtAdd := T#2h; ОШИБКА
dtAdd := dtAdd + T#2h; ОШИБКА

Евгений Кислов
23.05.2021, 20:51
"dtAdd := T#2h;" - некорректно и не нужно в вашем случае

-=Vovka=-
23.05.2021, 21:10
"dtAdd := T#2h;" - некорректно и не нужно в вашем случае
мне нужно инициализировать переменную, чтоб потом ее плюсовать к другой переменной

Евгений Кислов
24.05.2021, 06:18
мне нужно инициализировать переменную, чтоб потом ее плюсовать к другой переменной

Тогда инициализируйте корректно:


dtAdd := DT#2021-05-08-04:10:32;

-=Vovka=-
24.05.2021, 06:57
Тогда инициализируйте корректно:


dtAdd := DT#2021-05-08-04:10:32;

Так не дает такую инициализацию делать:
dtAdd := DT#0000-00-00-02:00:00; - пишет:
Константа 'DT#0000-00-00-02:00:00' слишком велика для типа 'DATE_AND_TIME'

Пробовал так:


dtAdd := DT#2000-01-01-03:00:00;
dtAdd := dtAdd - DT#2000-01-01-01:00:00;

пишет:
Невозможно конвертировать тип 'TIME' в тип 'DATE_AND_TIME'

Евгений Кислов
24.05.2021, 07:04
Так не дает такую инициализацию делать:
dtAdd := DT#0000-00-00-02:00:00;- пишет:
Константа 'DT#0000-00-00-02:00:00' слишком велика для типа 'DATE_AND_TIME'

Если вам не нужно хранить дату - то используйте тип TIME, а не DT.

capzap
24.05.2021, 07:11
Константа 'DT#0000-00-00-02:00:00' слишком велика для типа 'DATE_AND_TIME'

правильно пишет, потому что в компьютерном мире принято начало времени с 1970 года https://help.codesys.com/api-content/2/codesys/3.5.13.0/en/_cds_datatype_time/#be0bbde693f16b94c0a8640e00a54e5d-3s-timedatatypes
это даже можно получить есди конвертнуть ноль например DWORD_TO_DT(0) или Ваши два часа DWORD_TO_DT(7200)

-=Vovka=-
24.05.2021, 19:31
Спасибо всем!
Сделал: пришлось конвертировать туда-сюда.

RV9WFJ
27.05.2021, 07:42
Как правильно контролировать наличие обмена через сетевые переменные? Я так понимаю эту информацию можно почерпнуть в NetVarManager_UDP_FB? bIsActive?

Евгений Кислов
27.05.2021, 07:51
Как правильно контролировать наличие обмена через сетевые переменные? Я так понимаю эту информацию можно почерпнуть в NetVarManager_UDP_FB? bIsActive?

Лучше ориентироваться на счетчики пакетов.

55290

DenisV
28.05.2021, 12:40
Из руководства на модуль МВ210-101 55306 . Правильно ли я понимаю, что параметр "Максимальная загрузка АЦП" является исключающим параметром для параметра "Период опроса"? То есть если режим Максимальной загрузки АЦП включен не имеет значения число заданное в периоде опроса?

Евгений Кислов
28.05.2021, 14:45
Из руководства на модуль МВ210-101 55306 . Правильно ли я понимаю, что параметр "Максимальная загрузка АЦП" является исключающим параметром для параметра "Период опроса"? То есть если режим Максимальной загрузки АЦП включен не имеет значения число заданное в периоде опроса?

Да, совершенно верно.

RV9WFJ
28.05.2021, 15:31
Насколько на практике этой галочкой можно пользоваться? Перегреваться модуль не будет на полной загрузке? А то скорость опроса оставляет желать лучшего в некоторых приложениях.

RV9WFJ
28.05.2021, 15:37
Насколько на практике этой галочкой можно пользоваться? Перегреваться модуль не будет на полной загрузке? А то скорость опроса оставляет желать лучшего в некоторых приложениях.

Максим Ульянов
31.05.2021, 10:33
Доброго дня Коллеги...После обновления CS до CODESYS V3.5 SP11 Patch 5 Hotfix 4 не получается скомпилировать проект....чего то ему не хватает...55346

Евгений Кислов
31.05.2021, 10:47
Доброго дня Коллеги...После обновления CS до CODESYS V3.5 SP11 Patch 5 Hotfix 4 не получается скомпилировать проект....чего то ему не хватает...55346

Добрый день.
В менеджере библиотек нажмите кнопку Загрузка отсуствующих библиотек.

Максим Ульянов
31.05.2021, 11:09
спасибо помогло...двигаемся дальше...55349
как бороться с этим?

Евгений Кислов
31.05.2021, 11:14
спасибо помогло...двигаемся дальше...55349
как бороться с этим?

Удалить из проекта библиотеку Net Baser Services версии 3.2.0.0.

Максим Ульянов
31.05.2021, 11:20
Огромное спасибо)

Максим Ульянов
31.05.2021, 12:26
И снова начинаем все сначала....55355
как с этим бороться?

Евгений Кислов
31.05.2021, 12:37
Выбрать корректную версию таргет-файла, компилятора и профиля визуализации.

Максим Ульянов
31.05.2021, 12:43
не нахожу, где скачать тагет 3.5.11.50...

Евгений Кислов
31.05.2021, 12:44
не нахожу, где скачать тагет 3.5.11.50...

Какая у вас версия прошивки?

Максим Ульянов
31.05.2021, 12:57
Какая у вас версия прошивки?
1.1.0611.1056

Евгений Кислов
31.05.2021, 13:14
1.1.0611.1056

https://ftp.owen.ru/CoDeSys3/03_Targets/OwenTargets-3.5.11.50-14.package

Максим Ульянов
31.05.2021, 13:30
https://ftp.owen.ru/CoDeSys3/03_Targets/OwenTargets-3.5.11.50-14.package

установил...не чего не изменилось...
что дальше делать?

Максим Ульянов
31.05.2021, 13:39
https://ftp.owen.ru/CoDeSys3/03_Targets/OwenTargets-3.5.11.50-14.package

разобрался....

Максим Ульянов
01.06.2021, 13:29
Доброго дня,продолжу задавать глупые вопросы ...Код PLC_PRG:


IF GVL.Read THEN //кнопка для чтения ,устанавливается в визуализации в TRUE
MB_Fan_Read_1 (
Ip_DataConv:='192.168.0.7',
Start_Adress:=StartAdresRead);
GVL.Read:=FALSE; //сброс кнопки после чтения...

Смысл кода: при нажатии на кнопку выполнить MB_Fan_Read_1 и после чтения сбросить кнопку в FALSE....почемуто данные не читаются....


если сделать вот так :
MB_Fan_Read_1 (
Ip_DataConv:='192.168.0.7',
Start_Adress:=128);

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

Евгений Кислов
01.06.2021, 13:39
Доброго дня,продолжу задавать глупые вопросы ...Код PLC_PRG:


IF GVL.Read THEN //кнопка для чтения ,устанавливается в визуализации в TRUE
MB_Fan_Read_1 (
Ip_DataConv:='192.168.0.7',
Start_Adress:=StartAdresRead);
GVL.Read:=FALSE; //сброс кнопки после чтения...

Смысл кода: при нажатии на кнопку выполнить MB_Fan_Read_1 и после чтения сбросить кнопку в FALSE....почемуто данные не читаются....


если сделать вот так :
MB_Fan_Read_1 (
Ip_DataConv:='192.168.0.7',
Start_Adress:=128);

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

А вы уверены, что MB_Fan_Read_1 выполняется за 1 цикл ПЛК?

Максим Ульянов
01.06.2021, 13:44
Да пока писал сам об этом и подумал....тоесть стоит перенести все это PLC_PRG...? или как можно вынести куски кода которые будут вызываться часто в отдельные файлы?

Евгений Кислов
01.06.2021, 13:47
Да пока писал сам об этом и подумал....тоесть стоит перенести все это PLC_PRG...? или как можно вынести куски кода которые будут вызываться часто в отдельные файлы?

Можно добавить в ФБ вход управления (обычно его называют xExecute), по переднему фронту которого будет происходить однократное выполнение нужного действия.
Соответственно, на этот вход вы присвоите вашу переменную GVL.Read.

Максим Ульянов
01.06.2021, 13:50
где бы про это почитать подробнее ...или можете пример привести как это оформить?

FUNCTION_BLOCK INTERNAL MB_Fan_Read
VAR_INPUT
Ip_DataConv: STRING;
Start_Adress: UINT;
END_VAR
VAR_OUTPUT
TcpClientError: BOOL ;
END_VAR
VAR
fbTcpClient: OCL.TCP_Client;
fbReadRequest: OCL.MB_TcpRequest;
awReadData: ARRAY [0..32] OF WORD;


eState: STATE_MB;

fbTon: TON;
xWriteToSlave: BOOL;

END_VAR


CASE eState OF

STATE_MB.CONNECTING:
fbTon (IN :=TRUE, PT := T#5S);
fbTcpClient
(
xEnable := TRUE ,
tTimeout := T#5S,
sIpAddr := Ip_DataConv,
uiPort :=502
);

IF fbTcpClient.xActive THEN
eState := STATE_MB.READ;
END_IF

IF fbTcpClient.xError OR fbTon.q THEN
fbTcpClient(xEnable :=FALSE);
fbTon(IN :=FALSE);
TcpClientError :=TRUE;
END_IF

STATE_MB.READ:
fbReadRequest
(
xExecute :=TRUE,
tTimeout :=T#50MS,
usiRetry :=3,
hConnection := fbTcpClient.hConnection,
xIsRtuOverTcpMode :=FALSE,
usiUnitId :=1,
eFuncCode :=OCL.MB_FC.READ_INPUT_REGISTERS,
uiDataAddr:=Start_Adress, // Начальный регистр
uiDataCount:=32,// колво регистров в запросе
pData:=ADR (awReadData),
szSize:=SIZEOF (awReadData)
);

IF fbReadRequest.xDone OR fbReadRequest.xError THEN
fbReadRequest(xExecute := FALSE);

ELSE
eState := STATE_MB.CONNECTING;
END_IF


END_CASE

GVL.Read:=FALSE;

Евгений Кислов
01.06.2021, 13:57
где бы про это почитать подробнее

https://oscat.ru/?p=158

Максим Ульянов
01.06.2021, 15:13
https://oscat.ru/?p=158

почитал и понял что на это у меня уйдет месяц...перенес в PLC_PRG...все равно он не выполняется по кнопке....

VadimS
02.06.2021, 00:02
Добрый день.
Не могу победить переменную TOD...
ПЛК200, весь софт актуализирован.
Код (эмуляция часов, для отладки перехода в следующие сутки). Это один из кусков эмулятора.

VAR
dtime_FD: BOOL;
t_w_on_FD: TOD := TOD#22:00:00;
c_time_TOD: TOD := TOD#00:00:00;
Timer_FD: TON;
cnt: WORD:=0;
END_VAR

Timer_FD(IN:=TRUE,PT:=T#200MS);
IF Timer_FD.Q THEN
c_time_TOD:=c_time_TOD +T#10M;
Timer_FD(IN:=FALSE);
END_IF

IF t_w_on_FD <= c_time_TOD THEN
dtime_FD := TRUE;
cnt := cnt+1;
END_IF



Вроде как TOD не может быть больше 23:59:59, следовательно - должны получить кольцо 00:00:00 / 23:59:59.
НО, условие: t_w_on_FD <= c_time_TOD выполняется только один раз. После первого перехода через ноль часов c_time_TOD всегда больше t_w_on_FD.

Если добавить:
IF c_time_TOD >= TOD#23:59:59 THEN
c_time_TOD := (c_time_TOD - T#23H59M59S);
END_IF
то все начинает работать.

Это проявляется (естественно) и при добавлении к TOD#22:00:00 допустим T#4H00M.
Полученные TOD#02:00:00 всегда больше (при сравнении) исходных TOD#22:00:00
Такое ощущение, что существует признак переполнения, и он учитывается компилятором....

Если использовать TIME, добавленный день виден и убирается, когда надо. Но везде в коде использовал TOD.
Когда понадобилось в алгоритмы добавить работу оборудования по таймеру с переходом через сутки, ничего не заработало...
Чего скажете, это косяк софта или я чего-то недопонимаю?
Можно как-то сбросить это суточное переполнение в TOD (без всяких сравнений) или проще перелопатить свой код под TIME?

RV9WFJ
02.06.2021, 05:31
55385
Когда TOD в вашем случае равен 1h то внутри там на самом деле уже 25h. На самом деле если код немного по другому написать то компилятор будет отчаянно ругаться на операции сложения TOD и TOD например если сумма больше 24h.

Евгений Кислов
02.06.2021, 06:14
Чего скажете, это косяк софта или я чего-то недопонимаю?

Это давно известное поведение (на мой взгляд - некорректное), которое по каким-то причинам разработчики решили не исправлять (won't fix).

55386


Можно как-то сбросить это суточное переполнение в TOD (без всяких сравнений)

Думаю, сделать это вообще без сравнений не получится.

-=Vovka=-
06.06.2021, 08:22
Доброе утро!
CODESYS V3.5 SP14 Patch 3 + (32bit)
после компиляции выдает такое:
55443

И как это понимать??

Евгений Кислов
06.06.2021, 08:59
Доброе утро!
CODESYS V3.5 SP14 Patch 3 + (32bit)
после компиляции выдает такое:
55443

И как это понимать??

Понимать именно так, как написано - во время компиляции ошибок не было. Рядом со словом "Компиляция" есть стрелка, которая позволит выбрать другой этап/компонент - очевидно, ошибка произошла на нём.

Khan_Kasim
15.06.2021, 13:30
Добрый день, помогите разобраться с отображением тренда.
Имеется тренд с 24 переменными: TEMP_1-12, PRES_1-12. На главном окне визуализации есть 12 прямоугольников в которых выводятся переменные TEMP_1-12.
Необходимо чтобы при нажатии на прямоугольник 1 выводились переменные TEMP_1 и PRES_1, при нажатии на прямоугольник 2 выводились переменные TEMP_2 и PRES_2 и т.д.
Я так понял что это можно реализовать через "Опции динамического отображения", но не могу сообразить что надо указать в графе "Переменная или выражение для видимости".

Евгений Кислов
15.06.2021, 13:38
Добрый день, помогите разобраться с отображением тренда.
Имеется тренд с 24 переменными: TEMP_1-12, PRES_1-12. На главном окне визуализации есть 12 прямоугольников в которых выводятся переменные TEMP_1-12.
Необходимо чтобы при нажатии на прямоугольник 1 выводились переменные TEMP_1 и PRES_1, при нажатии на прямоугольник 2 выводились переменные TEMP_2 и PRES_2 и т.д.
Я так понял что это можно реализовать через "Опции динамического отображения", но не могу сообразить что надо указать в графе "Переменная или выражение для видимости".

Добрый день.
В этой графе надо указать переменную типа BOOL, которая будет управлять видимостью выбранного пера тренда.

Khan_Kasim
15.06.2021, 13:41
Даже не представляю как реализовать переменную нажатия на объект визуализации.
Будьте добры, расскажите подробней.

Евгений Кислов
15.06.2021, 14:09
Даже не представляю как реализовать переменную нажатия на объект визуализации.
Будьте добры, расскажите подробней.

См. настройки кнопок в примере (вкладка Конфигурация ввода).
https://dropmefiles.com/W8n1G

Как запустить проект на виртуальном контроллере:
https://owen.ru/forum/showthread.php?t=28167&page=5&p=296706&viewfull=1#post296706

Khan_Kasim
15.06.2021, 15:23
Спасибо огромное! Всё заработало.:):):)