PDA

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



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

Dmitro
16.11.2017, 21:43
Да, нужно.

Ошибка с необьяснимым отваливанием gateway при нажатии "онлайн" происходит если в контроллере "новая" прошивка, а таргет файлы от "старой".

SA104
17.11.2017, 07:07
Аналогичная ситуация была на СПК207 с неправильной версией таргета.
Даже прошивка слетала . Поставьте актуальную версию таргета.

oleg1821
20.11.2017, 06:40
Не скачивается документация на Codesys 3. Как скачать?

Евгений Кислов
20.11.2017, 07:01
Не скачивается документация на Codesys 3. Как скачать?

Проблемы с ftp, постараемся решить их в течение дня.
Если что-то срочно нужно - напишите, выложу на файлообменник.

Upd. - фтп починили.

Andrew_Stranger
01.12.2017, 13:28
Скажите существует ли возможность увеличить шрифт у числовой клавиатуры?

Евгений Кислов
01.12.2017, 13:37
Скажите существует ли возможность увеличить шрифт у числовой клавиатуры?

Да - можно отредактировать существующий диалог или создать на его базе свой.
Исходники лежат в папке установки CODESYS по пути \CODESYS\Projects\Visu\Dialogs.

Uknow
08.12.2017, 08:38
Добрый день. При создании загрузочного приложения, возникают следующие ошибки:
[ERROR] pid_regulators, 3.1.2.4 (owen): PersistentVars(Строка 1): C0104: Недостаточно памяти глобольных данных: Переменная '__stApplicationName', 32 байт. (Инкрементная компиляция может привести к фрагментации памяти. Выполните команду "Компилировать, Очистить" для принудительного перераспределения данных и кода.)
[ERROR] pid_regulators, 3.1.2.4 (owen): PersistentVars(Строка 1): C0104: Недостаточно памяти глобольных данных: Переменная '__dwChecksum', 4 байт. (Инкрементная компиляция может привести к фрагментации памяти. Выполните команду "Компилировать, Очистить" для принудительного перераспределения данных и кода.)
[ERROR] pid_regulators, 3.1.2.4 (owen): PersistentVars(Строка 1): C0104: Недостаточно памяти глобольных данных: Переменная '__ulLength', 4 байт. (Инкрементная компиляция может привести к фрагментации памяти. Выполните команду "Компилировать, Очистить" для принудительного перераспределения данных и кода.)
[ERROR] pid_regulators, 3.1.2.4 (owen): PersistentVars(Строка 1): C0104: Недостаточно памяти глобольных данных: Переменная '__bInitNew', 1 байт. (Инкрементная компиляция может привести к фрагментации памяти. Выполните команду "Компилировать, Очистить" для принудительного перераспределения данных и кода.)
[ERROR] pid_regulators, 3.1.2.4 (owen): PersistentVars(Строка 1): C0104: Недостаточно памяти глобольных данных: Переменная '__bDummyForAlignment', 3 байт. (Инкрементная компиляция может привести к фрагментации памяти. Выполните команду "Компилировать, Очистить" для принудительного перераспределения данных и кода.)
При выполнении команды Компиляция -> Очистить ничего не происходит. Подскажите , пожалуйста, как избавится от этих ошибок.

Евгений Кислов
08.12.2017, 08:46
Добрый день.

Откуда вы взяли библиотеку pid_regulators 3.1.2.4?

Uknow
08.12.2017, 08:56
Библиотека была взята из CODESYS 2.3 и импортирована в CODESYS 3.5

Евгений Кислов
08.12.2017, 08:59
Библиотека была взята из CODESYS 2.3 и импортирована в CODESYS 3.5

Так не получится - реализация библиотеки включена в прошивку конкретных контроллеров (программируемых в 2.3), в Codesys только обвязка.
ПИД-регуляторы для CDS V3 есть в библиотеках Util и OSCAT.

Uknow
08.12.2017, 09:26
Так не получится - реализация библиотеки включена в прошивку конкретных контроллеров (программируемых в 2.3), в Codesys только обвязка.
ПИД-регуляторы для CDS V3 есть в библиотеках Util и OSCAT.

Как раз блок PID я использовал из актуальной библиотеки Util, а из библиотеки для версии 2.3 были использованы функциональные блоки VALVE_REG_NO_POS (управление задвижкой без датчика положения) и DIG_FLTR (цифровой фильтр для аналоговых значений), которые я не смог найти в библиотеках версии 3.5. Буду признателен если вы подскажете в каких библиотеках версии 3.5 можно найти эти блоки или их аналоги.

Евгений Кислов
08.12.2017, 09:58
Может, вот это поможет:
https://drive.google.com/file/d/0B5NidLiWNx39cTNUb1ZzNjNaajg/view

Uknow
08.12.2017, 11:50
Может, вот это поможет:
https://drive.google.com/file/d/0B5NidLiWNx39cTNUb1ZzNjNaajg/view

Спасибо большое, как раз то что нужно. К сожалению еще не успел подробно ознакомится с блоками в библиотеке OSCAT.

Dmitro
20.12.2017, 21:09
СПК110 с прошивкой 3.948.
При подключении "онлайн" появляется "генерация кода...." и на случайном этапе "крепко задумывается", затем
выскакивает окно "нет связи, повторите сканирование".
После чего СПК110 больше не доступен в поиске, надо передергивать питание.
Раньше такого не было.

Правильно ли библиотеки установлены?
https://drive.google.com/open?id=1g2...VnwKMuSWC1-OGf
https://drive.google.com/open?id=1wG...yExNY1EmC5QcN4

Очень радуют такие информативные ошибки.
Что нужно делать?
Переустанавливать библиотеки, Codesys, Windows, прошивку?

После 10 часовых мучений, единственное, что заработало это "Сброс заводской устройства", которое тоже заканчивается
"нет связи...", но после в СПК110 таки можно залить прошивку без ошибок.

Dmitro
20.12.2017, 21:13
Можно ли залить программу на СПК110 по USB-кабелю без установки Codesys?

Ильнур Гибадуллин
27.12.2017, 11:06
Можно ли залить программу на СПК110 по USB-кабелю без установки Codesys?

Нет, но можете загрузить программу через USB носитель предварительно загрузив в нее загрузочное приложение.

Ильнур Гибадуллин
27.12.2017, 11:16
СПК110 с прошивкой 3.948.
При подключении "онлайн" появляется "генерация кода...." и на случайном этапе "крепко задумывается", затем
выскакивает окно "нет связи, повторите сканирование".
После чего СПК110 больше не доступен в поиске, надо передергивать питание.
Раньше такого не было.

Правильно ли библиотеки установлены?
https://drive.google.com/open?id=1g2...VnwKMuSWC1-OGf
https://drive.google.com/open?id=1wG...yExNY1EmC5QcN4

Очень радуют такие информативные ошибки.
Что нужно делать?
Переустанавливать библиотеки, Codesys, Windows, прошивку?

После 10 часовых мучений, единственное, что заработало это "Сброс заводской устройства", которое тоже заканчивается
"нет связи...", но после в СПК110 таки можно залить прошивку без ошибок.

Ответить на вопрос "почему периодически отваливается связь с СПК" трудно. Пробовали переустаналивать USB драйвер? Используете USB кабель, который шел в комплекте с СПК?

Dmitro
30.12.2017, 16:09
Есть ли в ST оператор завершения всего рабочего цикла во вложенном блоке (action)?
RETURN работает, но только в программе самого верхнего уровня.

Dmitro
30.12.2017, 16:11
Ответить на вопрос "почему периодически отваливается связь с СПК" трудно. Пробовали переустаналивать USB драйвер? Используете USB кабель, который шел в комплекте с СПК?

Если на СПК110 крутится какая-то программа, она теоретически может помешать заливке новой программы в контроллер? (например сьедает все ресурсы процессора и на интерфейс с компом ничего не остается).

Евгений Кислов
31.12.2017, 11:51
Есть ли в ST оператор завершения всего рабочего цикла во вложенном блоке (action)?
RETURN работает, но только в программе самого верхнего уровня.

Такого оператора нет. Используйте CASE и при необходимости переходите из action на нужный шаг.

Евгений Кислов
31.12.2017, 11:53
Если на СПК110 крутится какая-то программа, она теоретически может помешать заливке новой программы в контроллер? (например сьедает все ресурсы процессора и на интерфейс с компом ничего не остается).

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

Dmitro
05.01.2018, 18:27
Чисто теоретически - в некоторых ситуациях такое может быть (например, программа после старта сразу зависает или занимает порт, выделенный под связь со средой программирования).

1) Прошиваю в чистый СПК110 свой проект - ОК
2) Через какое-то время опять хочу перепрошить СПК110, нажимаю "Логин" - зависание на этапе "генерация кода", связь с контроллером сама отваливается. Контроллер становится невидимым.
3) Передергиваю питание.
4) Так как в онлайн я теперь не могу зайти, вместо "Логин", подаю команду "Сброс заводской устройства" - зависание и отваливание связи с контроллером. Но проект на контроллере уже стерся.
5) Передергиваю питание.
6) Теперь "Логин" и прошивка проекта срабатывает, до следующей перепрошивки (см. шаг 2).

Евгений Кислов
05.01.2018, 18:40
После нажатия Онлайн должно появится диалоговое окно выбора режима загрузки проекта.
Вы какой пункт выбираете?

Dmitro
05.01.2018, 19:41
После нажатия Онлайн должно появится диалоговое окно выбора режима загрузки проекта.
Вы какой пункт выбираете?

Выбираю "Логин"

Евгений Кислов
06.01.2018, 21:23
Отправьте архив вашего проекта на support@owen.ru
В письме укажите версию прошивки.

vova-gavs
10.01.2018, 14:54
Уважаемые коллеги прошу помощи в настройке обмена по протоколу Modbus
Codesys 3.5 sp7 patch 4,
ПЛК 323, таргет 3.5.0.40,
Modbus_COM Версия: 3.4.0.0
Проект компилируется только при Modbus Master версии не выше 3.5.0.0, но в данной версии не реализована возможность установить "авто запуск соединения".
При обновлении Modbus Master на версию 3.5.5.0 Проект выдает много ошибок при компиляции.
Есть-ли выход из данной ситуации.
Можно-ли в коде программы реализовать автоматический перезапуск соединения

NIMNUL
14.01.2018, 01:36
Доброй ночи.
Один из функц. блоков RS232 использует библиотеку SysCom. В документации на нее, минимальная скорость 4800 Бод.
35083
Но на железке с которой нужно получать данные, стоит фиксированная скорость 2400. Как выйти из ситуации?

Евгений Кислов
14.01.2018, 09:59
Доброй ночи.
Один из функц. блоков RS232 использует библиотеку SysCom. В документации на нее, минимальная скорость 4800 Бод.
35083
Но на железке с которой нужно получать данные, стоит фиксированная скорость 2400. Как выйти из ситуации?

Для этого надо в терминале линукса (через библиотеку CmpSysExec) выполнить команду

stty -F /dev/ttyS2 2400

где 2 - номер COM-порта (в данном случае - COM2 для контроллера СПК2хх).

После этого открыть порт на любой скорости через SysCom (она уже не должна влиять) и дальше работать как обычно.

NIMNUL
14.01.2018, 11:15
Спасибо большое.
А как потом вернуть настройку порта в исходное, чтобы настройки контролировались из под CDS?
Просто контроллер дали во временное пользование и хотелось бы вернуть его как брал.

Евгений Кислов
14.01.2018, 12:23
Достаточно будет удалить проект.
Т.е. еще раз уточню - данную команду надо однократно выполнять из CODESYS через библиотеку CmpSysExec при старте контроллера.

Ильнур Гибадуллин
15.01.2018, 09:58
Уважаемые коллеги прошу помощи в настройке обмена по протоколу Modbus
Codesys 3.5 sp7 patch 4,
ПЛК 323, таргет 3.5.0.40,
Modbus_COM Версия: 3.4.0.0
Проект компилируется только при Modbus Master версии не выше 3.5.0.0, но в данной версии не реализована возможность установить "авто запуск соединения".
При обновлении Modbus Master на версию 3.5.5.0 Проект выдает много ошибок при компиляции.
Есть-ли выход из данной ситуации.
Можно-ли в коде программы реализовать автоматический перезапуск соединения

Можете попробовать вот этот код.
35107

oleg1821
29.01.2018, 07:09
Как открыть визуализацию через вызов диалога логин пароль? Добавил в свойствах кнопки OnMauseCkick OpenDislog но диалог не открывается.

Евгений Кислов
29.01.2018, 09:18
Как открыть визуализацию через вызов диалога логин пароль? Добавил в свойствах кнопки OnMauseCkick OpenDislog но диалог не открывается.

Вероятно, самый простой способ - отслеживать вход пользователя через системные переменные (например, VisuElems.CurrentUserGroupName) и в нужный момент однократно переключать экран через VisuElems.CURRENTVISU.

Sulfur
30.01.2018, 15:47
Поясните пожалуйста такую ситуацию.
Имеем следующую программу:
VAR
var1:WORD;
var2:REAL;
END_VAR;
-----
var2:=var1/10;
======
В этом случае при отображении var2 в СПК в соответствующем поле с тэгом %3.1f теряются значения после запятой. Т. е. если var1=37, то в поле вывода на СПК наблюдаю значение 3.0.
Если делаю так:
var2:=WORD_TO_REAL (var1) /10;
то отображается как надо. Т. е. если var1=37, то наблюдаю 3.7.
Почему теряется дробная часть в первом примере?
Оба алгоритма компилируются.

Евгений Кислов
30.01.2018, 15:52
Потому что результатом деления целых чисел является целое число.

Лучше явно показать компилятору, что вы ожидаете результат с плавающей точкой:



var2:=var1/10.0;

CleanS
30.01.2018, 16:29
Доброго дня!

Есть вопрос. (Прошу сильно не пинать) )))
Есть функциональные блоки написанные под CDS2.3, можно ли их использовать в проекте CDS3.5? ... или придётся переделывать?
(Библиотеки использовались стандартные Util и Standart).

Спасибо!

Ильнур Гибадуллин
30.01.2018, 16:45
Доброго дня!

Есть вопрос. (Прошу сильно не пинать) )))
Есть функциональные блоки написанные под CDS2.3, можно ли их использовать в проекте CDS3.5? ... или придётся переделывать?
(Библиотеки использовались стандартные Util и Standart).

Спасибо!

Здравствуйте!

Если использовали библиотеки Util.lib и Standard.lib, то проблем с адаптацией ФБ под Codesys v3.5 возникнуть не должно - библиотеки имеют практически тот же самый набор ФБ как и в Codesys v2.3.

CleanS
30.01.2018, 17:01
Здравствуйте!

Если использовали библиотеки Util.lib и Standard.lib, то проблем с адаптацией ФБ под Codesys v3.5 возникнуть не должно - библиотеки имеют практически тот же самый набор ФБ как и в Codesys v2.3.

Спасибо огромное!!!

dr_alf
01.02.2018, 15:37
1. CODESYS V3.5 SP7 Patch 4
При создании проекта "Новый проект" -> "Стандартный проект" указываю имя KNS_18.09.17
В верхней части окна его название отображается KNS_18.09.progect
Выхожу из положения так:
Когда проект уже создан "Сохранить проект как..." -> снова указываю имя файла KNS_18.09.17.project
Может я применяю в имени проекта какуют-то запрещенную последовательность символов?


2 вопрос
Возможно я ошибаюсь, может в этой версии я видел типа значка что-то связанное с программированием на C++. Сейчас не могу его найти. Я еще удивился, наверно можно писать на C и конвертить в МЭК.

Евгений Кислов
01.02.2018, 16:01
1. Тут речь скорее не о запрещенных символах, а принципам, по которым CDS формирует имя проекта. Последняя точка и все ,что после нее - действительно отсекаются от названия и заменяются на расширение.

2. Только на С и только при покупке плагина, насколько я понимаю.

dr_alf
02.02.2018, 12:53
1. Тут речь скорее не о запрещенных символах, а принципам, по которым CDS формирует имя проекта. Последняя точка и все ,что после нее - действительно отсекаются от названия и заменяются на расширение.

2. Только на С и только при покупке плагина, насколько я понимаю.

Понятно, спасибо за разъяснения.

PavelGO
08.02.2018, 17:32
Здравствуйте. Подскажите, пожалуйста, будет ли работать на СПК207 оператор __New()? В эмуляторе не работает - возвращает 0. Будет ли работать физически? Нужно реализовать очередь элементов. Может есть другой способ?

Евгений Кислов
09.02.2018, 07:22
Здравствуйте. Подскажите, пожалуйста, будет ли работать на СПК207 оператор __New()? В эмуляторе не работает - возвращает 0. Будет ли работать физически? Нужно реализовать очередь элементов. Может есть другой способ?

Работать будет. Предварительно надо нажать ПКМ на узел Application - Свойства - Опции компиляции приложения - поставить галочку Динамическое распределение памяти.

Но при отсутствии явной необходимости и четкой уверенности в своих действиях лучше попробовать обойтись другими средствами - например, посмотреть, не подойдут ли блоки FIFO и STACK из OSCAT.

В CODESYS не так давно (SP11) появилась отдельная библиотека для работы с абстрактными типами данных (Element Collections) - но, к сожалению, данная версия среды программирования не поддерживается текущими прошивками и не рекомендуется к использованию.

PavelGO
09.02.2018, 09:36
Спасибо. Сомневался, потому что в эмуляторе не работает. Опции и атрибут создаваемого дута ставил, конечно же, иначе ошибка.

trejer
09.02.2018, 15:11
Здравствуйте.
Хочу считать "Измерение входа 1 с плавающей точкой"(float32) модуля аналогово ввода "МВ110-224.8А" в СПК105.
Как это сделать?

Евгений Кислов
09.02.2018, 15:12
Здравствуйте.
Хочу считать "Измерение входа 1 с плавающей точкой"(float32) модуля аналогово ввода "МВ110-224.8А" в СПК105.
Как это сделать?

Добрый день. Проще всего - с использованием шаблона:
http://www.owen.ru/forum/showthread.php?t=27889

https://www.youtube.com/watch?v=0m5vbe7z6Ek

trejer
09.02.2018, 15:19
А, как из двух WORD склеить один REAL?

Евгений Кислов
09.02.2018, 15:25
А, как из двух WORD склеить один REAL?

При использовании шаблона - вы получите готовый REAL. Ничего склеивать не придется.

trejer
09.02.2018, 15:27
Спасибо! Я понял. Надо сначала книжку почитать.

Евгений Кислов
09.02.2018, 15:29
Спасибо! Я понял. Надо сначала книжку почитать.

Достаточно посмотреть видео - шаблоны крайне просты в настройке, она занимает несколько кликов.

dr_alf
15.02.2018, 15:02
Работаю в CS V3.5 SP7 Patch 4.
Мне нужно окрасить текст в определенный цвет, в зависимости от состояния программы.
Прописываю в объявлениях переменную и присваиваю ей значение например соответствующее красному
цвету = 16#FF0000. Далее на визуализацию добавляю текстовое поле, прописываю в него текст, и в свойствах
"Переменные шрифта" -> "Цвет" указываю путь к переменной.
Запускаю проект на исполнение, но шрифт не окрашивается в нужный мне цвет. Он просто исчезает с экрана.
Попробовал в CODESYS V3.5 SP5 Patch 3, все как нужно работает. Сейчас перевел все проекты на CS V3.5 SP5 Patch 5 тоже норм.

Переменную прописывал так: dwRed: DWORD:= 16#FF0000;


Так же в SP7 Patch 4 очень часто перед загрузкой нужно было делать очистку: "Компиляция" -> "Очистить все".
Иначе выдает ошибку.

Евгений Кислов
15.02.2018, 15:07
Работаю в CS V3.5 SP7 Patch 4.
Мне нужно окрасить текст в определенный цвет, в зависимости от состояния программы.
Прописываю в объявлениях переменную и присваиваю ей значение например соответствующее красному
цвету = 16#FF0000. Далее на визуализацию добавляю текстовое поле, прописываю в него текст, и в свойствах
"Переменные шрифта" -> "Цвет" указываю путь к переменной.
Запускаю проект на исполнение, но шрифт не окрашивается в нужный мне цвет. Он просто исчезает с экрана.
Попробовал в CODESYS V3.5 SP5 Patch 3, все как нужно работает. Сейчас перевел все проекты на CS V3.5 SP5 Patch 5 тоже норм.

Переменную прописывал так: dwRed: DWORD:= 16#FF0000;


Так же в SP7 Patch 4 очень часто перед загрузкой нужно было делать очистку: "Компиляция" -> "Очистить все".
Иначе выдает ошибку.

Посмотрите пример из 11.2.1 из документа СПК. Визуализация - там это рассмотрено.

Если коротко - надо 16#FFFF0000 (потому что помимо RGB есть еще альфа-канал).
https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D1%8C%D1%84%D0%B0-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB

oleg1821
16.02.2018, 08:06
Как вызвать определенную визуализацию из st кода?

Евгений Кислов
16.02.2018, 08:12
Как вызвать определенную визуализацию из st кода?

См. документ СПК. Визуализация, п. 11.3.1 и 11.4.4.

NIMNUL
13.03.2018, 15:45
Доброго дня.
Реализовал прием данных через RS232 на библиотеке SysCom версии через автомат состояний.
Железка что передает данные в ПЛК, всегда передает 9 байт.
Для проверки полноты данных хочу проверять, что принял их полностью.
При реализации алгоритма нужно проверять, что в буфер записалось 9 байт. И исходя из этого переводить автомат либо в состояние очистки буфера, либо в состояние ошибки.
Количество принятых байт отдает ФБ SysComRead в переменную dwRead. Хочу ее использовать в качестве условия выбора следующего состояния. Точка останова стоит на ФБ приема (картинка ниже), все хорошо, значение вижу. Но стоит перейти на след точку останова, dwRead обнуляется и соответственно меня перебрасывает в состояние ошибки.
Почему значение dwRead сразу обнуляется, еще до того как я очистил буфер?
Как выйти из этой ситуации?
36026

Евгений Кислов
13.03.2018, 15:49
Доброго дня.
Реализовал прием данных через RS232 на библиотеке SysCom версии через автомат состояний.
Железка что передает данные в ПЛК, всегда передает 9 байт.
Для проверки полноты данных хочу проверять, что принял их полностью.
При реализации алгоритма нужно проверять, что в буфер записалось 9 байт. И исходя из этого переводить автомат либо в состояние очистки буфера, либо в состояние ошибки.
Количество принятых байт отдает ФБ SysComRead в переменную dwRead. Хочу ее использовать в качестве условия выбора следующего состояния. Точка останова стоит на ФБ приема (картинка ниже), все хорошо, значение вижу. Но стоит перейти на след точку останова, dwRead обнуляется и соответственно меня перебрасывает в состояние ошибки.
Почему значение dwRead сразу обнуляется, еще до того как я очистил буфер?
Как выйти из этой ситуации?
36026

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

NIMNUL
13.03.2018, 17:24
Добрый день.
Какой контроллер используете?
Честно говоря, не ОВЕН, но типа СПК (с тач панелью и на Линуксе)
А это может зависеть от контроллера?

Евгений Кислов
13.03.2018, 17:49
При всем уважении - почему бы вам тогда не обратиться в техподдержку компании-производителя?

mikhail_AO_Allat
25.03.2018, 08:05
Всем привет, подскажите пожалуйста как устранить проблему? А она в том, что на компе с нуля сделал систему, соответственно переустановил Codesys3.5, все делал по инструкции, но при загрузке готового проекта, выдает ошибку "не удалось загрузить одну или более библиотек", хотя все устанавливал. В менеджере библиотек видно на какие он ругается, их добавляю, а толку нет.

Ильнур Гибадуллин
25.03.2018, 11:04
Всем привет, подскажите пожалуйста как устранить проблему? А она в том, что на компе с нуля сделал систему, соответственно переустановил Codesys3.5, все делал по инструкции, но при загрузке готового проекта, выдает ошибку "не удалось загрузить одну или более библиотек", хотя все устанавливал. В менеджере библиотек видно на какие он ругается, их добавляю, а толку нет.

Добрый день!

Архивы репозитория устройств устанавливали?

Выложите, пожалуйста, скриншот списка ошибок и менеджера библиотек.

RV9WFJ
25.03.2018, 17:13
Версии библиотек проверять или в проекте обновить все библиотеки до последних версий, установленных у вас. Про репозиторий уже написали выше.

tegs
17.04.2018, 08:18
Есть ли возможность назначить свои изображения для переключателя в Codesys 3.5 ?

Евгений Кислов
17.04.2018, 08:38
Есть ли возможность назначить свои изображения для переключателя в Codesys 3.5 ?

Да, для этого следует воспользоваться графическим элементом Переключатель изображения.

tegs
17.04.2018, 08:41
Да, для этого следует воспользоваться графическим элементом Переключатель изображения.

А где у него(переключателя изображений) можно привязать события по нажатию кнопки? Больше похоже что он работает как обычный индикатор, а не переключатель

Евгений Кислов
17.04.2018, 08:46
А где у него(переключателя изображений) можно привязать события по нажатию кнопки? Больше похоже что он работает как обычный индикатор, а не переключатель

У обычных переключателей тоже нет вкладки InputConfiguration. События можно создать в коде, контролируя значение переменной, привязанной к переключателю. Или я не понял вопроса?

tegs
17.04.2018, 08:50
У обычных переключателей тоже нет вкладки InputConfiguration. События можно создать в коде, контролируя значение переменной, привязанной к переключателю. Или я не понял вопроса?

Понял. Спасибо

vc_fly
23.04.2018, 09:49
Всем здравствуйте. Люди подскажите, как сделать в Codesys 3.5 автоматическое обновление экрана, потому что при закрытии окошка визуализации в основном экране появляются артефакты, после перехода на любой другой экран и возврат на основной они пропадают.

Ильнур Гибадуллин
23.04.2018, 10:18
Всем здравствуйте. Люди подскажите, как сделать в Codesys 3.5 автоматическое обновление экрана, потому что при закрытии окошка визуализации в основном экране появляются артефакты, после перехода на любой другой экран и возврат на основной они пропадают.

Здравствуйте! Можете приложить скриншоты артефактов на экране?

vc_fly
23.04.2018, 11:56
368143681536816
На третьем в верхнем левом углу остался артефакт.

Ильнур Гибадуллин
23.04.2018, 12:48
368143681536816
На третьем в верхнем левом углу остался артефакт.

Проблема в самом проекте. Некорректно реализован вызов диалогового окна (или фрейма).

vc_fly
23.04.2018, 13:31
Как его тогда корректно реализовать? Сейчас мы нажимаем на элемент требующий изменения и переводим его переменную в 1, и эта переменная выводит из невидимости фрейм, нажимая нижнюю кнопку закрыть мы сбрасываем эту переменную в 0 - фрейм становится невидимый. Если мы выходим из этого экрана в основной и снова в него заходим - артефакт пропадает.

Ильнур Гибадуллин
23.04.2018, 14:34
Как его тогда корректно реализовать? Сейчас мы нажимаем на элемент требующий изменения и переводим его переменную в 1, и эта переменная выводит из невидимости фрейм, нажимая нижнюю кнопку закрыть мы сбрасываем эту переменную в 0 - фрейм становится невидимый. Если мы выходим из этого экрана в основной и снова в него заходим - артефакт пропадает.

Без Вашего проекта сложно понять, как у Вас реализованы фреймы. Можете, пожалуйста, прислать проект на support@owen.ru?

Andrew_Stranger
11.05.2018, 14:57
Подскажите почему не обновляется ФБ(входы, выходы) после изменения? В Codesys 2.3 таких проблем нет.

Зинько Владислав
11.05.2018, 15:15
Подскажите почему не обновляется ФБ(входы, выходы) после изменения? В Codesys 2.3 таких проблем нет.

Добрый день!

Вы изменяете код внутри ФБ?
Или состояние входов блока?

Andrew_Stranger
11.05.2018, 15:37
Добрый день. Изменяю код внутри ФБ, добавляю, удаляю входы, изменяю название входов.

Евгений Кислов
11.05.2018, 17:33
Добрый день. ФБ используется в CFC-программе, наверное? Тогда ПКМ на блок - Контакты (Pins) - Сброс контактов (Reset Pins).

Dmitro
13.05.2018, 08:19
1 Написал проект для СПК110 прошивка 3.Х.
2 Потом перешил СПК110 на 5.Х,
3 Соответственно в Codesys удалил "пакеты" для прошивки 3.Х
"Библиотеки ОВЕН 3.5.4.3",
"Target-файлы СПК 3.5.4.20"
4 Установил "пакеты" для прошивки 5.Х:
"Библиотеки ОВЕН 3.5.4.8",
"Target-файлы СПК 3.5.4.26".

5 Остались нетронутыми "пакеты"
"REPOSITORY OWEN SPK 3.5.4.20",
"Модули ввода-вывода компании ОВЕН 3.5.4.5"

6 После чего на моем компе появлялись ошибки что в "Менеджере библиотек"
библиотека ModulsOwenLib 3.5.4.2 использует библиотеку Standard 3.5.2.0. и не может ее найти.

7 Через десяток перезапусков Codesys в режиме Администратора, повторных переустановок библиотек, и пр. танцев с бубнов, ошибка ушла.

8 Начал на удаленной системе делать тоже самое, чтобы залить там проект с новой прошивкой в контроллер.
Опять беда с "Standard 3.5.2.0" (отсутствует). Все кнопки типа "скачать с сайта Кодесис", "обновить", "удалить" не работают.

9 В итоге скомпилировал и залил проект с ошибкой.
Производство ответственное, будет очень болезненно, если эта "библиотека" где-то вылезет и контроллер заглючит.

Где взять эту "Standard 3.5.2.0" для "ModulOwenLibs 3.5.4.2"?
Можно ли ее хотя бы вручную как-то откуда-то "выдрать" и вручную прилепить к системе?

Евгений Кислов
13.05.2018, 09:03
1 Написал проект для СПК110 прошивка 3.Х.
Где взять эту "Standard 3.5.2.0" для "ModulOwenLibs 3.5.4.2"?

Установить CODESYS Repository Archive V3.5 SP4 (ссылка в подписи).

mandrew
15.05.2018, 16:09
Всем добрый день.
Подскажите что за ошибка в проекте после компиляции появляется на операторе SEL.
В программе до этого шага операторы SEL используются (5 шт),на них компилятор не ругается...

Евгений Кислов
15.05.2018, 17:43
А можно скрин, на котором еще видно элемент 476?

mandrew
16.05.2018, 08:58
Спасибо,разобрался на выходе SEL не было объявлено переменной....

Максим95
19.05.2018, 19:36
Мужики,выручайте.Работаю CODESYS V3.5.
Очень нужен пример вызова подпрограммы POU:

PROGRAM POU
VAR
RUND: OSCAT_BASIC.GEN_RDM;
Q: BOOL;
temp_real: REAL;
END_VAR
37330



в основную программу PLC_PRG:

PROGRAM PLC_PRG
VAR
temp_real: REAL;//температура помещения с датчика
temp_max: REAL:=23; // верхний предел температуры
temp_min: REAL:=16; //нижний предел температуры
temp_error: BOOL:=0;
vlag_real: REAL; //влажность помещения
vlag_max: REAL:=70; //максимальная допустимая влажность
vlag_min: REAL:=30; //минимальная допустимая влажность
vlag_error: BOOL:=0;
IF (temp_max<temp_real)OR(temp_min>temp_real)
THEN temp_error:=1;
ELSIF (temp_max>=temp_real)OR(temp_min<=temp_real)
THEN temp_error:=0;
END_IF
IF (vlag_max<vlag_real)OR(vlag_min>vlag_real)
THEN vlag_error:=1;
ELSIF (vlag_max>=vlag_real)OR(vlag_min<=vlag_real)
THEN vlag_error:=0;
END_IF
END_VAR
37331

Да,информации много.Но нет конкретного примера.

capzap
19.05.2018, 19:43
в чем трудность то

Максим95
19.05.2018, 19:47
в чем трудность то

Надо сделать модель(т.е.не буду подключать к контроллеру) системы контроля за климатическим состоянием склада.
Измеряемые параметры: Температура и влажность.
Их буду рандомно(на определенных интервалах) получать из подпрограммы, которую представил.

Как взять из подпрограммы переменную?Как правильно объявить её в основной?

capzap
19.05.2018, 19:53
имя_программы.имя_переменной - это взять
чтоб программа работала в PLC_PRG выполнить имя_программы()

Максим95
19.05.2018, 20:05
имя_программы.имя_переменной - это взять
чтоб программа работала в PLC_PRG выполнить имя_программы()

37332
Писал так,но выходит ошибка.
Причем, при задании переменной: POU.temp_real: REAL; - все хорошо.

Вероятнее всего,задаю глупые вопросы, но в тема "примеры программ и полезности" при скачивании тех материалов, которые мне нужны,выдает черный экран.

capzap
19.05.2018, 20:51
вот прямо в окне объявлений надо вызывать ПОУ? Кто этому Вас научил, для исполнения кода для этого есть специально отведенное окно

Максим95
19.05.2018, 21:02
вот прямо в окне объявлений надо вызывать ПОУ? Кто этому Вас научил, для исполнения кода для этого есть специально отведенное окно

Да никто не учил.Перед фактом поставили,что пишу дипломную в этой программе.Вот и сижу разгребаю).
Спасибо,пошло дело)

Максим95
25.05.2018, 17:37
Всем привет.Разбираюсь с записью в файл и прошу не судить строго мои знания в КДС заранее.
Не могу понять, куда записывается информация37449
(если прокрутить дальше,то можно увидеть,что файл пишется с 21.05 по сегодняшний день),

если в AlarmStorage ничего не прописано37450.

Да,понимаю,что в какую-то директорию "по умолчанию",но где она.
И как прописать в программе, чтобы изменить директорию на тот файл, который мне надо.

Когда прописываю это просто в Субдиретории37451,
то программа ругается 37452 37453и говорит,что надо код писать,а я дуб дубом в этом.

Евгений Кислов
25.05.2018, 17:55
Добрый день. Какая у вас версия виртуального контроллера? (Device - Информация)

Максим95
25.05.2018, 18:25
Добрый день. Какая у вас версия виртуального контроллера? (Device - Информация)

Версия виртуального контроллера:3.5.10.0 37456

Версия КДС: COSESYS V3.5 SP10+

Евгений Кислов
25.05.2018, 18:27
Тогда путь по умолчанию будет такой:

<папка установки CODESYS>\GatewayPLC\PlcLogic\alarms

Максим95
25.05.2018, 18:49
Тогда путь по умолчанию будет такой:

<папка установки CODESYS>\GatewayPLC\PlcLogic\alarms

Спасибо большое,нашёл,это действительно то,что надо(дата изменения меняется+файл увеличивается).
Но проблемаего не открыть/не проверить.
Не подскажете, как можно изменить данную субдиректорию на другую+организовать его в файле txt.

Евгений Кислов
25.05.2018, 18:59
1. Про изменение пути см. здесь:
https://forum.codesys.com/viewtopic.php?t=6391
Там речь о настройках конфиг-файла (CODESYSControl.cfg в папке GatewayPLC)


2. Насчет txt - насколько помню, в SP10 уже можно при подключении к контроллеру нажать ПКМ на AlarmManager и экспортировать историю тревог в .csv файл.
Ну а дальше пересохранить его как .txt

Ну или можно скачать какую-нибудь программу для просмотра sqlite.
Я использую эту:
https://sqlitestudio.pl/

Я правильно понимаю, что вы планируете использовать проект именно на виртуальном контроллере? (а не на одном из контроллеров Овен)

Максим95
25.05.2018, 19:06
1. Про изменение пути см. здесь:
https://forum.codesys.com/viewtopic.php?t=6391
Там речь о настройках конфиг-файла (CODESYSControl.cfg в папке GatewayPLC)


2. Насчет txt - насколько помню, в SP10 уже можно при подключении к контроллеру нажать ПКМ на AlarmManager и экспортировать историю тревог в .csv файл.
Ну а дальше пересохранить его как .txt

Ну или можно скачать какую-нибудь программу для просмотра sqlite.
Я использую эту:
https://sqlitestudio.pl/

Я правильно понимаю, что вы планируете использовать проект именно на виртуальном контроллере? (а не на одном из контроллеров Овен)

Спасибо большое,буду пробовать.
Да, Вы правильно поняли.

Максим95
26.05.2018, 19:15
Всем привет.И снова я. Помощь нужна от вас спецов,мужики.
Планирую использовать проект именно на виртуальном контроллере(а не на одном из контроллеров Овен).

Задача:
Считывать значения с датчика температуры и выдавать значения на экран,а также организовать журнал аварий, если произойдет выход за заданный диапазон температуры.

Решение:
Реализовал ФБ рандомных значений в определенных пределах(Аналог датчика температуры).С журналом аварий тоже все решено.

Вопрос:
Возможно ли реализовать программу с предположением, что у нас будет типология Modbus, Master-Slave, проводная, с m-количеством датчиков. Т.е. реально ли настроить обмен по Modbus на виртуальном контроллере, связав значения ФБ датчика температуры с компонентами Modbus?

Версия КДС: COSESYS V3.5 SP10+
Версия виртуального контроллера:3.5.10.0

Евгений Кислов
26.05.2018, 19:50
Да, реально. Виртуальный контроллер - это не какой-то симулятор.
Это полнофункциональная среда исполнения для ПК - с поддержкой обмена, работы с файлами, веб-визуализацией и т.д.

Но надо отметить, что в состав дистрибутива входит триальная версия с ограничением на время работы (2 часа).
Если нужно непрерывное исполнение - то надо приобретать лицензию.
https://store.codesys.com/codesys-control-win-sl.html

Ну, или писать скрипт для периодического перезапуска процесса CODESYS.

Максим95
26.05.2018, 20:02
Да, реально. Виртуальный контроллер - это не какой-то симулятор.
Это полнофункциональная среда исполнения для ПК - с поддержкой обмена, работы с файлами, веб-визуализацией и т.д.

Но надо отметить, что в состав дистрибутива входит триальная версия с ограничением на время работы (2 часа).
Если нужно непрерывное исполнение - то надо либо приобретать лицензию, либо писать скрипт для перезапуска процесса CODESYS.

Спасибо за ответ,не первый раз выручаете.
Дипломный руководитель написал буквально минут 10 назад,что проект будет проходить проверку на
ПЛК110-60,откуда следует,что придется писать качественную программу.

Созрел вопрос:
Данная версия КДС(V3.5 SP10+) подходит для ПЛК110-60 или же стоит выбрать другую версию ПО?
(Спрашиваю,т.к. бродя по форуму, видел, что для некоторых ПЛК лучше выбирать V3.5 SP5 Patch 5)

Евгений Кислов
26.05.2018, 20:10
Нет, не подходит.
ПЛК110 программируется в среде CoDeSys 2.3.
Она, в общем-то, довольно сильно отличается от 3.5.
Материалы есть здесь:
http://www.owen.ru/catalog/codesys_v2/opisanie
http://www.owen.ru/catalog/programmiruemij_logicheskij_kontroller_oven_plk110/76168553

И обратите внимание - для CoDeSys 2.3 у нас отдельный раздел на форуме.

Максим95
26.05.2018, 20:17
Нет, не подходит.
ПЛК110 программируется в среде CoDeSys 2.3.
Она, в общем-то, довольно сильно отличается от 3.5.
Материалы есть здесь:
http://www.owen.ru/catalog/codesys_v2/opisanie
http://www.owen.ru/catalog/programmiruemij_logicheskij_kontroller_oven_plk110/76168553

И обратите внимание - для CoDeSys 2.3 у нас отдельный раздел на форуме.

Пфф...Это другое ПО качать.А я там такую визуалку запилил уже...
Хорошо,понял.Спасибо большое!

Евгений Кислов
26.05.2018, 20:24
В принципе, можете предложить преподавателю вариант, при котором алгоритмы будут выполняться в ПЛК, а он уже будет отдавать данные на ПК с CODESYS Control Win V3 для визуализации.

Максим95
31.05.2018, 03:17
Всем привет!Помогите, мужики!
Как можно записывать в файл на PC текущие значения нескольких переменных, а потом открыть его и посмотреть при необходимости?
Как это сделать в CoDeSys 3.5?Есть у кого-нибудь пример?
Пример: 37498

Евгений Кислов
31.05.2018, 06:48
Всем привет!Помогите, мужики!
Как можно записывать в файл на PC текущие значения нескольких переменных, а потом открыть его и посмотреть при необходимости?
Как это сделать в CoDeSys 3.5?Есть у кого-нибудь пример?
Пример: 37498

См. документ СПК. Архивация. Там описан принцип работы с библиотекой CAA File.
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Archives_v.1.0.pdf

Максим95
31.05.2018, 19:35
См. документ СПК. Архивация. Там описан принцип работы с библиотекой CAA File.
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Archives_v.1.0.pdf

Спасибо за ответ!
Посмотрел пример работы с библиотекой CAA File, но он подразумевает запуск на СПК207.03-CS(-WEB)37510
Так вот узел Drives, который используется для получения информации о памяти СПК и накопителей мне недоступен, так как я использую виртуальный контроллер.Как быть в этом случае?

Евгений Кислов
31.05.2018, 20:04
Использовать библиотеку SysProcess (насколько помню, еще надо править CODESYSControl.cfg).
Вот пример, как считать температуру CPU (зарегистрируйтесь там, чтобы видеть скриншоты и ссылки):
https://forum.codesys.com/viewtopic.php?t=6238

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

Максим95
31.05.2018, 20:05
Использовать библиотеку SysProcess (насколько помню, еще надо править CODESYSControl.cfg).
Вот пример, как считать температуру CPU (зарегистрируйтесь там, чтобы видеть скриншоты и ссылки):
https://forum.codesys.com/viewtopic.php?t=6238

Благодарю!Буду смотреть и разбираться)

Евгений Кислов
31.05.2018, 20:07
Все же уточню - вам точно это надо? Если нет - вы можете вырезать из примера этот кусок (c определением объемов), и он спокойно запустится на виртуальнике.

Максим95
31.05.2018, 20:19
Все же уточню - вам точно это надо? Если нет - вы можете вырезать из примера этот кусок (c определением объемов), и он спокойно запустится на виртуальнике.

Сразу, не увидел.Нет,мне просто надо реализовать запись в файл каким-либо образом, кручусь,верчусь,но стою на месте пока.
Хорошо,если можно без них, тогда продолжу по примеру просто.Спасибо!

capzap
31.05.2018, 20:26
использую виртуальный контроллер.Как быть в этом случае?

http://www.owen.ru/forum/showthread.php?t=17003&p=141820&viewfull=1#post141820

Максим95
01.06.2018, 02:17
http://www.owen.ru/forum/showthread.php?t=17003&p=141820&viewfull=1#post141820

Добрый вечер.Вы эту программу имеете ввиду?37511

Максим95
01.06.2018, 02:32
См. документ СПК. Архивация. Там описан принцип работы с библиотекой CAA File.
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Archives_v.1.0.pdf

Как можно изменить путь к выбранному каталогу?

Евгений Кислов
01.06.2018, 06:59
Как можно изменить путь к выбранному каталогу?

В рамках примера пути прописаны в функции DEVICE_PATH.

Вообще, большинство ФБ библиотеки получают в качестве аргумента значение типа STRING, в котором и содержится нужный путь.

Максим95
01.06.2018, 23:07
В рамках примера пути прописаны в функции DEVICE_PATH.

Вообще, большинство ФБ библиотеки получают в качестве аргумента значение типа STRING, в котором и содержится нужный путь.

Здравствуйте. Да,смотрел пример,который вы мне посоветовали,находил пути в DEVICE_PATH.Но как поменять их на обычный, стандартный путь G:\(флэшка, вставленная в обычный вход USB 2.0)
Перепробовал некоторые комбинации задания(G: , /G:/ , /G:\ /...), , но в бестолку. Следует прописать это как-то в CODESYSControl.cfg?

Евгений Кислов
01.06.2018, 23:27
Нет, в конфиг файле ничего прописывать не надо.
Какие значения на выходах eError у блоков создания/записи в файл?

Максим95
02.06.2018, 00:11
Нет, в конфиг файле ничего прописывать не надо.
Какие значения на выходах eError у блоков создания/записи в файл?

Не знаю,как это работает,но после того, как вы задали этот вопрос, стал все проверять и,ничего не меняя,все...заработало :eek:
Буду разбираться дальше.Спасибо!

Максим95
03.06.2018, 19:38
Добрый вечер,мужики!Хелп!
По нажатию на кнопку записать 37531, записываю в файл значение.
Но мне надо реализовать постоянную запись с заданным периодом.
Для этого использую следующий 37532 таймер.

Вопрос:
Почему нельзя взять переменную,заданную в ФБ StringFileExample?Выдает такую ошибку37533

Евгений Кислов
03.06.2018, 19:50
Потому что переменная xWrite - локальная.
StringFileExample_PRG - это программа, а не ФБ.

Вызывайте таймер прямо там.

Максим95
03.06.2018, 19:51
Потому что переменная xWrite - локальная.
StringFileExample_PRG - это программа, а не ФБ.

Вызывайте таймер прямо там.
Считает.
Но код правильный?
b:=TRUE;
IF tp1.Q THEN
b:=FALSE; // обеспечит перезапуск таймера(его циклическую работу)
END_IF
TP1(IN := b, PT:= T#5S); //запустим таймер
IF tp1.Q THEN
xWrite:=TRUE;
END_IF
Такое ощущение, что Q не выходит в 1 из-за перезапуска таймера

Евгений Кислов
03.06.2018, 20:09
Ваш код не будет работать, т.к. Q активируется на 1 цикл. В следующем цикле вы его не увидите, b не сбросится.

Можно так:



IF xEnable THEN
tp1(IN:=NOT(tp1.Q), PT:=T#5s);
ELSE
tp1(IN:=FALSE);
END_IF

xWrite := tp1.q;


xEnable - переменная для кнопки "Запустить архивацию".
Если не нужна (т.е. архивация автоматически стартует при запуске приложения и никогда не останавливается) - то можно убрать.

Максим95
03.06.2018, 20:33
Ваш код не будет работать, т.к. Q активируется на 1 цикл. В следующем цикле вы его не увидите, b не сбросится.

Можно так:



IF xEnable THEN
tp1(IN:=NOT(tp1.Q), PT:=T#5s);
ELSE
tp1(IN:=FALSE);
END_IF

xWrite := tp1.q;


xEnable - переменная для кнопки "Запустить архивацию".
Если не нужна (т.е. архивация автоматически стартует при запуске приложения и никогда не останавливается) - то можно убрать.

Благодарю!Всё заработало!

Максим95
04.06.2018, 15:51
Мужики,всем привет.Хелп.
В коде ничего не менял. Добавил визуализацию из другого проекта,сделал фон(короче,картинку лучше сделал и только,остальное осталось тем,чем и было).
В итоге получилось так:37546
Но ПРОБЛЕМА:37547, когда обновляются данные, некоторые окна почему-то накладываются друг на друга,а должно, по идее, обновляться просто.
Соответственно,чем дальше,тем хуже37548
С визуализацией и до этого работал,но такой баг первый раз встречаю.В чем проблема?Подскажите!

Евгений Кислов
04.06.2018, 18:41
Проект, выложите, пожалуйста.

Максим95
04.06.2018, 19:38
Проект, выложите, пожалуйста.

Папка "запись в файл" - этот проект.

Евгений Кислов
04.06.2018, 20:21
На ваших полях вывода (которые лазурные) - Цвета/Нормальное состояние/Цвет фрейма/Прозрачность.
Ставьте 255 (сейчас там 50). Тоже самое для Цвет заливки (сейчас там 100).

Максим95
04.06.2018, 20:45
На ваших полях вывода (которые лазурные) - Цвета/Нормальное состояние/Цвет фрейма/Прозрачность.
Ставьте 255 (сейчас там 50). Тоже самое для Цвет заливки (сейчас там 100).

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

AlexF
07.06.2018, 10:31
Здравствуйте.
Может ли кто-нибудь подкинуть ссылку на документацию CS3, где было бы описано внутреннее устройство CS.
Интересуют такие вопросы как:
- как выполняется планирование задач,
- есть ли прерывания,
- как правильно осуществить передачу данных между задачами,
- и т.д.

Евгений Кислов
07.06.2018, 10:56
Подобная информация должна быть в CODESYSControlV3_Manual.

Еще часть вопросов, вероятно, будет в будущем (обещают в течение лета) разобрана здесь (https://help.codesys.com/webapp/advanced;product=LibDevSummary;version=3.5.12.0).

Эдуард_Н
07.06.2018, 16:38
Где можно посмотреть какие есть CODESYS Repository Archive?

Евгений Кислов
07.06.2018, 17:16
Тот, на который ссылка в моей подписи - последний. С тех пор 3S перестала их выпускать.

Эдуард_Н
07.06.2018, 17:23
Тот, на который ссылка в моей подписи - последний. С тех пор 3S перестала их выпускать.

Почему перестала выпускать? В новых версиях КДС информация о старых сразу заложена?

Евгений Кислов
07.06.2018, 17:25
Нет. Просто где-то с SP4 появилась возможность загрузки недостающих библиотек с серверов 3S (кнопка Download missing libraries в Менеджере библиотек).
Но, по моим ощущениям, она помогает не в 100% случаев.

Эдуард_Н
07.06.2018, 17:29
Вот-вот можно ли установить только СП7П4 и CODESYS Repository Archive V3.5 SP4 и больше ни о чём не беспокоится?

Евгений Кислов
07.06.2018, 17:32
Да, можно.

Dmitro
10.06.2018, 09:28
В FAQ не нашел...

1 Как настроить "Конфигурация задач / VISU_TASK" для максимальной производительности?
Клиент жалуется на плохую отзывчивость панели.
"Интервал визуализации" стоял "от фонаря" 100мкс, 150мкс...
Посмотреть в мониторе процессов среднее время цикла и выставить в 5 раз больше?

2 В "Visualization Manager" поставил 200мс...
Есть рекомендации на этот интервал?

3 В "Device/SPK1xx/Установки ПЛК" есть пункт с галочкой (снята)
"Обновить I/O во время простоя" и конкретизация как именно внизу.

4 3 В "Device/SPK1xx/Установки ПЛК" есть пункт "Задача цикла шины"
где можно выбрать "не задано" или какую-то задачу.

Заранее спасибо.
И хорошо бы в FAQ внести.

Евгений Кислов
13.06.2018, 08:14
Добрый день.



1 Как настроить "Конфигурация задач / VISU_TASK" для максимальной производительности?
Клиент жалуется на плохую отзывчивость панели.
"Интервал визуализации" стоял "от фонаря" 100мкс, 150мкс...
Посмотреть в мониторе процессов среднее время цикла и выставить в 5 раз больше?


Достаточно выставить с запасом в 25%.



2 В "Visualization Manager" поставил 200мс...
Есть рекомендации на этот интервал?


Рекомендация - чтобы он совпадал с циклом VISU_TASK.



3 В "Device/SPK1xx/Установки ПЛК" есть пункт с галочкой (снята)
"Обновить I/O во время простоя" и конкретизация как именно внизу.

4 3 В "Device/SPK1xx/Установки ПЛК" есть пункт "Задача цикла шины"
где можно выбрать "не задано" или какую-то задачу.

Эти пункты связаны с обменом, а не с визуализацией. В целом, в большинстве случаев рекомендуется оставить их в значениях по умолчанию.

Yaroslav_22
14.06.2018, 07:33
Здравствуйте.

CS 3.5 SP7 pach4

1. Есть "нюанс" в отображении линий:
вот проект
37663
а вот что отображает панель
37664

Почему линиям нельзя смотреть в другую сторону?!?!

К сожалению не могу перейти на версию ниже, т.к. в проекте используется русская клавиатура, а она работает только с SP6 и выше.

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

Евгений Кислов
14.06.2018, 07:54
Добрый день.
Выложите ваш проект, пожалуйста (или отправьте мне на почту).

Yaroslav_22
14.06.2018, 08:05
Еще бывает при работе с объектами, стрелку мыши выбрасывает на верхнюю левую часть экрана, но с этим пока можно мерится, не часто но бывает

Евгений Кислов
14.06.2018, 08:33
1. Да, как оказалось, в SP7 действительно есть такой баг:

37667

Соответственно, придется либо отказаться от линий (использовав вместо них, например, изображения), либо чертить их, держа в уме этот эффект, либо перейти на SP6 или SP8.

2. Не увидел в вашем проекте чекбоксов. Возможно, проблема в стиле визуализации. Поставьте в Менеджере визуализации Выбранный стиль: нет.

Yaroslav_22
14.06.2018, 09:35
Извиняюсь, запутался сам в версиях своего же проекта))

в итоге чек бок отображается в визуализации, а на панели нет


з.ы. Поставил дефолтовый стиль - чек бок появился, а картинки из библиотеки "СИМВОЛЫ" так и не появились, ну ладно, пока это не самая страшная болезнь CS)

есть еще сервис пак 11 и 12 - стоит устанавливать их?

Евгений Кислов
14.06.2018, 09:44
есть еще сервис пак 11 и 12 - стоит устанавливать их?

Я бы не рекомендовал, эти версии довольно далеки от текущих прошивок СПК.

Yaroslav_22
14.06.2018, 14:00
3767337674
установил SP8 теперь программа вообще не заливается
(версия таргета 3.5.4.0)

Евгений Кислов
14.06.2018, 14:05
Попробуйте в Менеджере библиотек через заполнители версию библиотеки CmpCodeMeter уменьшить.

Yaroslav_22
14.06.2018, 14:26
в общем сам не понял, что сделал, но так заработало 37675 и проблема с чекбокосом и отображением линий исчезли.

изначально эта библиотека вообще не стояла

Yaroslav_22
15.06.2018, 13:35
Здравствуйте.

Установив SP8, после перезагрузки вывалилась такая ошибка
37701

з.ы. переустановил CS, заработало

Yaroslav_22
18.06.2018, 07:24
как можно вытянуть из СПК207 дату и время, через ФБ RTC или есть "специально обученные" системные переменные?

Евгений Кислов
18.06.2018, 07:29
как можно вытянуть из СПК207 дату и время, через ФБ RTC или есть "специально обученные" системные переменные?

Системных переменных нет. ФБ RTC нужен для отсчета времени на системах без встроенных часов.

В вашем случае нужно использовать библиотеку CAA DTUtil - см. документ СПК. Системное время.

Максим95
21.06.2018, 04:15
Закончил писать дипломную работу на кдс и хочу выразить благодарность всем,кто оказал мне помощь!Спасибо вам!А это я скажу на защите диплома:
37755

Евгений Кислов
21.06.2018, 14:40
Закончил писать дипломную работу на кдс и хочу выразить благодарность всем,кто оказал мне помощь!Спасибо вам!А это я скажу на защите диплома:
37755

Удачи на защите.
Но, следует отметить, CODESYS - это не отечественное ПО, а мы (Овен) - не его разработчики.
Разработчик - 3S-Smart Software Solutions GmbH (Германия).
Мы только выпускаем контроллеры, в которые встроена среда исполнения CODESYS.

Dmitro
26.06.2018, 06:51
Есть такое фрагмент кода

IF PExtAuto THEN
PExtTimer(IN:=coolingRequired, pt:=T#1S);
PExt:=PExtTimer.Q;
END_IF

То есть задержка на включение PExt, на выключение - нет задержки.
Есть жалоба, что после суток-двое PExt перестает включаться без причин.
Корректно ли написано, может по таймеру есть какие-то особенности?

capzap
26.06.2018, 07:39
Есть такое фрагмент кода

IF PExtAuto THEN
PExtTimer(IN:=coolingRequired, pt:=T#1S);
PExt:=PExtTimer.Q;
END_IF

То есть задержка на включение PExt, на выключение - нет задержки.
Есть жалоба, что после суток-двое PExt перестает включаться без причин.
Корректно ли написано, может по таймеру есть какие-то особенности?
Особенность одна, таймер не будет работать если условие не выполняется

Dmitro
26.06.2018, 08:06
Особенность одна, таймер не будет работать если условие не выполняется

Эксплуатант утверждает, что условия выполняются (PGExtAuto=true, coolingRequired=true), а вот PGExt не включается...

capzap
26.06.2018, 08:16
Так дело же не в заказчике, выведите таймер из тела условия и её мешало бы поставить счётчик, меняет ли coolingRequired свои состояния

Dmitro
26.06.2018, 12:41
Так дело же не в заказчике, выведите таймер из тела условия и её мешало бы поставить счётчик, меняет ли coolingRequired свои состояния

То есть код сделать таким?

БЫЛО
IF PExtAuto THEN
PExtTimer(IN:=coolingRequired, pt:=T#1S);
PExt:=PExtTimer.Q;
END_IF

СТАЛО
PExtTimer(IN:=(PExtAuto and coolingRequired), pt:=T#1S);
PExt:=PExtTimer.Q;

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

Зинько Владислав
26.06.2018, 15:51
Зачем выводить из условия? Операция сравнения бита же быстрее чем прогонка таймера.

При работе с условиями:
если PExtAuto сбросится, то таймер не будет вызываться и при следующем заходе под условие он не начнет счет заново, а продолжит с того момента, где он был (это верно, если coolingRequired не сбросится в FALSE);

так же, присвоение результата работы таймера переменной PExt будет производится только в том случае, если переменная PExtAuto будет в TRUE, т.е. происходит только в момент входа под условие;



Запуская таймер без условия Ваш таймер перезапустится, если PExtAuto или coolingRequired будут в FALSE и, соответственно, сбросится значение переменной PExtAuto.

Dmitro
27.06.2018, 11:06
Спасибо за подробные обьяснения Владислав, capzap.

Если оставлю условие на таймер,
- худшее, что может быть, это мгновенное его срабатывание (т.к. в таймере осталось какое-то старое число в счетчике). Это не проблема.

Гипотетически может ли быть операция переполнения таймера, когда вместо секунды, он будет считать сверхбольшое время?
Эксплуатант говорит через сутки-двое перестает устанавливаться переменная.
Хотел бы до конца осознать...

Зинько Владислав
27.06.2018, 12:04
Если оставлю условие на таймер,
- худшее, что может быть, это мгновенное его срабатывание (т.к. в таймере осталось какое-то старое число в счетчике). Это не проблема.

Не стоит забывать, что если таймер сработал, и переменная PExtAuto перешла в FALSE в след. цикле, то выход таймера не сбросится в FALSE, а останется в состоянии TRUE.


Гипотетически может ли быть операция переполнения таймера, когда вместо секунды, он будет считать сверхбольшое время?

Нет. Если он получает на вход 1 секунду и только ее, то и считать он будет только секунду.



Эксплуатант говорит через сутки-двое перестает устанавливаться переменная.
Хотел бы до конца осознать...

Здесь имеется в виду, что не отрабатывает таймер?

Dmitro
27.06.2018, 13:30
Не стоит забывать, что если таймер сработал, и переменная PExtAuto перешла в FALSE в след. цикле, то выход таймера не сбросится в FALSE, а останется в состоянии TRUE.

Так и надо. При отключении АВТО режима, переменная должна остаться в прежнем состоянии, не сбрасываться.



Здесь имеется в виду, что не отрабатывает таймер?

"Через сутки-двое" не включает PExt при наличии всех условий (не отрабатывает таймер)... Со слов эксплуататора конечно, что он там жмет и делает непонятно. Но логика таймера должна срабатывать при любых предшествующих действиях.

Поменять
IF PExtAuto THEN
PExtTimer(IN:=coolingRequired, pt:=T#1S);
PExt:=PExtTimer.Q;
END_IF

на

PExtTimer(IN:=(PExtAuto and coolingRequired), pt:=T#1S);
PExt:=PExtTimer.Q;

не могу.

Нужно, чтобы при отсутствии PExtAuto (ручной режим), PExt продолжал включаться с кнопки независимо, а крайний вариант всегда будет его выключать...

Надеюсь понятно написал)

capzap
27.06.2018, 18:23
В условии может просто оперировать входами таймера, а не использовать сам таймер

dr_alf
10.07.2018, 12:23
Есть число 251. Как программе указать чтобы она читала только единицы, десятки и сотни.
Т.е на выходе функции должно получиться три числа записанные в разные переменные: 2, 5 и 1.

Евгений Кислов
10.07.2018, 12:46
Есть число 251. Как программе указать чтобы она читала только единицы, десятки и сотни.
Т.е на выходе функции должно получиться три числа записанные в разные переменные: 2, 5 и 1.

Например, так:



FUNCTION_BLOCK EXTRACT_DIGITS
VAR_INPUT
uiInput: UINT;
END_VAR
VAR_OUTPUT
uiHundreds: UINT;
uiTens: UINT;
uiOnes: UINT;
END_VAR
VAR
END_VAR


uiHundreds := uiInput / 100;
uiTens := (uiInput MOD 100) / 10;
uiOnes := uiInput - uiHundreds * 100 - uiTens * 10;


37970

dr_alf
10.07.2018, 14:36
Благодарю, работает как нужно.

Zyr
11.07.2018, 11:52
Да, реально. Виртуальный контроллер - это не какой-то симулятор.
Это полнофункциональная среда исполнения для ПК - с поддержкой обмена, работы с файлами, веб-визуализацией и т.д.

Но надо отметить, что в состав дистрибутива входит триальная версия с ограничением на время работы (2 часа).
Если нужно непрерывное исполнение - то надо приобретать лицензию.
https://store.codesys.com/codesys-control-win-sl.html

Ну, или писать скрипт для периодического перезапуска процесса CODESYS.

Добрый день!
Цена лицензии по этой ссылке 420 евро, блин...
Подскажите, пжлст, есть что попроще и подешевле?
Сам скрипты не пишу, но готов купить.
Спасибо.

Евгений Кислов
11.07.2018, 11:54
Добрый день.
Вы точно уверены, что вам нужен непрерывно действующий soft-PLC?
Какие задачи вам необходимо решить?

Эдуард_Н
12.07.2018, 04:02
Например, так:



FUNCTION_BLOCK EXTRACT_DIGITS
VAR_INPUT
uiInput: UINT;
END_VAR
VAR_OUTPUT
uiHundreds: UINT;
uiTens: UINT;
uiOnes: UINT;
END_VAR
VAR
END_VAR


uiHundreds := uiInput / 100;
uiTens := (uiInput MOD 100) / 10;
uiOnes := uiInput - uiHundreds * 100 - uiTens * 10;


37970

Что такое "MOD"?

Евгений Кислов
12.07.2018, 06:43
Деление с остатком.

andron7
16.07.2018, 16:16
Добрый день!
Подключаю библиотеку OSCAT Basic, в менеджере библиотек нужную функцию (FUNCTION _ARRAY_MEDIAN : REAL) вижу.
В программе при создании экземпляра функции её нет.
Что не так делаю?
Спасибо.

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

Можете продемонстрировать скриншотами, как вы добавляете функцию?

andron7
16.07.2018, 18:41
Добрый день.

Можете продемонстрировать скриншотами, как вы добавляете функцию?

Спасибо за поддержку.
Сегодня весь день кривой. Разобрался - надо писать вызов полностью : OSCAT_BASIC._ARRAY_MEDIAN(pt, 8);
Так работает.

Пьер
17.07.2018, 09:32
Спасибо за поддержку.
Сегодня весь день кривой. Разобрался - надо писать вызов полностью : OSCAT_BASIC._ARRAY_MEDIAN(pt, 8);
Так работает.

Почему, кстати, где то надо полностью прописывать путь, а где достаточно просто обозначить функцию?

Осинский Алексей
17.07.2018, 12:08
Почему, кстати, где то надо полностью прописывать путь, а где достаточно просто обозначить функцию?

По хорошему лучше всегда использовать "путь к функции" (т.е. область ее видимости). Но это не обязательно.
Это может требоваться если:
1) Так указал разработчик библиотеки (как раз в OSCAT BASIC так и сделано);
2) POU с аналогичным именем уже есть в другой библиотеке и компилятор не понимает, к какому из них вы пытаетесь обратиться.

Можно настроить среду разработки так, чтобы она сама подставляла область видимости к имени POU.
Для этого зайдите в меню Tool -> Options -> Smart coding и установите галочку Insert with namespace.

Пьер
17.07.2018, 12:11
По хорошему лучше всегда использовать "путь к функции" (т.е. область ее видимости). Но это не обязательно.
Это может требоваться если:
1) Так указал разработчик библиотеки (как раз в OSCAT BASIC так и сделано);
2) POU с аналогичным именем уже есть в другой библиотеке и компилятор не понимает, к какому из них вы пытаетесь обратиться.

Можно настроить среду разработки так, чтобы она сама подставляла область видимости к имени POU.
Для этого зайдите в меню Tool -> Options -> Smart coding и установите галочку Insert with namespace.

Теперь понятно!

Zyr
18.07.2018, 07:01
Добрый день.
Вы точно уверены, что вам нужен непрерывно действующий soft-PLC?
Какие задачи вам необходимо решить?

Добрый день!
Комп управляет установкой, которая работает непрерывно до нескольких суток, а то и больше.
А тут каждые 2 часа отрубается все...

energvk
19.07.2018, 22:22
Добрый день! Возникли непонятные проблемы при управлении с визуализации.

На экране визуализации расположено несколько элементов:
38102

38103

Т.е. при OnMouseDown выполняется запись в переменную:
38105

38107

И при OnDialogClosed выполняется ST-код:
38104

38106

Для понимания указываю два диалога, но с остальными аналогично всё.

И если первым элементом всё работает прекрасно, то с остальными происходит что-то непонятное. OnMouseDown работает правильно, при нажатии на "ОК" происходит запись переменной, а вот при закрытии диалога dctulf выполняется ST-код первого элемента, т.е.:

Arg11 := 10;
Arg12 := REAL_TO_WORD(VISUAL_PRG.chgPressDay * 100);
Cmd1 := 2;

Вместо:

Arg11 := 11;
Arg12 := REAL_TO_WORD(VISUAL_PRG.chgPressNight * 100);
Cmd1 := 2;

и т.п.

Пробовал как на SP5, так и на SP7.

Я в лёгком замешательстве...

Евгений Кислов
20.07.2018, 06:37
Если выложите проект - поисследуем этот вопрос.
Желательно убрать оттуда все лишнее, оставив только несколько элементов визуализации и переменные, которые с ними связаны.

energvk
20.07.2018, 09:39
Если выложите проект - поисследуем этот вопрос.
Желательно убрать оттуда все лишнее, оставив только несколько элементов визуализации и переменные, которые с ними связаны.

Прикладываю проект. Вроде всё лишнее убрал.
38108

Евгений Кислов
20.07.2018, 13:18
В 3.5 SP11 Patch5 все работает корректно (это не значит, что я рекомендую переделать проект в нем).
Вероятно, это баг SP5/SP7 - в те времена действительно было несколько проблем с OnDialogClosed.
Если правильно помню, то какую-то из них около года назад также нашли именно вы.

energvk
20.07.2018, 14:50
Да, тоже я находил. А где достать SP11 patch5? И не будет ли проблем в работе СПК,если переделать проект на этой версии?

Евгений Кислов
20.07.2018, 14:53
Да, тоже я находил. А где достать SP11 patch5? И не будет ли проблем в работе СПК,если переделать проект на этой версии?

Я бы не рекомендовал в данный момент переделывать проект под SP11 Patch5 - это действительно может создать проблемы.
Лучше перенести код с OnDialogClosed в программу.

energvk
20.07.2018, 15:18
Я бы не рекомендовал в данный момент переделывать проект под SP11 Patch5 - это действительно может создать проблемы.
Лучше перенести код с OnDialogClosed в программу.

Так и было, но получается очень громоздко. Сравнение нового значения с изменившимся и т.п. Хотелось бы упростить

Yaroslav_22
02.08.2018, 13:18
Здравствуйте! Подскажите, что за проблема может быть
38236
До этого все загружалось, добавил один экран визуализации и одно POU, при компиляции ошибок не выдает

CS3.5 SP8
СПК207,03,WEB
Версия таргета 3.5.4.0

Евгений Кислов
02.08.2018, 13:42
Здравствуйте! Подскажите, что за проблема может быть
38236
До этого все загружалось, добавил один экран визуализации и одно POU, при компиляции ошибок не выдает

Добрый день.
Где-то произошло деление на 0. Вероятно - как раз в добавленном вами POU.

Yaroslav_22
02.08.2018, 13:50
Большое спасибо!
было деление на 0 (3 штуки)))

Yaroslav_22
03.08.2018, 06:49
Столкнулся с еще подобной проблемой, только теперь где то в визуализации, где можно поискать ошибку?
38258

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

Если так сделать при отладке на ПК, такого не происходит

Gribanin
25.08.2018, 15:34
Здравствуйте,подскажите пожалуйста, можно ли в визуализации вывести число типа WORD в формате хх.х . Ну например я получаю число 235 и хочу чтобы на экране СПК отобразилось число 23,5. Пробовал варианты типа %2.1d , %2.1i ... не помогает, выводит ххх без точки.

Евгений Кислов
25.08.2018, 16:14
Здравствуйте,подскажите пожалуйста, можно ли в визуализации вывести число типа WORD в формате хх.х . Ну например я получаю число 235 и хочу чтобы на экране СПК отобразилось число 23,5. Пробовал варианты типа %2.1d , %2.1i ... не помогает, выводит ххх без точки.

Добрый день. Нет, потребуется конверсия (например, в REAL).

NikVic2
12.09.2018, 10:25
Уважаемые коллеги, извините за возможно идиотский вопрос, но сходу ответ найти не могу.

Есть проект, в нём несколько одинаковых контроллеров. Когда я выбираю Login -> Online, подключение происходит только к первому. Multiple download, кажется, работает. Но отслеживать значения переменных и т.д. можно только на одном контроллере - первом в списке.
Если его удалить, а потом нажать Ctrl-Z -- подключения будут идти ко второму. То есть "нутром чую", что где-то есть опция, к какому контроллеру в проекте подключаться для отладки. Но вот найти её не могу никак!

Подскажите, пожалуйста.

NikVic2
12.09.2018, 10:34
Спасибо, главное - озвучить вопрос. Потыкавшись, нашёл ответ: правой мышкой на приложении в нужном контроллере - Set active application.

Эдуард_Н
15.09.2018, 04:12
Открыл свою библиотеку в CODESYS V3.5 SP11 Patch 5, а там вот это: 38758, что это?

Пробный проект создаю в среде CODESYS V3.5 SP11 Patch 5, получилось такое: 38759, как исправить?

Евгений Кислов
15.09.2018, 07:57
Какой у вас таргет-файл в проекте?

Эдуард_Н
15.09.2018, 08:23
Какой у вас таргет-файл в проекте?

spk1xxm01-3.5.11.50-2

Евгений Кислов
15.09.2018, 09:05
Тогда вам нужно использовать новую версию шаблонов для SP11:
https://ftp.owen.ru/CoDeSys3/04_Library/04_Components/Mx110Drivers_v3.5.11.4.package

Эдуард_Н
15.09.2018, 10:19
Тогда вам нужно использовать новую версию шаблонов для SP11:
https://ftp.owen.ru/CoDeSys3/04_Library/04_Components/Mx110Drivers_v3.5.11.4.package

Так вроде ставил.

Mx110Assistant добавил отдельно в проект, вроде всё стало нормально

Солнечный заяц
17.09.2018, 15:11
Возможно ли загрузить пользовательскую программу в СПК207 через интернет? Интересует возможность удаленной пусконаладки. У кого-то был опыт?

Евгений Кислов
17.09.2018, 15:16
Возможно ли загрузить пользовательскую программу в СПК207 через интернет? Интересует возможность удаленной пусконаладки. У кого-то был опыт?

Да, возможно.
http://www.owen.ru/forum/showthread.php?t=29345

anto.hin
28.09.2018, 14:49
При загрузке проекта в СПК107 (5.472) возникает сообщение об ошибке38942, хотя проект компилируется. Ругается на библиотеку, взятую из codesys 2.3. Подскажите в чём проблема?

Евгений Кислов
28.09.2018, 15:02
При загрузке проекта в СПК107 (5.472) возникает сообщение об ошибке38942, хотя проект компилируется. Ругается на библиотеку, взятую из codesys 2.3. Подскажите в чём проблема?

У вас в библиотеке есть persistent-переменные (узел PersistenVars, на скрине подчеркнут красным).
Если у вас есть доступ к исходникам библиотеки - удалите его, тогда проект загрузится без ошибок.

anto.hin
28.09.2018, 16:24
В библиотеке таковых нет. Как найти?

Евгений Кислов
28.09.2018, 17:41
В библиотеке таковых нет. Как найти?

На вашем скриншоте он отчетливо виден.
Вы отдельно библиотеку импортируйте в CODESYS V3.5 и уже в нем отредактируйте ее нужным образом.

Viktor_13
11.10.2018, 17:20
Здравствуйте . Нужна помощь.
Создал проект для СПК105 прошивка 3.947 Сodesys V3.5 sp5 Patch 5 таргет версии 3.5.4.26
Набросал проект пару экранов визы с кнопками и переход по этим экранам програмную логику пока не делал в виртуальном контроллере все работало.
Затем сменил Device на SPK1XX загрузил в контроллер проект запустился, переходы между экранами работают но сам экран контроллер гаснет примерно через 5 сек и не включается.
Если снять питание и опять включить все повторяется.
До этого опыта с СПК и кодесисом 3,5 не было.

Viktor_13
11.10.2018, 17:28
также прикладываю проект в архиве39155

Евгений Кислов
12.10.2018, 06:58
Добрый день. У вас в проекте используется узел Screen?

39164

Открыв ваш проект у себя, я его не увидел - хотя он должен был автоматически создастся при изменении таргет-файла.
Если у вас этого узла нет - рекомендую переустановить пакет таргет-файлов и обновить таргет-файл в проекте.

Viktor_13
12.10.2018, 13:45
Спасибо за помощь. Все заработало.

Viktor_13
12.10.2018, 16:52
Где можно посмотреть готовый макрос или библиотеку (кодесис 3,5)для ротации насосов по моточасам. Не хочу изобретать велосипед.

Vaha
16.10.2018, 09:43
Подскажите, пожалуйста, как можно реализовать reset программы? У меня много TOF-счетчиков, которые продолжают считать после останова. Может быть есть функция останова и перезапуска программы?

Viktor_13
16.10.2018, 17:02
Нужна помощь при добавлении любого девайса на шину ModBUS программа при компиляции выдает предупреждение
------ Компиляция : Приложение: Device.Application -------
Приложение актуально
[WARNING] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): UpdateSlaveFBTriggers [ModbusSlaveComPort]: C0196: Неявная конверсия из типа без знака 'UINT' в тип со знаком 'INT': возможно изменение знака
Компиляция завершена -- 0 ошибок, 1 предупреждений

Версия КодесисаV3.5 sp5 patch 5 target спк 3.5.4.26 драйвера МХ 110 3.5.4.13

Евгений Кислов
16.10.2018, 17:59
Нужна помощь при добавлении любого девайса на шину ModBUS программа при компиляции выдает предупреждение
------ Компиляция : Приложение: Device.Application -------
Приложение актуально
[WARNING] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): UpdateSlaveFBTriggers [ModbusSlaveComPort]: C0196: Неявная конверсия из типа без знака 'UINT' в тип со знаком 'INT': возможно изменение знака
Компиляция завершена -- 0 ошибок, 1 предупреждений

Версия КодесисаV3.5 sp5 patch 5 target спк 3.5.4.26 драйвера МХ 110 3.5.4.13

Добрый день. Это предупреждение ни на что не влияет. Не обращайте на него внимание.

Евгений Кислов
16.10.2018, 18:02
Подскажите, пожалуйста, как можно реализовать reset программы? У меня много TOF-счетчиков, которые продолжают считать после останова. Может быть есть функция останова и перезапуска программы?

Что вы подразумеваете под "продолжают считать после останова" ?

Vaha
23.10.2018, 18:11
Иногда посреди цикла выполнения программы возникает необходимость остановить таймеры с задержкой выключения TOF, то есть переключить выход с TRUE на FALSE. Но это невозможно, так как импульс идет по заднему фронту. Возможно есть функция остановки (или ресет) всей программы?

Sulfur
24.10.2018, 12:39
Вопрос:
Пытаюсь сделать вызов из ПЛЦ_ПРГ нужного экрана визуализации, но ничего не получается.
Конструкция

IF PassOK THEN VisuElems.CURRENTVISU:='Visu_1';
END_IF;
не работает. Самой переменной VisuElems.CURRENTVISU присваивается нужное значение, но физического переключения экрана не происходит.
КДС 3.5 СП5 Патч 5, контроллер - СПК110.

--------------
Все, разобрался. В Менеджере визуализаций надо было поставить галку "Использовать переменную CurrentVisu".

Евгений Кислов
24.10.2018, 13:39
Иногда посреди цикла выполнения программы возникает необходимость остановить таймеры с задержкой выключения TOF, то есть переключить выход с TRUE на FALSE. Но это невозможно, так как импульс идет по заднему фронту. Возможно есть функция остановки (или ресет) всей программы?

Можно по условию остановки вызвать таймер с (IN=FALSE, PT:=T#0s) - тогда выход сбросится в FALSE.

Andrew_Stranger
27.10.2018, 18:44
Подскажите как часы вывести на экран без SPK_TOOLS?

Евгений Кислов
27.10.2018, 19:06
Подскажите как часы вывести на экран без SPK_TOOLS?

Добрый день. Информация здесь:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_SystemTime_v.1.1.pdf

Andrew_Stranger
27.10.2018, 19:57
Спасибо, Евгений.

Hoblin
05.11.2018, 15:04
Здравствуйте,
Есть:
СПК207 М05 прошивка 5.480
Com3
МВ110-8А
МУ110-16Р
МВ110-16Д
Com2
МВ110-8АС
Ethernet
Двусторонний обмен с сервером

Проблема:
Постоянно отваливаются модули на Com3. Если подключиться через Codesys - недоступны только модули. ModbusCom и ModbusMaster - показано что работает.
Периодичность разная. Может быть 1 час, может быть 2 суток.
Com2 при этом пока работает стабильно.

Пробовал:
Версию библиотеки для СПК 3.5.4.20 и 3.5.4.26
Версию библиотек для модулей 3.5.4.0 и 3.5.4.13
Ситуация одна и та же.
Если поставить прошивку 3.954 - модули ввода-вывода сразу недоступны.

Ранее установлены СПК 207 М02 и М03 прошивка 3.954
Версии библиотек СПК 3.5.4.20 и модулей 3.5.4.0
Работает все достаточно стабильно. Присутствуют кратковременные обрывы связи с модулями ввода-вывода. Но это не критично.

Что сделать чтобы модули ввода-вывода не отваливались?

RV9WFJ
05.11.2018, 17:56
1.Попробовать поменять порты местами, чтобы исключить проблемы с кабелем и модулями.
2.Уйти на обмен через ModBus.lib, там проблемы значительно реже появляются (пока видел их только на М04 с МВ110-8АС, помогло уменьшить скорость обмена до 19200).
Если не помогает ничего, возможно аппаратные проблемы.

yurya
15.11.2018, 15:18
Добрый день.
При загрузке CODESYS 3.5 SP5 Patch 5 возникла ошибка «CmContainer/ Wibukey runtime system is not installed».
Далее загрузка прошла успешно.
Нужно ли на это реагировать? Или что-то не так?

Евгений Кислов
15.11.2018, 15:20
Добрый день.
При загрузке CODESYS 3.5 SP5 Patch 5 возникла ошибка «CmContainer/ Wibukey runtime system is not installed».
Далее загрузка прошла успешно.
Нужно ли на это реагировать? Или что-то не так?

Добрый день.
Такая ошибка возникла при установке CODEYS?
Тогда лучше переустановить - иначе есть вероятность, что вы не сможете загрузить проект в контроллер.

yurya
15.11.2018, 15:35
Перегружал на 2-х компах. Результат стабильно тот же.

Евгений Кислов
15.11.2018, 17:55
Какая ОС? Политики безопасности на ПК настроены?

shamilnizaev@mail.ru
16.11.2018, 12:33
Возможно ли в CodeSys 3.5 узнать является ли переменная RETAIN или нет. ?
И кстати (по теме про RETAIN на которую Вы ответили). А будет ли адекватным создание STRUCT (с RETAIN переменными) и его экземпляров. После уже обращать к ним через "." ?

yurya
16.11.2018, 15:21
Добрый день.
Планируем в проекте использовать СПК 110. На какой версии CODESYS следует разрабатывать проект: 3.5 SP5 или 3.5 SP7?

Ильнур Гибадуллин
16.11.2018, 15:30
Добрый день.
Планируем в проекте использовать СПК 110. На какой версии CODESYS следует разрабатывать проект: 3.5 SP5 или 3.5 SP7?

Добрый день!

Если СПК110 без порта Ethernet, то CODESYS V3.5 SP5 Patch 5.

В декабре планируем запустить продажи СПК110 [M01] (ссылка (https://www.owen.ru/product/spk1xx)), одним из отличительных особенностей которого является наличие порта Ethernet. СПК110 [M01] программируется в CODESYS V3.5 SP11 Patch 5.

Евгений Кислов
16.11.2018, 15:48
Возможно ли в CodeSys 3.5 узнать является ли переменная RETAIN или нет. ?
И кстати (по теме про RETAIN на которую Вы ответили). А будет ли адекватным создание STRUCT (с RETAIN переменными) и его экземпляров. После уже обращать к ним через "." ?

Если вы объявили переменную как RETAIN - она является RETAIN. Других очевидных способов узнать об этом нет.
Создание структуры является не лучшим вариантом, так как из выравнивания может быть использовано больше памяти, чем нужно.
Впрочем, его можно отключить.
Если речь о каких-то значительных объемах переменных, которые должны быть независимыми - то лучше смотреть в сторону рецептов, файлов и т.д.

Hoblin
19.11.2018, 09:06
Здравствуйте,
Была переделана визуализация и где то появилось несоответствие типом: Невозможно конвертировать тип 'REAL' в тип 'BOOL'
По нажатию на ошибку открывается окно визуализации.
Как то можно найти элемент с ошибкой?
39882

Евгений Кислов
19.11.2018, 09:42
Можно удалять элементы группами и компилировать. Как только ошибка пропадет - делаем Ctrl+Z и изучаем элементы группы.

Эдуард_Н
20.11.2018, 16:39
Есть в КДС3.5 вот такое 39933 как в КДС2?

Пьер
20.11.2018, 16:54
Есть в КДС3.5 вот такое 39933 как в КДС2?

А для чего это? Если не секрет.

RV9WFJ
20.11.2018, 17:41
Есть в КДС3.5 вот такое 39933 как в КДС2?

Есть в настройках компиляции. Правда толку с этого не много. Я раньше использовал неиспользуемые переменные и то отказался так как у меня постоянно инициализация ENUMов красным шла.

Эдуард_Н
20.11.2018, 17:49
Есть в настройках компиляции. Правда толку с этого не много. Я раньше использовал неиспользуемые переменные и то отказался так как у меня постоянно инициализация ENUMов красным шла.

Ага в этих настройках я тоже пробовал и действительно толку мало.

yurya
21.11.2018, 20:54
Проект создан в CODESYS 3.5.5.5. Не могу обновить device. При попытке обновить девайс окно с перечнем девайсов не открывается.
При создании нового проекта - пожалуйста, весь перечень. CODESYS переустанавливал. На другом ПК вес ОК.
Не могу понять причину.

Евгений Кислов
23.11.2018, 10:34
Проект создан в CODESYS 3.5.5.5. Не могу обновить device. При попытке обновить девайс окно с перечнем девайсов не открывается.
При создании нового проекта - пожалуйста, весь перечень. CODESYS переустанавливал. На другом ПК вес ОК.
Не могу понять причину.

Добрый день. Вы не могли бы выложить скриншот, демонстрирующий проблему?

shamilnizaev@mail.ru
23.11.2018, 10:38
Помогите разобраться.
Установил новую версию CodeSys, при открытии проекта (экспортированного со всеми файлами) возникает ошибка (см. скрины)
Так же не может найти библиотеку SysFile (открываю Менеджер Библиотек, нажимаю загрузить недостающие библиотеки (пишет что библиотека не загружается)).

Евгений Кислов
23.11.2018, 10:44
Помогите разобраться.
Установил новую версию CodeSys, при открытии проекта (экспортированного со всеми файлами) возникает ошибка (см. скрины)
Так же не может найти библиотеку SysFile (открываю Менеджер Библиотек, нажимаю загрузить недостающие библиотеки (пишет что библиотека не загружается)).

Техподдержка НИЛ АП сегодня не работает? :)
Вам надо открывать проект в той версии, в которой он был создан (SP10 Patch1) - обратная совместимость в CODESYS отсутствует.

shamilnizaev@mail.ru
23.11.2018, 11:00
Техподдержка НИЛ АП сегодня не работает? :)
Вам надо открывать проект в той версии, в которой он был создан (SP10 Patch1) - обратная совместимость в CODESYS отсутствует.

С чего Вы решили что проблема в этом ? Разве файл SysFile не относится к System ? (просто интересно)

Евгений Кислов
23.11.2018, 11:04
С чего Вы решили что проблема в этом ? Разве файл SysFile не относится к System ? (просто интересно)

Это на вашем скриншоте написано.
По поводу SysFile - возможно, поможет установка архива репозитория (ссылка в подписи).
Но мне кажется, что у вас версия CODESYS ниже версии таргет-файла контроллера - и это является причиной проблемы.

GoodLuck
29.11.2018, 16:10
Здравствуйте!

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

RV9WFJ
29.11.2018, 17:11
Здравствуйте!

Подскажите, пожалуйста, библиотеку для перевода числа из десятичной системы в шестнадцатиричную.
Вероятно речь про представление числа в текстовой форме так как иначе оно вроде как смысла не имеет. Если до то BYTE_TO_STRINGH и тому подобные из OSCAT.lib

shamilnizaev@mail.ru
30.11.2018, 08:19
Подскажите как возможно реализовать детектор Импульсов (дискретного сигнала)
Задача:
3 входных сигнала (импульсных) - необходимо определить кто из них сработал первый.

Я предполагаю сделать следующим образом.
Генератор импульса (генерируемый импульс = одному такту работы ПЛК)
Если сигнал пришел в течении данного такта (к примеру одного) то фиксируем значение тригером, как только на тригере появляется 1 останавливаем генератор импульса.

Подскажите вообще имеется ли встроенный детектор например в библиотеке OSCAT или как возможно это реализовать ?

Зинько Владислав
30.11.2018, 10:27
Подскажите как возможно реализовать детектор Импульсов (дискретного сигнала)
Задача:
3 входных сигнала (импульсных) - необходимо определить кто из них сработал первый.

Я предполагаю сделать следующим образом.
Генератор импульса (генерируемый импульс = одному такту работы ПЛК)
Если сигнал пришел в течении данного такта (к примеру одного) то фиксируем значение тригером, как только на тригере появляется 1 останавливаем генератор импульса.

Подскажите вообще имеется ли встроенный детектор например в библиотеке OSCAT или как возможно это реализовать ?

Добрый день.

Если я правильно Вас понял, то в библиотеке Standard.lib есть детекторы импульсов (триггеры) R_TRIG - детектор переднего фронта импульса и F_TRIG - детектор заднего фронта импульса.

В Вашем случае может сработать за один цикл контроллера больше одного дискретного входа?
Если нет, то код проверки будет выглядеть примерно так:
1. Объявление переменных


var_input
xIsFirstInputLocked : BOOL; // Признак того, что первый вход сработал
xIsSecondInputLocked : BOOL; // Признак того, что второй вход сработал
xIsThirdInputLocked : BOOL; // Признак того, что третий вход сработал
end_var

var_output
m_uiFirstWorkedInput : UINT; // Номер выхода, который замкнулся первым
end_var

var
m_fb_FirstInputDetector : R_TRIG; // Детектор переднего фронта 1-го входа
m_fb_SecondInputDetector : R_TRIG; // Детектор переднего фронта 2-го входа
m_fb_ThirdInputDetector : R_TRIG; // Детектор переднего фронта 3-го входа
end_var



2. ФБ по определению первого сработанного входа (к примеру ФБ - DiscretInputsDetector);



m_fb_FirstInputDetector (IN := xIsFirstInputLocked);
m_fb_SecondInputDetector (IN := xIsSecondInputLocked);
m_fb_ThirdInputDetector (IN := xIsThirdInputLocked);

if m_fb_FirstInputDetector.Q then
m_uiFirstWorkedInput := 1;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 2;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 3;
else
m_uiFirstWorkedInput := 0;
end_if


Но такой подход сработает только если у Вас одновременно не могут замкнуться два входа.
Т.к. при замыкании входа с более низким порядковым номером, входы с более высоким номером уже будут игнорироваться.

shamilnizaev@mail.ru
30.11.2018, 11:06
Добрый день.

Если я правильно Вас понял, то в библиотеке Standard.lib есть детекторы импульсов (триггеры) R_TRIG - детектор переднего фронта импульса и F_TRIG - детектор заднего фронта импульса.

В Вашем случае может сработать за один цикл контроллера больше одного дискретного входа?
Если нет, то код проверки будет выглядеть примерно так:
1. Объявление переменных


var_input
xIsFirstInputLocked : BOOL; // Признак того, что первый вход сработал
xIsSecondInputLocked : BOOL; // Признак того, что второй вход сработал
xIsThirdInputLocked : BOOL; // Признак того, что третий вход сработал
end_var

var_output
m_uiFirstWorkedInput : UINT; // Номер выхода, который замкнулся первым
end_var

var
m_fb_FirstInputDetector : R_TRIG; // Детектор переднего фронта 1-го входа
m_fb_SecondInputDetector : R_TRIG; // Детектор переднего фронта 2-го входа
m_fb_ThirdInputDetector : R_TRIG; // Детектор переднего фронта 3-го входа
end_var



2. ФБ по определению первого сработанного входа (к примеру ФБ - DiscretInputsDetector);



m_fb_FirstInputDetector (IN := xIsFirstInputLocked);
m_fb_SecondInputDetector (IN := xIsSecondInputLocked);
m_fb_ThirdInputDetector (IN := xIsThirdInputLocked);

if m_fb_FirstInputDetector.Q then
m_uiFirstWorkedInput := 1;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 2;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 3;
else
m_uiFirstWorkedInput := 0;
end_if


Но такой подход сработает только если у Вас одновременно не могут замкнуться два входа.
Т.к. при замыкании входа с более низким порядковым номером, входы с более высоким номером уже будут игнорироваться.

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

1. Создал POU (FB) (переименовал в "AI_TIR")" в котором описал входы (сигнализацию HiHi, Hi, LoLo, Lo: BOOL;) и выходы.
2. В PLC_PRG создал копию моего FB A1: AI_TIR;
3. Создал POU (переименовал в "TriggerD") на языке ST.
4. Добавил в MainTask мой новый POU Trigger
5. Теперь написании когда на ST в POU Trigger выходит ошибка
Пытаюсь сделать такое
VAr_In: PLC_PRG.A1.HiHi

Компилятор пишет неизветсный тип PLC_PRG.A1.HiHi
Я же обьявил его в главном PLC_PRG

GoodLuck
30.11.2018, 14:03
Вероятно речь про представление числа в текстовой форме так как иначе оно вроде как смысла не имеет. Если до то BYTE_TO_STRINGH и тому подобные из OSCAT.lib

Спасибо! Именно то, что надо!

krollcbas
08.12.2018, 02:15
СПК107 модернизированный с Ethernet. Контроллер подключен к сети, через роутер с динамической сим-картой. По сути имеет доступ в интернет.
Существует ли возможность отправки e-mail сообщений при возникновении события? Например через SMTP

Евгений Кислов
08.12.2018, 08:49
СПК107 модернизированный с Ethernet. Контроллер подключен к сети, через роутер с динамической сим-картой. По сути имеет доступ в интернет.
Существует ли возможность отправки e-mail сообщений при возникновении события? Например через SMTP

На релизной прошивке такая возможность будет - в ней поддержана cURL (https://ru.wikipedia.org/wiki/CURL).
В рамках бета-теста этот функционал еще не был доступен.

Vcar75
12.12.2018, 15:45
Добрый день!
Установил Codesys 3.5, таргет для СПК-105, библиотеки c этой страницы https://www.owen.ru/product/codesys_v3.
Возникает большое количество ошибок - см. скрин.

В чем может быть проблема?
Заранее спасибо.40341

Пьер
12.12.2018, 16:03
Добрый день!
Установил Codesys 3.5, таргет для СПК-105, библиотеки c этой страницы https://www.owen.ru/product/codesys_v3.
Возникает большое количество ошибок - см. скрин.

В чем может быть проблема?
Заранее спасибо.40341

репозиторий библиотек надо установить

shamilnizaev@mail.ru
12.12.2018, 16:35
Подскажите каким образом возможно сделать побитовое И ? ( и прочие битовые операции).
Есть значение типа UINT (или BYTE) хочу проверить выставлен ли определенный бит.
Пытался выполнить следующим образом (сдвигаю бит в крайне правое положение и выполняю побитовое И...0b00000001):
IF (SHR (переменная, сдвиг) & 1) = 1 THEN .....
yно на сколько я понял ST не позволяет выполнить данную операцию.

Коськовецкий Владислав
12.12.2018, 17:05
Подскажите каким образом возможно сделать побитовое И ? ( и прочие битовые операции).
Есть значение типа UINT (или BYTE) хочу проверить выставлен ли определенный бит.
Пытался выполнить следующим образом (сдвигаю бит в крайне правое положение и выполняю побитовое И...0b00000001):
IF (SHR (переменная, сдвиг) & 1) = 1 THEN .....
yно на сколько я понял ST не позволяет выполнить данную операцию.

Вы можете обращаться к битам целочисленных переменных через точку. Например указав byVar.3 вы обращаетесь к биту №4 ( т.к. нумерация битов происходит с нуля ) переменной byVar типа BYTE.
Вашу задачу на ST можно реализовать следующим образом:

PROGRAM PLC_PRG
VAR
byVar : BYTE ;
END_VAR
__________________________________________________ _________________________

IF byVar.0 THEN
//действие, которое необходимо выполнить, если нулевой бит переменной byVar = 1
ELSE
//действие, которое необходимо выполнить, если нулевой бит переменной byVar = 0
END_IF

shamilnizaev@mail.ru
13.12.2018, 07:04
Вы можете обращаться к битам целочисленных переменных через точку. Например указав byVar.3 вы обращаетесь к биту №4 ( т.к. нумерация битов происходит с нуля ) переменной byVar типа BYTE.
Вашу задачу на ST можно реализовать следующим образом:

PROGRAM PLC_PRG
VAR
byVar : BYTE ;
END_VAR
__________________________________________________ _________________________

IF byVar.0 THEN
//действие, которое необходимо выполнить, если нулевой бит переменной byVar = 1
ELSE
//действие, которое необходимо выполнить, если нулевой бит переменной byVar = 0
END_IF

По битно работает (когда необходимо указывать конкретный бит 0,1,2,3....) а если вот так byVar.J то не работает.

Евгений Кислов
13.12.2018, 07:08
По битно работает (когда необходимо указывать конкретный бит 0,1,2,3....) а если вот так byVar.J то не работает.

Cм. библиотеку UTIL, функции EXTRACT/PUTBIT (считать бит номер N/записать бит номер N).