PDA

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



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [25] 26 27 28 29

iv.kmz
10.07.2023, 10:18
Добрый день.
Вы добавили в дерево проекта объект PERSISTENT-переменные?

Нашёл PersistentVars, спасибо. Его добавить нельзя почему-то, но он был создан автоматически

Карбофос
11.07.2023, 12:13
Напомните пожалуйста, как вызывать ФБ, у которого имеются переменные типа VAR_IN_OUT в языке ST? Просто присваиванием, или там хитрее синтаксис? Например, ONTIME из OSCAT Basic:

fbOntime(IN := xVar1, RST := xVar2, CYCLES := udiVar1, SECONDS :=udiVar2);

Евгений Кислов
11.07.2023, 12:34
Напомните пожалуйста, как вызывать ВБ, у которого имеются переменные типа VAR_IN_OUT в языке ST? Просто присваиванием, или там хитрее синтаксис? Например, ONTIME из OSCAT Basic:

fbOntime(IN := xVar1, RST := xVar2, CYCLES := udiVar1, SECONDS :=udiVar2);

Просто присваиванием.

nick2015
13.07.2023, 10:53
Нашёл PersistentVars, спасибо. Его добавить нельзя почему-то, но он был создан автоматически

вот здесть.

sssssaaaaabbbbb
13.07.2023, 11:05
здравствуйте, подскажите пожалуйста, работаю с ПЛК210 и вот такое сообщение.68803
порты езернет настроены на разные ип. Как такое можно исправить?

Евгений Кислов
13.07.2023, 11:19
здравствуйте, подскажите пожалуйста, работаю с ПЛК210 и вот такое сообщение.68803
порты езернет настроены на разные ип. Как такое можно исправить?

Добрый день.
У вас поврежден или удален файл лицензии. Обеспечьте, пожалуйста, доступ по AeroAdmin - решим эту проблему.
Данные для доступа и ваш контактный телефон можно прислать мне на почту или в telegram (в подписи).

sssssaaaaabbbbb
13.07.2023, 12:23
Еще раз здравствуйте, так и не могу настроить модули ввода вывода. Подскажите, где параметр порта менять?68810

Евгений Кислов
13.07.2023, 12:25
Еще раз здравствуйте, так и не могу настроить модули ввода вывода. Подскажите, где параметр порта менять?68807

В модуле его нельзя поменять, он жестко задан как 502.

ETL_Роман
13.07.2023, 16:21
Добрый день. Я использую в проекте управление пользователями. Хочу вывести на экран таймер до автоматического Logout из-за неактивности пользователя на визуализации. Существует ли какая-то BOOL переменная, которая отвечает за активность пользователя? Или можно сразу достать таймер, который отчитывается сам где-то фоном?

sssssaaaaabbbbb
13.07.2023, 16:36
Прошу руководство компании ОВЕН объявить благодарность Евгению Кислову за своевременную помощь и поддержку при настройке ПЛК 210!!! Благодарю Вас Евгений, спасибо большое!!!

Евгений Кислов
13.07.2023, 18:18
Прошу руководство компании ОВЕН объявить благодарность Евгению Кислову за своевременную помощь и поддержку при настройке ПЛК 210!!! Благодарю Вас Евгений, спасибо большое!!!

Спасибо за добрые слова.

Евгений Кислов
13.07.2023, 18:19
Добрый день. Я использую в проекте управление пользователями. Хочу вывести на экран таймер до автоматического Logout из-за неактивности пользователя на визуализации. Существует ли какая-то BOOL переменная, которая отвечает за активность пользователя? Или можно сразу достать таймер, который отчитывается сам где-то фоном?

Добрый день.
См. п. 10.3.7 (конкретнее - табл. 10.3 на стр. 375):
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Visu_v3.0.pdf

fergus23
14.07.2023, 09:30
Добрый день. ПЛК 200, на SD карте база sqlite. Через Putty командами создал таблицу и заполнил ее данными, проверил - данные записались. Через "веб" перезагрузил ПЛК. Подключился повторно Putty, пытаюсь прочитать данные из созданной таблицы, а ее нету. Почему так ?
UPD
воспроизвел все действия еще раз - таблица созданная осталась

ETL_Роман
14.07.2023, 09:52
Добрый день.
См. п. 10.3.7 (конкретнее - табл. 10.3 на стр. 375):
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Visu_v3.0.pdf

Реально, спасибо большое.

Captain Power
17.07.2023, 11:19
День добрый.
Подскажите как узнать программно, есть ли активные тревоги определеннго класса, например класса "error".
Спасибо!

Евгений Кислов
17.07.2023, 11:42
День добрый.
Подскажите как узнать программно, есть ли активные тревоги определеннго класса, например класса "error".
Спасибо!

Добрый день.
Вам нужно изучить эти материалы:
https://content.helpme-codesys.com/en/libs/AlarmManager/Current/Interfaces/pou-IAlarmHandler2/GetActiveAlarms.html
https://youtu.be/R4mHOPzAkUA
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/04_3S/AlarmManager.package

iv.kmz
18.07.2023, 10:53
Здравствуйте!

Правильно ли я понимаю, что если для ПЛК200 создать 2 элемента Modbus_TCP_Master и к каждому добавить по 1 ME210_701, то опрос ME210_701 будет проходить в многопоточном режиме (параллельно) (Вариант А), а если создать только 1 Modbus_TCP_Master и добавить в него оба ME210_701, то опрос будет происходить последовательно (Вариант Б)?


Вариант А:

Modbus_TCP_Master_1
ME210_701_1
Modbus_TCP_Master_2
ME210_701_2


Вариант Б:

Modbus_TCP_Master
ME210_701_1
ME210_701_2

Евгений Кислов
18.07.2023, 10:57
Здравствуйте!

Правильно ли я понимаю, что если для ПЛК200 создать 2 элемента Modbus_TCP_Master и к каждому добавить по 1 ME210_701, то опрос ME210_701 будет проходить в многопоточном режиме (параллельно) (Вариант А), а если создать только 1 Modbus_TCP_Master и добавить в него оба ME210_701, то опрос будет происходить последовательно (Вариант Б)?


Вариант А:

Modbus_TCP_Master_1
ME210_701_1
Modbus_TCP_Master_2
ME210_701_2


Вариант Б:

Modbus_TCP_Master
ME210_701_1
ME210_701_2

Добрый день.
Я думаю, какой-то принципиальной разницы между обоими вариантами не будет.

sco-scorpion
18.07.2023, 17:32
Добрый день.
Пытаюсь преобразовать код ошибки связи в текст и почему-то выводит не правильно
Код:

// Ошибка связи с МВ210-101
xModbusError_A111 := A111.byModbusError <> IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS; // проверка наличии ошибки

fbA111Ton(IN := NOT (xModbusError_A111), PT := T#5S); // Таймер на тот случай когда ошибка не постоянная
xModbusStatusAlarm_A111 := NOT (fbA111Ton.Q); // Установка наличии ошибки

IF xModbusError_A111 THEN
wsModbusError_A111 := MB_MODBUS_ERROR_TO_WSTRING(A111.byModbusError) ; // Вывод названии ошибки
wsModbusError_A111 := wConcat (wsModbusError_A111, wsNameA111);
ELSE
xModbusError_A111 := FALSE ;
END_IF

A111.byModbusError имеет значение 0 т.е. RESPONSE_SUCCESS соответственно должно писать связь востановлена, но пишет что связь потеряна
в функции написано правильно


CASE eError_Modbus OF
IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS :
MB_MODBUS_ERROR_TO_WSTRING := "Связь востановлена";
.....
IoDrvModbus.MB_ErrorCodes.UNDEFINED :
MB_MODBUS_ERROR_TO_WSTRING := "Потеря связи";
END_CASE

Что делаю не так?

Cs-Cs
18.07.2023, 17:56
sco-scorpion Если я не туплю и если смотреть код, показанный на картинке, то у тебя же текст ошибки переводится в строку только когда в IF выполняется TRUE.
А когда в IF выполняется ветка ELSE - то строка ошибки не меняется, и остаётся как есть.
На будущее: весь этот код лучше не копипастить под A111 и так далее, а сделать отдельный FB с каким-нить говорящим названием "MBDeviceCheck", и уже его экземпляры вызывать для модулей IO или других устройств. Я так и делаю. Как-нить напишу статью про это...

PS. Евгений Кислов, ахаха, мы в одно время ответили =))

Евгений Кислов
18.07.2023, 17:56
У вас запись в wsModbusError_Alll выполняется только по условию xModbusError_Alll - а оно, видимо, не выполняется.


Как-нить напишу статью про это...

Будем ждать. =)

sco-scorpion
18.07.2023, 18:20
sco-scorpion
На будущее: весь этот код лучше не копипастить под A111 и так далее, а сделать отдельный FB с каким-нить говорящим названием "MBDeviceCheck", и уже его экземпляры вызывать для модулей IO или других устройств. Я так и делаю. Как-нить напишу статью про это...


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

sco-scorpion
18.07.2023, 18:29
У вас запись в wsModbusError_Alll выполняется только по условию xModbusError_Alll - а оно, видимо, не выполняется.

Я не правильно написал условие, должно быть:

IF xModbusStatusAlarm_A111 THEN
wsModbusError_A111 := MB_MODBUS_ERROR_TO_WSTRING(A111.byModbusError) ; // Вывод названии ошибки
wsModbusError_A111 := wConcat (wsModbusError_A111, wsNameA111);
ELSE
xModbusError_A111 := FALSE ;
END_IF
Теперь все корректно.

Cs-Cs
18.07.2023, 18:37
Было бы не плохо т.к. у меня 5 модулей, сейчас оставлю как есть для запуска, но потом буду оптимизировать.
Ну лучше сразу написать FB, а не копипастить A112, A111 и так далее, чтобы не путаться. Торопыжничество вида "ща сделаю кое-как, а потом сделаю нормально" приводит к глюкам, ерунде и фигне. А что будет, если потом тебе захочется добавить какое-то другое вычисление ошибки Modbus, и надо будет этот кусок кода копипастить во все места?
68968

sco-scorpion
18.07.2023, 18:49
Ну лучше сразу написать FB, а не копипастить A112, A111 и так далее, чтобы не путаться. Торопыжничество вида "ща сделаю кое-как, а потом сделаю нормально" приводит к глюкам, ерунде и фигне. А что будет, если потом тебе захочется добавить какое-то другое вычисление ошибки Modbus, и надо будет этот кусок кода копипастить во все места?
68968

А можете показать сам код блока?

Cs-Cs
18.07.2023, 18:52
А можете показать сам код блока?
К сожалению, нет. Принципы работы опишу потом в статье у себя на сайте. Они простые: построены на том же, на чём у тебя - отлов серии нескольких ошибок подряд через TON/TOF. А дальше тупо считается статистика: сколько штук ошибок было, сколько штук успешных опросов.

sco-scorpion
18.07.2023, 22:30
Решил все таки попробовать сделать ФБ, я так понимаю на вход мы передаем сигнал ошибки


FUNCTION_BLOCK MBDeviceCheck
VAR_INPUT
xError_Modbus : IoDrvModbus.xError;
END_VAR
VAR_OUTPUT
xModbusStatusAlarm : BOOL; // Установка наличии ошибки
wsModbusError : WSTRING; // Вывод названии ошибки
END_VAR
VAR
eError_Modbus : IoDrvModbus.MB_ErrorCodes;
fbTon : TON;
END_VAR
и в самом начале кодесис начинает ругаться что не понимает что такое xError_Modbus : IoDrvModbus.xError;

сам ФБ вызываю

MBDeviceCheck(xError_Modbus:= A111.byModbusError, xModbusStatusAlarm=> xCheck, wsModbusError=> wsCheck);

kondor3000
18.07.2023, 23:20
Решил все таки попробовать сделать ФБ, я так понимаю на вход мы передаем сигнал ошибки

и в самом начале кодесис начинает ругаться что не понимает что такое xError_Modbus : IoDrvModbus.xError;

сам ФБ вызываю

Вы же ФБ делаете на разные случаи, а пытаетесь конкретный вход IoDrvModbus.xError; прямо в ФБ воткнуть, надо так

VAR_INPUT
xError : BOOL;
END_VAR

А уже потом на вход нужное
MBDeviceCheck(xError:= A111.byModbusError, xModbusStatusAlarm=> xCheck, wsModbusError=> wsCheck);

А это в VAR, вообще вставлять не надо. Получится внутренняя (неизвестного типа) переменная ФБ, вместо глобальной, потому и ругается.

VAR
eError_Modbus : IoDrvModbus.MB_ErrorCodes; // Это убрать
fbTon : TON;
END_VAR

Teinrus
19.07.2023, 12:22
Добрый день, подскажите а можно ли как то в CS удалить не используемые переменные в автоматическом режиме?

Евгений Кислов
19.07.2023, 12:56
Добрый день, подскажите а можно ли как то в CS удалить не используемые переменные в автоматическом режиме?

Добрый день.
Насколько я знаю - такой возможности нет.

sco-scorpion
20.07.2023, 20:03
Подскажите с помощью чего или как можно передать значение ошибки A111.byModbusError в ФБ ?

Евгений Кислов
20.07.2023, 20:10
Подскажите с помощью чего или как можно передать значение ошибки A111.byModbusError в ФБ ?

Отвечу именно на поставленный вопрос - с помощью оператора присваивания. В языке ST он выглядит как :=, в графических языках - как линия связи между переменными.

Если вас интересует что-то другое - то сформулируйте вопрос более развернуто, пожалуйста.

sco-scorpion
20.07.2023, 20:44
Если вас интересует что-то другое - то сформулируйте вопрос более развернуто, пожалуйста.

Я хочу передать на вход ФБ значение кода ошибки чтобы потом преобразовать в текстовое значение т.е. A111.byModbusError имеет значение RESPONSE_SUCCESS на входе ФБ я получаю это значение и с ним что-то делаю.
Вызов ФБ:

Check_1(xError_Modbus:= A111.xConfirmError, sName := A111_OwenDriver.ProjectName, Code :=A111.byModbusError , xModbusStatusAlarm=> xCheck, wsModbus_Error=> wsCheck);
Сам ФБ:

VAR_INPUT
xError_Modbus : BOOL;
sName : STRING;
Code : ??? ;
END_VAR
VAR_OUTPUT
xModbusStatusAlarm : BOOL; // Установка наличии ошибки
wsModbus_Error : WSTRING; // Вывод названии ошибки
END_VAR

Евгений Кислов
20.07.2023, 20:50
Сode: IoDrvModbusTcp.MB_ErrorCodes;

И надо будет сделать так:
https://youtu.be/IFUN4cYskRI?t=286

sco-scorpion
20.07.2023, 21:13
Сode: IoDrvModbusTcp.MB_ErrorCodes;

Большое спасибо. А в чем разница между IoDrvModbusTcp.MB_ErrorCodes и IoDrvModbus.MB_ErrorCodes ?

Евгений Кислов
21.07.2023, 06:27
Большое спасибо. А в чем разница между IoDrvModbusTcp.MB_ErrorCodes и IoDrvModbus.MB_ErrorCodes ?

Единственное отличие - ошибка с кодом 16#A5 в первом случае называется TCP_COMMUNICATION_ERROR, а во втором - REQUEST_FAILED_TO_SEND.

Ворон226
21.07.2023, 13:09
Здравствуйте!

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

Евгений Кислов
21.07.2023, 13:13
Здравствуйте!

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

Добрый день.
См. библиотеки Standard и Util - всё упомянутое в них есть.
Какого-то сжатого перечня нет.
Можете спрашивать по каждому нужному элементу.

Ворон226
21.07.2023, 13:18
Добрый день.
См. библиотеки Standard и Util - всё упомянутое в них есть.
Какого-то сжатого перечня нет.
Можете спрашивать по каждому нужному элементу.

Да, в Менеджере библиотек с трудом, но нашел... А описания все на английском? Букваря никакого не написано никем до сих пор? Я не в претензии: если нет - буду сам писать...

Евгений Кислов
21.07.2023, 13:34
Да, в Менеджере библиотек с трудом, но нашел... А описания все на английском? Букваря никакого не написано никем до сих пор? Я не в претензии: если нет - буду сам писать...

Для некоторых библиотек есть созданная нами документация на русском.
Конкретно для Standard и Util - есть описание на русском из руководства CoDeSys V2.3 (приложение D):
https://owen.ru/uploads/373/cds23_manual_v2.8.pdf

В V3.5 каких-то существенных отличий от V2.3 в плане этих библиотек нет.

Ворон226
21.07.2023, 14:50
Спасибо! С генераторами, таймерами и счетчиками разобрался... А как в CodeSYS 3.5 найти нужный блок сравнения (различных форматов), суммирования, вычитания... Булевские операторы... Как искать, если не знаешь назнания оператора сравнения переменных типа WORD?

kondor3000
21.07.2023, 14:59
Спасибо! С генераторами, таймерами и счетчиками разобрался... А как в CodeSYS 3.5 найти нужный блок сравнения (различных форматов), суммирования, вычитания... Булевские операторы... Как искать, если не знаешь назнания оператора сравнения переменных типа WORD?

По фигу какой тип, ставите +- / * арифметические действия, <>, >=, <=, = сравнения, AND OR XOR операторы и т. д.
Сравнивать и умножать, делить нужно переменные одного типа, но любого. Котвертировать типы можно TO_REAL, TO_WORD, TO_INT и т. д.

sco-scorpion
24.07.2023, 09:06
Подскажите при обращении к A111_OwenDriver.ProjectName параметр указывает имя устройства в дереве которое я задал, а есть такое же для ПЧ AFD-E ?

Евгений Кислов
24.07.2023, 09:25
Подскажите при обращении к A111_OwenDriver.ProjectName параметр указывает имя устройства в дереве которое я задал, а есть такое же для ПЧ AFD-E ?

Нет, это только шаблонов Mx210 поддерживается.

sco-scorpion
24.07.2023, 13:46
Подскажите на панели(СПК110) кнопке я присваиваю значение переменной и её же присваиваю на цифровой вход МВ210-212, при нажатии на СПК ничего не происходит, когда я отвязываю переменную от цифрового входа все срабатывает. Так и должно быть или я что-то не правильно настраиваю?

Евгений Кислов
24.07.2023, 13:49
Подскажите на панели(СПК110) кнопке я присваиваю значение переменной и её же присваиваю на цифровой вход МВ210-212, при нажатии на СПК ничего не происходит, когда я отвязываю переменную от цифрового входа все срабатывает. Так и должно быть или я что-то не правильно настраиваю?

Вы пытаетесь с экрана СПК изменить значение на дискретном входе контроллера.
Так не получится сделать - значение на дискретном входе зависит только от состояния подключенного к нему сигнала.

sco-scorpion
24.07.2023, 14:12
Вы пытаетесь с экрана СПК изменить значение на дискретном входе контроллера.
Так не получится сделать - значение на дискретном входе зависит только от состояния подключенного к нему сигнала.

Я правильно понял, если у меня есть виртуальная кнопка и физическая кнопка и что бы они изменили значение одной и той же переменной то нужно им задать разные переменные?

Cs-Cs
24.07.2023, 14:18
Я правильно понял, если у меня есть виртуальная кнопка и физическая кнопка и что бы они изменили значение одной и той же переменной то нужно им задать разные переменные?
Да! Если речь идёт про какое-нибудь управление чем-то в режиме Вкл-Выкл с экрана (виртуальной кнопкой), то вход и кнопку надо обработать по R_TRIG и F_TRIG и в коде дёргать какую-то третью переменную, которая и будет означать включенное состояние чего-то и управляться с двух мест: экрана и DI.
Во избежание следующего вопроса про "...а как быть, если с экрана включили, а на входе выключили и как на экране показать выключенное" скажу, что я решил это через написание своего FB, который управляется и по кнопке и по экрану. По экрану - через переменную типа IN_OUT.
Код работает примено так: если "видит" изменение по DI - то переключает переменную экрана в нужное состояние. Если же изменений по DI нет - то переключает выход по переменной с экрана.

Sulfur
25.07.2023, 12:45
я присваиваю значение переменной и её же присваиваю на цифровой вход МВ210-212
Как-то так:69175

Ворон226
25.07.2023, 17:51
CodeSYS ругается, что не знает оператора POW (возведение в степень) - есть такой? И где его найти?

Евгений Кислов
25.07.2023, 17:53
CodeSYS ругается, что не знает оператора POW (возведение в степень) - есть такой? И где его найти?

В CODESYS этот оператор называется EXPT.

Ворон226
26.07.2023, 20:56
В CODESYS этот оператор называется EXPT.

Нашел описание операторов, выделив один знакомый оператор и нажав F1 - переход в вэб-описание CodeSYS. Спасибо!

Captain Power
01.08.2023, 16:38
Приветствую!
Подскажите, можно ли реализовать в обработчике кнопки, в выполнить ST код, генерацию одиночного импульса?
Что-то вроде такого:
----------------
write:=false;
nop? // тут задержка на один цикл ?
write:=true;
----------------
Необходимо для считывания по переднему фронту...
Спасибо.
Или корректно это сделать в обработчиках OnMouseDown/Up ?

Спасибо!

Евгений Кислов
01.08.2023, 17:04
Приветствую!
Подскажите, можно ли реализовать в обработчике кнопки, в выполнить ST код, генерацию одиночного импульса?
Что-то вроде такого:
----------------
write:=false;
nop? // тут задержка на один цикл ?
write:=true;
----------------
Необходимо для считывания по переднему фронту...
Спасибо.
Или корректно это сделать в обработчиках OnMouseDown/Up ?

Спасибо!

Добрый день.
В настройках кнопки присвойте булевскую переменную к свойству Нажатие, а в коде программы с помощью блока R_TRIG генерируйте единичный импульс по ее переднему фронту.

fergus23
02.08.2023, 06:22
Здравствуйте, подскажите как можно рандомить числа в программе ПЛК ? (может пример кода есть) По заданным параметрам (от и до и с каким шагом)

Евгений Кислов
02.08.2023, 06:49
Здравствуйте, подскажите как можно рандомить числа в программе ПЛК ? (может пример кода есть) По заданным параметрам (от и до и с каким шагом)

Добрый день.
Например, в библиотеке OSCAT Basic есть ФБ RDM2 для этой цели.
Но задание "шага" там не поддерживается.
Какие параметры генератора (от/до/шаг) вам могут потребоваться? Приведите пару примеров.

fergus23
02.08.2023, 09:43
Добрый день.
Например, в библиотеке OSCAT Basic есть ФБ RDM2 для этой цели.
Но задание "шага" там не поддерживается.
Какие параметры генератора (от/до/шаг) вам могут потребоваться? Приведите пару примеров.

Ну к примеру генерировать число от 20 до 23, например 21.5, 22, 20, 22.5, 22, 22.8, 21.9

Евгений Кислов
02.08.2023, 09:44
Ну к примеру генерировать число от 20 до 23, например 21.5, 22, 20, 22.5, 22, 22.8, 21.9

И какой в данном случае шаг?

Арсентий Свидетцев
02.08.2023, 11:20
Здравствуйте !
Столкнулся с неумением пользоваться интернетом и поисковиками, так как не могу найти ответ на вопрос: есть ли в CoDeSys 3.5 переменная или что-то на неё похожее, которая сбрасывается в FALSE после прохождения первого цикла программы? Своего рода флаг сброса первого прохождения цикла MainTask. Необходима для инициализации функциональных блоков приводов.
И если её нет, то какие есть способы имитации или замены её при помощи конструкций? Как поймать момент перехода программы на следующий цикл выполнения?
Спасибо

fergus23
02.08.2023, 11:24
И какой в данном случае шаг?
Если нельзя его на лету менять, то пусть будет 0.5
Т.е хотелось бы узнать, какие есть возможности рандома, чтобы допустим эмулировать показания термометра

Евгений Кислов
02.08.2023, 11:39
Если нельзя его на лету менять, то пусть будет 0.5
Т.е хотелось бы узнать, какие есть возможности рандома, чтобы допустим эмулировать показания термометра

Можете с помощью RDM2 генерировать два значения: из диапазона 20...23 и из диапазона 0...1. Если 1 - то к первому значению прибавляете 0.5. Ну или более сложную логику рандомизации, если требуется.

Евгений Кислов
02.08.2023, 11:39
Здравствуйте !
Столкнулся с неумением пользоваться интернетом и поисковиками, так как не могу найти ответ на вопрос: есть ли в CoDeSys 3.5 переменная или что-то на неё похожее, которая сбрасывается в FALSE после прохождения первого цикла программы? Своего рода флаг сброса первого прохождения цикла MainTask. Необходима для инициализации функциональных блоков приводов.
И если её нет, то какие есть способы имитации или замены её при помощи конструкций? Как поймать момент перехода программы на следующий цикл выполнения?
Спасибо

Добрый день.
См. здесь:
https://www.owen.ru/forum/showthread.php?t=28167&p=304642&viewfull=1#post304642

fergus23
02.08.2023, 12:13
Можете с помощью RDM2 генерировать два значения: из диапазона 20...23 и из диапазона 0...1. Если 1 - то к первому значению прибавляете 0.5. Ну или более сложную логику рандомизации, если требуется.

Благодарю, буду с рдм2 заниматься

Задумкин Сергей
03.08.2023, 10:17
Добрый день.
Codesys 3.5 SP17 Patch 3
Есть необходимость сделать указатель на BOOL. Читая различные источники так и не понял допустимо ли это? В книге Сергея Романова написано, что "POINTER TO BOOL не работает и указатель должен ссылаться, как минимум, на BYTE". Но BOOL, как известно, по памяти занимает этот самый BYTE. Где то написано, что нельзя ссылаться на BIT, а про BOOL ничего не сказано.

Смысл этого вот в чем. Есть двумерный массив состояний дискретных входов модулей ввода вида aDiscreteInputs[<номер модуля>, <номер входа>] OF BOOL; Все элементы массива привязаны через соотнесение входов/выходов.
Есть типовые сигналы, которые из проекта в проект могут быть поданы на разные входы модулей. С выходами то же самое. Хочется иметь универсальный код, который легко адаптировать под проект щита по входам и выходам. В дальнейшем есть идея сделать их настраиваемыми в веб-визуализации (что то типа "Клапан открыт: Номер модуля А ___, Номер входа DI ___" и т.д.)

Пока пришло в голову такое:

PROGRAM PLC_PRG
VAR
pt_x_Opened: POINTER TO BOOL; //Клапан открыт
pt_x_Closed: POINTER TO BOOL; //Клапан закрыт
pt_x_ON: POINTER TO BOOL; //Открыть
pt_x_OFF: POINTER TO BOOL; //Закрыть

В самой программе при инициализации выполняем один раз:
pt_x_Opened := ADR(aDiscreteInputs[1,1]);
pt_x_Closed := ADR(aDiscreteInputs[1,2]);
pt_x_ON := ADR(aDiscreteOutputs[2,3]);
pt_x_OFF := ADR(aDiscreteOutputs[2,4]);

Ну а дальше оперировать уже сигналами через разыменовывание
IF pt_x_Opened^ THEN и т.д.
pt_x_OFF^ := TRUE; и т.д.

Это для примера. Сигналов на самом деле много, все они упакованы в структуры, а структуры в массивы.

Имеет ли такая реализация право на существование? Компилятор вроде не ругается пока.

lobster
03.08.2023, 10:17
Здравствуйте, подскажите как можно реализовать обрыв связи с слайв устройством, на языке FBD

Евгений Кислов
03.08.2023, 10:54
Добрый день.
Codesys 3.5 SP17 Patch 3
Есть необходимость сделать указатель на BOOL. Читая различные источники так и не понял допустимо ли это? В книге Сергея Романова написано, что "POINTER TO BOOL не работает и указатель должен ссылаться, как минимум, на BYTE". Но BOOL, как известно, по памяти занимает этот самый BYTE. Где то написано, что нельзя ссылаться на BIT, а про BOOL ничего не сказано.

Смысл этого вот в чем. Есть двумерный массив состояний дискретных входов модулей ввода вида aDiscreteInputs[<номер модуля>, <номер входа>] OF BOOL; Все элементы массива привязаны через соотнесение входов/выходов.
Есть типовые сигналы, которые из проекта в проект могут быть поданы на разные входы модулей. С выходами то же самое. Хочется иметь универсальный код, который легко адаптировать под проект щита по входам и выходам. В дальнейшем есть идея сделать их настраиваемыми в веб-визуализации (что то типа "Клапан открыт: Номер модуля А ___, Номер входа DI ___" и т.д.)

Имеет ли такая реализация право на существование? Компилятор вроде не ругается пока.

Добрый день.
В CODESYS V3.5 объявление POINTER TO BOOL - корректно.

Евгений Кислов
03.08.2023, 10:57
Здравствуйте, подскажите как можно реализовать обрыв связи с слайв устройством, на языке FBD

Добрый день.
Вы имеете в виду диагностику обрыва связи?
См. здесь в п. 3.4 и 4.6:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.1.pdf

fatlortroll
04.08.2023, 08:37
Возможно, поможет Application start (https://help.codesys.com/webapp/friends;product=LibDevSummary;version=3.5.15.0#app lication-start).

sssssaaaaabbbbb
04.08.2023, 10:15
Здравствуйте уважаемые коллеги. Знаете ли вы как прочитать эту переменную(Error Counter)?69330

Николай Суриков
04.08.2023, 10:28
Здравствуйте уважаемые коллеги. Знаете ли вы как прочитать эту переменную(Error Counter)?69330

https://owen.ru/forum/showthread.php?t=28167&page=14&p=403643&viewfull=1#post403643

thecatvlz
07.08.2023, 13:20
Добрый день. Прошу помощи с чтением показаний датчика на входе модуля 2AS без использования шаблонов, стандартными средствами конфигурирования. Контроллер СПК 107(М01). Пробую сделать по примеру из документа CDSv3.5_Modbus_v3.1, пока не получается разобраться. В примере используется модуль 8А, у него значение занимает 2 регистра. У 2АС - 1 регистр, насколько понимаю. Опрашиваю 0х0100, получаемые данные меняются, однако явно некорректно их обрабатываю. Нет ли где-то инструкции или примера на эту тему?
Прошивка модуля 1.08

UPD. Методом научного тыка выяснил, что в регистре 0х100 лежит значение входа в формате int, которое требуется разделить на 100. Это верно? Если нет, прошу подсказать, где прочитать на эту тему и как сделать корректно

Николай Суриков
07.08.2023, 13:29
0х108 - 0х109 - 1 канал
0х10В - 0х10С - 2 канал
69362

thecatvlz
07.08.2023, 13:32
Да, видел. Правильно Вас понимаю, что эти регистры следует прочитать в соответствии с рекомендациями в документе? Сейчас попробую...

Николай Суриков
07.08.2023, 13:35
...
UPD. Методом научного тыка выяснил, что в регистре 0х100 лежит значение входа в формате int, которое требуется разделить на 100. Это верно? Если нет, прошу подсказать, где прочитать на эту тему и как сделать корректно

Значение 1-го канала = 0х100 / 10 ^ 0х20
Значение 2-го канала = 0х101 / 10 ^ 0х21

thecatvlz
07.08.2023, 13:36
0х108 - 0х109 - 1 канал
0х10В - 0х10С - 2 канал
69362

Благодарю Вас. Разобрался. Видимо, перегрелся, такую очевидную вещь не осознал без подсказки

Валерий "mad Dog" Шмараев
07.08.2023, 15:20
Здравствуйте, корректна ли такая запись:

69364

Евгений Кислов
07.08.2023, 16:25
Здравствуйте, корректна ли такая запись:

69364

Добрый день.
Да, корректна.

Alejandro.ruso
08.08.2023, 12:50
Добрый день! Изучаю CoDeSys, для начала хотел повторить пример First step. Всё повторил, при компиляции проекта появляется запись "Не возможно открыть библиотеку CmpSysExec 1.0.0.2, не установлена в системе" Подскажите, пожалуйста, откуда можно её скачать и установить.

Евгений Кислов
08.08.2023, 12:53
Добрый день! Изучаю CoDeSys, для начала хотел повторить пример First step. Всё повторил, при компиляции проекта появляется запись "Не возможно открыть библиотеку CmpSysExec 1.0.0.2, не установлена в системе" Подскажите, пожалуйста, откуда можно её скачать и установить.

Добрый день.
https://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library

Но судя по вашему сообщению - вы начали изучать CODESYS на основе устаревших материалов.
Рекомендую актуальный "Первый старт (https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_FirstStart_v3.0.pdf)" или созданный на его базе курс на платформе Stepik (https://stepik.org/course/123987/syllabus).

=provincial=
09.08.2023, 15:03
Здравствуйте, при установке вот такое сообщение. Что сделать?
Win 8.1

Cs-Cs
09.08.2023, 15:35
Здравствуйте, при установке вот такое сообщение. Что сделать?
Win 8.1 Покупать новый компьютер (как и мне): CodeSys 3.5.SP17 требует минимум Windows 10.

Alejandro.ruso
09.08.2023, 16:52
Спасибо! Буду пробовать.

=provincial=
10.08.2023, 08:41
Покупать новый компьютер (как и мне): CodeSys 3.5.SP17 требует минимум Windows 10.

Завёлся у меня CodeSys 3.5.SP17 на win 8.1 со второй попытки (кончилось место на диске С:), но указанная ошибка никуда не делась.

Raptor80@list.ru
10.08.2023, 09:45
Здравствуйте. Установил CodeSys 3.5.SP17, но полноценно пользоваться не могу. Не запускается виртуальный процессор, а без него сложно изучать программирование. ОС Windows 10. Скрин сообщения после команды старта прилагаю. Никакие переустановки пакета мне не помогли. После данного сообщения виртуальный процессор в "RUN" не переходит. То что пишется в самом сообщении из среды сделать нельзя - там неактивные эти пункты.
Я не понимаю - что "CODESys" нужно.

Евгений Кислов
10.08.2023, 10:01
Здравствуйте. Установил CodeSys 3.5.SP17, но полноценно пользоваться не могу. Не запускается виртуальный процессор, а без него сложно изучать программирование. ОС Windows 10. Скрин сообщения после команды старта прилагаю. Никакие переустановки пакета мне не помогли. После данного сообщения виртуальный процессор в "RUN" не переходит. То что пишется в самом сообщении из среды сделать нельзя - там неактивные эти пункты.
Я не понимаю - что "CODESys" нужно.

Добрый день.
Вам нужно просто в этом окне нажать Ок и повтороно запустить виртуальный контроллер.

=provincial=
14.08.2023, 15:19
Здравствуйте, как работать с перечислениями (плк210) в случае добавления ПЧ AFD_L (состояние ПЧ, сообщение отказа)?
Есть видео?

Разобрался. Увидел подсказку на библиотеку Mx110Assistant.

Ворон226
15.08.2023, 09:26
Здравствуйте!
Вопрос простой, но сходу ответа не нашел.
Программирую ПЛК. ПЛК разные. Разные версии. Разные модели. Они требуют разные прошивки. Как это делать на одном ПК? Держать CodeSYS 3.5 SP14 и SP17? Как удобнее организовать своё рабочее место?

Евгений Кислов
15.08.2023, 09:56
Здравствуйте!
Вопрос простой, но сходу ответа не нашел.
Программирую ПЛК. ПЛК разные. Разные версии. Разные модели. Они требуют разные прошивки. Как это делать на одном ПК? Держать CodeSYS 3.5 SP14 и SP17? Как удобнее организовать своё рабочее место?

Добрый день.
Именно так.

RV9WFJ
15.08.2023, 11:43
Кому как, лично мне через виртуальную машину(ны)

Ворон226
15.08.2023, 11:51
Продолжение...
Установил CodeSYS 3.5 SP14. Установил OwenArchiver_v3.5.4.9.package. Установил OwenTargets-3.5.14.30-10.package
Создаю проект для ПЛК200.03
Сразу ругается, что "Идентификатор DED.CAADiagDeviceDefault не задан."
Также в списке ошибок и про DED, и про DED.Inode...
В списке Менеджера библиотек загружена только Standard.
На библиотеках CAA Device Diagnoss и IoStandard - восклицательные знаки.
В добавить библиотеку не нашел их.
Какие библиотеки сразу скачать и установить?

Ворон226
15.08.2023, 11:58
Продолжение...
Установил CodeSYS 3.5 SP14. Установил OwenArchiver_v3.5.4.9.package. Установил OwenTargets-3.5.14.30-10.package
Создаю проект для ПЛК200.03
Сразу ругается, что "Идентификатор DED.CAADiagDeviceDefault не задан."
Также в списке ошибок и про DED, и про DED.Inode...
В списке Менеджера библиотек загружена только Standard.
На библиотеках CAA Device Diagnoss и IoStandard - восклицательные знаки.
В добавить библиотеку не нашел их.
Какие библиотеки сразу скачать и установить?

Евгений Кислов
15.08.2023, 12:39
Продолжение...
Установил CodeSYS 3.5 SP14. Установил OwenArchiver_v3.5.4.9.package. Установил OwenTargets-3.5.14.30-10.package
Создаю проект для ПЛК200.03
Сразу ругается, что "Идентификатор DED.CAADiagDeviceDefault не задан."
Также в списке ошибок и про DED, и про DED.Inode...
В списке Менеджера библиотек загружена только Standard.
На библиотеках CAA Device Diagnoss и IoStandard - восклицательные знаки.
В добавить библиотеку не нашел их.
Какие библиотеки сразу скачать и установить?

Установите архив репозитория (ссылка в подписи).

Ворон226
15.08.2023, 13:09
Установите архив репозитория (ссылка в подписи).

Установил - ничего не изменилось(

Евгений Кислов
15.08.2023, 13:11
Установил - ничего не изменилось(

Обеспечьте удаленный доступ по AeroAdmin - посмотрим, что у вас происходит.
Данные для подключения и ваш контактный телефон пришлите мне на почту или telegram (в подписи).

fatlortroll
15.08.2023, 16:45
День добрый.
Подскажите пожалуйста, выполняет ли метод FB_Exit функционал деструктора для ФБ, т.е. будет ли он гарантированно выполняться при выходе объекта ФБ из области видимости?
Планирую организовать что-то вроде smart-pointer'ов из плюсов для минимизаций ошибок работы с выделенной памятью..

Евгений Кислов
15.08.2023, 16:59
День добрый.
Подскажите пожалуйста, выполняет ли метод FB_Exit функционал деструктора для ФБ, т.е. будет ли он гарантированно выполняться при выходе объекта ФБ из области видимости?
Планирую организовать что-то вроде smart-pointer'ов из плюсов для минимизаций ошибок работы с выделенной памятью..

Добрый день.
Уточните, пожалуйста, в терминах CODESYS, как вы представляете "выход объекта ФБ из области видимости".

fatlortroll
15.08.2023, 21:10
> в терминах CODESYS, как вы представляете "выход объекта ФБ из области видимости"

Если коротко -- то смутно. :-D
А так -- ну, например, объект объявлен в функции/методе, и по завершении функции/метода должен разрушиться?
Есть ли в природе описание этих самых областей видимости для объектов?

Евгений Кислов
16.08.2023, 06:55
А так -- ну, например, объект объявлен в функции/методе, и по завершении функции/метода должен разрушиться?

Объекты, объявленные в функции/методе, размещаются в стеке. Время жизни такого объекта ограничено временем выполнения функции/метода.


Есть ли в природе описание этих самых областей видимости для объектов?

Вы сами выше упомянули, что смутно представляете, что такое "область видимости для объектов" в терминах CODESYS.
Поэтому я буду ориентироватьcя на терминологию стандарта МЭК 61131-3, которую использует CODESYS.


scope: that portion of a language element within which a declaration or label applies.

Описание:
https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_struct_reference_variable_types.html

alex191000
16.08.2023, 18:31
Добрый день, имеется панель NLcon-CED7, на ней установлен Debian 10. Делаю проект на версии Codesys 3.5 SP16 Patch 3.
Нужно чтобы проект перезаписывался и обновлялся с флешки, сейчас он записывается через LAN.
Есть возможность "создать загрузочное приложение", как его записать в установленную Linux систему на NLcon-CED7?
Как организовать запись с флешки?

Евгений Кислов
16.08.2023, 18:38
Добрый день, имеется панель NLcon-CED7, на ней установлен Debian 10. Делаю проект на версии Codesys 3.5 SP16 Patch 3.
Нужно чтобы проект перезаписывался и обновлялся с флешки, сейчас он записывается через LAN.
Есть возможность "создать загрузочное приложение", как его записать в установленную Linux систему на NLcon-CED7?
Как организовать запись с флешки?

Добрый день.
Задайте этот вопрос технической поддержке RealLab, пожалуйста.

alex191000
16.08.2023, 19:36
К сожалению в поддержке RealLab загружают проекты тоже через LAN.

Евгений Кислов
16.08.2023, 19:56
К сожалению в поддержке RealLab загружают проекты тоже через LAN.

Тогда рекомендую для следующих проектов использовать наши контроллеры - для них загрузить проект с флешки можно элементарно:
https://www.youtube.com/watch?v=UDi8OTZvvlI

ГЛЮКОNIC
16.08.2023, 21:58
Доброго времени суток, у меня ступор возник с библиотеками преобразования из Real to word2 без проблем объявил экземпляр rA1w2_1 :OCL.REAL_TO_WORD2; (*преобразователь вещественной в 2 целых Температуры 1*) в программе rA1w2_1(rInput:= rAI01T, xSwapBytes:= FALSE, wOutput1=> wrAI01T1, wOutput2=> wrAI01T2); - а вот в обратную сторону wSPz_1:OCL.WORD2_TO_REAL; выдаёт ошибку OCL.WORD2_TO_REAL имеет тип функция и не может быть создан, через CFC блоки они не дают ошибок, но хочу понять как на ST не то делаю.

ГЛЮКОNIC
16.08.2023, 21:59
69644 не отправилось фото блин

ГЛЮКОNIC
16.08.2023, 22:10
а вот без объявления а сразу в программе прописал rSPz1:= OCL.WORD2_TO_REAL(wInput1:= wSPz1_1, wInput2:= wSPz1_2, xSwapBytes:=FALSE); - ни какой ошибки не дало, не знаю будет ли работать, завтра на контроллере проверю.

Николай Суриков
16.08.2023, 22:47
Доброго времени суток, у меня ступор возник с библиотеками преобразования из Real to word2 без проблем объявил экземпляр rA1w2_1 :OCL.REAL_TO_WORD2; (*преобразователь вещественной в 2 целых Температуры 1*) в программе rA1w2_1(rInput:= rAI01T, xSwapBytes:= FALSE, wOutput1=> wrAI01T1, wOutput2=> wrAI01T2); - а вот в обратную сторону wSPz_1:OCL.WORD2_TO_REAL; выдаёт ошибку OCL.WORD2_TO_REAL имеет тип функция и не может быть создан, через CFC блоки они не дают ошибок, но хочу понять как на ST не то делаю.

Функции не надо объявлять.

=provincial=
17.08.2023, 12:05
Евгений, у меня вопрос по лагу визуализации в связке ПЛК210-4 + 5модулей + ВП110.
Суть в том, что периодически визуализация как бы тормозит. Нажимаешь на кнопку, а она не нажимается. Проходит несколько секунд и HMI оживает.
Модули подключены к LAN1, ВП110 к LAN2.

Евгений Кислов
17.08.2023, 12:10
Евгений, у меня вопрос по лагу визуализации в связке ПЛК210-4 + 5модулей + ВП110.
Суть в том, что периодически визуализация как бы тормозит. Нажимаешь на кнопку, а она не нажимается. Проходит несколько секунд и HMI оживает.
Модули подключены к LAN1, ВП110 к LAN2.

Добрый день.
Отправьте, пожалуйста, ваш проект и ссылку на этот пост на support@owen.ru.
В письме укажите, на какую именно кнопку надо нажимать, чтобы увидеть проблему, и с каким периодом (хотя бы примерно) она проявляется.
Если сможете снять видео, на котором будет видно проблему - тоже приложете его к письму, пожалуйста.

=provincial=
17.08.2023, 15:47
А ещё в том же проекте есть два вида ПЧ от Кипприбор AFD-L и AFD-E.
При добавлении в проект из готовых устройств ОВЕН оказалось, что в шаблоне AFD-E отсутствует возможность привязать переменную для чтения слова ошибок. При изучении документации стало понятно почему, производители выдумали свои собственные функции ModBus 0x07 и 0x08 именно для чтения аварий.
Можно ли рассчитывать на то, что такой функционал будет реализован?

Вообще, AFD-E более дорогой частотник, напичкан множеством функций, но в какиx-то базовых моментах "отстаёт" от AFD-L (это связано не только с вышеуказанной проблемой).

Евгений Кислов
17.08.2023, 16:06
Можно ли рассчитывать на то, что такой функционал будет реализован?

В рамках шаблонов - определенно нет.

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

=provincial=
18.08.2023, 13:44
Евгений, проект я отправил, а насчёт помощи в настройке обмена с ПЧВ - буду рад принять Вашу помощь.

Евгений Кислов
18.08.2023, 13:48
Евгений, проект я отправил, а насчёт помощи в настройке обмена с ПЧВ - буду рад принять Вашу помощь.

Тогда давайте свяжемся в понедельник?
Пришлите мне на почту или в телеграм (в подписи) ваш контактный телефон и уточните время, в которое с вами можно будет связаться.
Потребуется подключить ПЧВ к ПК с установленным CODESYS по RS-485 и предоставить к этому ПК доступ по AeroAdmin.

=provincial=
21.08.2023, 09:45
Политика безопасности компании такого не позоволяет.
У Вас есть возможность собрать такой комплект у себя на столе (выписать со склада) и опубликовать результаты?

Евгений Кислов
21.08.2023, 18:09
Политика безопасности компании такого не позоволяет.
У Вас есть возможность собрать такой комплект у себя на столе (выписать со склада) и опубликовать результаты?

Я попросил о содействии коллег из отдела ПЧВ, но это займет определенное время.
Доступ по удаленке позволил бы совсем разобраться существенно быстрее.
Как показывает мой опыт, политика безопасности не является проблемой, если объяснить СИБ, что именно требуется и зачем.

Paha1977
23.08.2023, 12:23
Добрый день

Помню, находил видеоинструкцию замены модели ПЛК в Codesys 3.5 (например, PLC210-04 на PLC210-01). Вот сижу в поиске и не могу найти. Может кто-нибудь поможет?
Спасибо.

UPD
Нашел. Скорее всего, это было видео про перенос проектов.
https://www.youtube.com/watch?v=BS8lRqQmj9I&list=PL2EcVEe6E9SCzVhL_BCDnaUJROikKheVx&index=25

Евгений Кислов
23.08.2023, 12:51
Политика безопасности компании такого не позоволяет.
У Вас есть возможность собрать такой комплект у себя на столе (выписать со склада) и опубликовать результаты?

Сделал и протестировал пример:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/03_Modbus/Example_AFD_E_ModbusDiag_3517v1.projectarchive

В рамках примера показана упрощенная реализация Modbus-функций 0x07 и 0x08.
Функцию 0x08 AFD-E отрабатывает странно - значения счетчиков обновляются с непонятным периодом и на непонятную величину (например, у меня он значение SERVER MESSAGE COUNT увеличил на 1 за 5 минут, хотя все это время шел опрос частотника), сброс счетчиков не работает (частотник возвращает корректный ответ на запрос, но значения счетчиков остаются прежними) и т. п..
Я попросил у коллег из отдела ПЧВ уточнить эти моменты и добавить информацию по ним в инструкцию.

Функция 0x07 отрабатывается корректно и предсказуемо.

69733

OlegLP
24.08.2023, 18:35
Коллеги прошу помощи.
При работе с виртуальным контроллером Control Win V3 не могу с ним соединится.
В установках соединения сканирую сеть и нахожу устройство с адресом 0080.
При нажатии Enter выскакивает сообщение Вход пользователя устройства в систему: Вы не обладаете достаточными правами для выполнения этой операции. Введите имя и пароль. Какое имя и пароль вводить? И если оно было ранее введено как стереть, чтобы ввести по новой?

Только что столкнулся с такой же ситуацией!
до этого проект запускался без лишних вопросов, теперь просит логин. Ничего не менялось, не делалось, новых юзеров не заводилось!
Что делать, куда копать?
CDS 3.5 SP17 Patch 3

kondor3000
24.08.2023, 19:26
Только что столкнулся с такой же ситуацией!
до этого проект запускался без лишних вопросов, теперь просит логин. Ничего не менялось, не делалось, новых юзеров не заводилось!
Что делать, куда копать?
CDS 3.5 SP17 Patch 3

https://owen.ru/forum/showthread.php?t=28167&page=14#134

OlegLP
24.08.2023, 19:42
Спасибо огромное. помогло.
Но осадочек остался) Как это оно все само так сделалось?

Евгений Кислов
24.08.2023, 19:58
Спасибо огромное. помогло.
Но осадочек остался) Как это оно все само так сделалось?

Оно не "сделалось само" - кто-то создал пользователя и задал ему пароль.
В свежих версиях CODESYS при первом запуске виртуального контроллера заставляет создать пользователя (если предварительно не отредактировать конфиг-файл) - так что такие ситуации регулярно случаются.

OlegLP
24.08.2023, 20:24
Кто-то - исключено. На ноуте только я. До этого проект уже работал и работал без логинов. Также работали и другие проекты.
В любом случае спасибо, продолжим работу

Alejandro.ruso
25.08.2023, 10:28
Добрый день! Скачиваю с сайта CoDeSys последнюю версию, устанавливаю на компьютер, программа устанавливается, а затем пытается установить пакет репозиториев, но он не устанавливается. Запускаю CoDeSys, в инструментах нет Инсталлера. Почему так происходит?

Евгений Кислов
25.08.2023, 10:38
Добрый день! Скачиваю с сайта CoDeSys последнюю версию, устанавливаю на компьютер, программа устанавливается, а затем пытается установить пакет репозиториев, но он не устанавливается. Запускаю CoDeSys, в инструментах нет Инсталлера. Почему так происходит?

Добрый день.
А в меню Пуск появился CODESYS Installer?

sssssaaaaabbbbb
29.08.2023, 09:26
Здравствуйте, из видео о ПИДрегуляторе пока все понятно, но при установке такая ошибка, как исправить?69867 https://owen.ru/media/video/owen_plk210_ispolzovanizy_pidregulaytora

Евгений Кислов
29.08.2023, 09:29
Здравствуйте, из видео о ПИДрегуляторе пока все понятно, но при установке такая ошибка, как исправить?69867 https://owen.ru/media/video/owen_plk210_ispolzovanizy_pidregulaytora

Добрый день.
В режиме симуляции тренды не работают (как, собственно, и наша библиотека ПИД-регуляторов) - ошибка связана с этим.
Отлаживайте работу с ПИД на реальном ПЛК.

ETL_Роман
29.08.2023, 13:56
Евгений, добрый день. Хотел поинтересоваться на сколько сейчас допили CODESYS Git, удобно ли им пользоваться, возникают ли какие-то проблемы/ошибки? Совместим ли с продуктами/библиотеками ОВЕН

Евгений Кислов
29.08.2023, 14:12
Евгений, добрый день. Хотел поинтересоваться на сколько сейчас допили CODESYS Git, удобно ли им пользоваться, возникают ли какие-то проблемы/ошибки? Совместим ли с продуктами/библиотеками ОВЕН

Добрый день.
Прошлым летом вышла версия 1.2.0.0 (и следом фикс 1.2.1.0 для нее) - в ней внесли довольно много (порядка 50 исправлений и улучшений).
Мы ее не использовали, так что насчет проблем и ошибок подсказать не могу.
Насчет совместимости с продуктами/библиотеками - не понял вопрос, извините.
Git используется для управления версиями клиентских проектов, наши библиотеки для него представляют лишь список зависимостей.

des_na_laes@mail.ru
30.08.2023, 09:11
Коллеги, добрый день! Прошу помочь найти библиотеку с pid-регуляторами для codesys 3.5, если есть таковая. Я помню под 2.3 была такая, может есть отдельная тема по pid-ам для 3.5?

RV9WFJ
30.08.2023, 09:21
Util.lib например :-) А вообще их довольно много, смотря что именно вам надо

des_na_laes@mail.ru
30.08.2023, 09:27
Дискретный pid ищу, на задвижку. что бы по температуре "больше" и "меньше" выдавать.

des_na_laes@mail.ru
30.08.2023, 10:14
И так. Выяснил, что требуется. Библиотека OSCATbasic. Но она не поддерживается в в codesys 17 p3. Как быть коллеги, подскажите пожалуйста. Требуется pid регулятор с дискретными выходами. Может кто подскажет как заставить стандартный pid из util доработать до дискретного. Есть у кого нибудь такой опыт?

Евгений Кислов
30.08.2023, 10:24
Но она не поддерживается в в codesys 17 p3

Почему вы так решили?

krollcbas
30.08.2023, 10:47
И так. Выяснил, что требуется. Библиотека OSCATbasic. Но она не поддерживается в в codesys 17 p3. Как быть коллеги, подскажите пожалуйста. Требуется pid регулятор с дискретными выходами. Может кто подскажет как заставить стандартный pid из util доработать до дискретного. Есть у кого нибудь такой опыт?

Выход с регулятора PID/UTIL перевожу на вход блока управления клапаном с виртуальным позиционером. Ниже код



FUNCTION_BLOCK VALVE1
VAR_INPUT
Setpoint:REAL;(*Физическая уставка клапану*)
PV:REAL;
SP:REAL;

END_VAR

VAR_OUTPUT
Q_Open :BOOL;
Q_Close :BOOL;
Position:REAL;
State:INT;
TimeTRUE:TIME:=T#600ms;
TimeFALSE:TIME:=T#600MS;
END_VAR

VAR_IN_OUT
END_VAR

VAR
Delta:REAL;
BLINK:BLINK1;
BLINK1:BLINK;(*Для дожатия*)
TON:TON;(*Для сброса команд*)
U_var_open:REAL;
U_var_close:REAL;
koeff_o:REAL;(*Коэффициент масштабирования позиционера клапана*)
koeff_c:REAL;(*Коэффициент масштабирования позиционера клапана*)
State1:INT;(*Dlya shim*)
STBL:STBL;
INC,DEC,STB:BOOL;
TON1:TON;(*Для сброса команд*)
Count:INT;
R_TRIG:R_TRIG;
LAG:LAG;
SP1:REAL;
LAG1:LAG;
Position1:REAL;
END_VAR

*********

LAG(IN:=SP , k:=0.001, OUT=>SP1 );

Delta := ABS(SP1-PV);

CASE State1 OF
0:
TimeTRUE := T#200MS;
TimeFALSE := T#20S;
IF Delta>=1 THEN State1:=1; END_IF;
1:
TimeTRUE := T#300MS;
TimeFALSE := T#15S;
IF Delta<1 THEN State1:=0; END_IF;
IF Delta>=1.2 THEN State1:=2; END_IF;
2:
TimeTRUE := T#400MS;
TimeFALSE := T#10S;
IF Delta<1.2 THEN State1:=1; END_IF;
IF Delta>=1.4 THEN State1:=3; END_IF;
3:
TimeTRUE := T#500MS;
TimeFALSE := T#8S;
IF Delta<1.4 THEN State1:=2; END_IF;
IF Delta>=1.6 THEN State1:=4; END_IF;
4:
TimeTRUE := T#600MS;
TimeFALSE := T#7S;
IF Delta<1.6 THEN State1:=3; END_IF;
IF Delta>=1.8 THEN State1:=5; END_IF;
5:
TimeTRUE := T#700MS;
TimeFALSE := T#6S;
IF Delta<1.8 THEN State1:=4; END_IF;
IF Delta>=2 THEN State1:=6; END_IF;
6:
TimeTRUE := T#800MS;
TimeFALSE := T#5S;
IF Delta<2 THEN State1:=5; END_IF;
IF Delta>=2.2 THEN State1:=7; END_IF;
7:
TimeTRUE := T#900MS;
TimeFALSE := T#4S;
IF Delta<2.2 THEN State1:=6; END_IF;
IF Delta>=2.4 THEN State1:=8; END_IF;
8:
TimeTRUE := T#1000MS;
TimeFALSE := T#3S;
IF Delta<2.4 THEN State1:=7; END_IF;
IF Delta>=2.7 THEN State1:=9; END_IF;
9:
TimeTRUE := T#1100MS;
TimeFALSE := T#2S;
IF Delta<2.7 THEN State1:=8; END_IF;
IF Delta>=3 THEN State1:=10; END_IF;
10:
TimeTRUE := T#1200MS;
TimeFALSE := T#1s;
IF Delta<3 THEN State1:=9; END_IF;
END_CASE;


BLINK(ENABLE:=(State=2) OR (State=3), TIMELOW:=TimeFALSE , TIMEHIGH:=TimeTRUE );
BLINK1(ENABLE:=(State=4) OR (State=5) , TIMELOW:=T#30s , TIMEHIGH:=T#100ms , OUT=> );

CASE State OF
0:(*Инициализация*)
TON1(IN:=FALSE);
State := 1;
1:(*Ситуация покоя*)
State := State;
Q_Open := FALSE;
Q_Close := FALSE;
Position := Position;
Setpoint := Setpoint;
Delta := Delta;
TON1(IN:=TRUE, PT:=T#5s);
//IF PV>SP1 AND Delta>0.1 AND TON1.Q THEN State:= 3; END_IF;(*Закрывается*)
//IF PV<SP1 AND Delta>0.4 AND TON1.Q THEN State:= 2; END_IF;(*Открывается*)
IF Position>Setpoint AND TON1.Q THEN State:= 3; END_IF;(*Закрывается*)
IF Delta>1 AND PV>SP1 THEN State := 3; END_IF;(*Закрывается*)
IF Position<Setpoint AND TON1.Q THEN State:= 2; END_IF;(*Открывается*)
//IF Position <= 1 AND (SP1<PV) AND Delta>0.5 AND TON1.Q THEN State := 5; END_IF;(*Закрыт*)
//IF Position >= 99 AND (SP1>PV) AND Delta>0.5 AND TON1.Q THEN State := 4; END_IF;(*Открыт*)

2:(*Открывается*)
State := State;
TON1(IN:=FALSE);

Q_Close := FALSE;
Q_Open := BLINK.OUT;
R_TRIG(CLK:=BLINK.OUT);
//IF R_TRIG.Q THEN END_IF;

IF INC THEN Count:=Count+1; END_IF;
IF Position>=Setpoint THEN Count:=0; State := 1; END_IF;(*Ситуация покоя*)
IF PV>=SP1+0.6 THEN Count:=0; State := 1; END_IF;(*Ситуация покоя*)
IF Count>300 THEN Count:=0; State := 1; END_IF;(*Ситуация покоя*)
IF INC AND Delta<=1.3 THEN Count:=0; State := 1; END_IF;
IF Delta<=0.3 AND PV<SP1 THEN Count:=0; State := 1; END_IF;

3:(*Закрывается*)
State := State;
TON1(IN:=FALSE);

Q_Open := FALSE;
Q_Close := BLINK.OUT;
R_TRIG(CLK:=BLINK.OUT);
IF R_TRIG.Q THEN Count:=Count+1; END_IF;

IF Position<=Setpoint THEN Count:=0; State := 1; END_IF;(*Ситуация покоя*)


4:(*Открыт*)
State := State;
TON1(IN:=FALSE);
Position:=100;
Q_Open := BLINK1.OUT;
Q_Close := FALSE;
IF Setpoint<=99.8 OR DEC THEN State := 3; END_IF;(*Закрывается*)
IF Delta<=0.5 THEN State := 1; END_IF;(*Ситуация покоя*)

5:(*Закрыт*)
State := State;
TON1(IN:=FALSE);
Position:=0;
Q_Open := FALSE;
Q_Close := BLINK1.OUT;
IF Setpoint>0.3 AND INC THEN State := 2; END_IF;(*Открывается*)
IF Delta<=0.5 THEN State := 1; END_IF;(*Ситуация покоя*)

END_CASE;

IF Q_Open THEN Position1:=Position1+0.04; END_IF;
IF Q_Close THEN Position1:=Position1-0.04; END_IF;


IF Position > 100 THEN Position:=100; END_IF;
IF Position < 0 THEN Position:=0; END_IF;
IF Position1 > 100 THEN Position1:=100; END_IF;
IF Position1 < 0 THEN Position1:=0; END_IF;
LAG1(IN:=Position1 , k:=0.00005, OUT=>Position );

IF Setpoint > 100 THEN Setpoint:=100; END_IF;
IF Setpoint < 0 THEN Setpoint:=0; END_IF;


//IF DEC AND (PV<SP1+0.3) THEN Q_Close := FALSE; END_IF;

STBL(PV:=PV , INC=>INC , DEC=>DEC , STBL=>STB );

IF PV>SP THEN Q_Open := FALSE; END_IF;
IF PV<SP THEN Q_Close:= FALSE; END_IF;

Alejandro.ruso
30.08.2023, 19:41
Инсталлер с горем пополам появился, но не хватает кучи библиотек [ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElems'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElems'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemMeter'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemMeter'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemsSpecialControls'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsSpecialControls'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemsWinControls'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsWinControls'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemTextEditor'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemTextEditor'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemTrace'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemTrace'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuNativeControl'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuNativeControl'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemsAlarm'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsAlarm'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemCamDisplayer'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemCamDisplayer'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElem3DPath'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElem3DPath'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemsDateTime'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsDateTime'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#system_visuinputs'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'system_visuinputs'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemXYChart'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemXYChart'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemBase'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemBase'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElems'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElems'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemMeter'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemMeter'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemsSpecialControls'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsSpecialControls'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemsWinControls'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsWinControls'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemTextEditor'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemTextEditor'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemTrace'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemTrace'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuNativeControl'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuNativeControl'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemsAlarm'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsAlarm'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemCamDisplayer'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemCamDisplayer'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElem3DPath'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElem3DPath'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemsDateTime'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsDateTime'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#System_VisuElemXYChart'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemXYChart'.)
[ERROR] 195: Менеджер библиотек: Невозможно открыть библиотеку '#system_visuinputs'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'system_visuinputs'.)
На рабочем компьютере всё получилось, а дома ну никак.

kondor3000
30.08.2023, 21:59
Выход с регулятора PID/UTIL перевожу на вход блока управления клапаном с виртуальным позиционером. Ниже код



Неизвестный тип: STBL
Неизвестный тип: LAG

Евгений Кислов
31.08.2023, 07:25
Инсталлер с горем пополам появился, но не хватает кучи библиотек [ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElems'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElems'.)
[ERROR] 195: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemMeter'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemMeter'.)
...
На рабочем компьютере всё получилось, а дома ну никак.

Вылоижите скриншот вкладки Проект - Установки проекта - Профиль визуализации.

Alejandro.ruso
31.08.2023, 09:42
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(2).png
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(3).png
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(4).png
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(5).png
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(6).png
file:///C:/Users/aleja/OneDrive/%D0%98%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D 0%BD%D0%B8%D1%8F/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BA%D0%B8%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%B A%D1%80%D0%B0%D0%BD%D0%B0%20(7).png
Программу удалил, переустановил. Во время установки не загружается дополнительный пакет, инсталлера опять нет.

des_na_laes@mail.ru
31.08.2023, 10:28
Коллеги, добрый день! Прошу помочь разобраться с регулятором APID_POS_VALV из библиотеки OwenPidRegs. Проблема следующая: Запись параметров ПИД записываются в регулятор APID_POS_VALV через блок SET_APID_POS_VALV, в котором нужно указать блок, в который нужно записать параметры, вход FB. Там написано POINTER TO APID_POS_VALV, я при этом указываю название самого pid регулятора, в результате выскакивает ошибка "Невожможно конвертировать тип OPR.APID_POS_VALV в тип POINTER TO APID_POS_VALV. Подскажите пожалуйста как правильно привязать блок SET к регулятору?

Евгений Кислов
31.08.2023, 10:33
Коллеги, добрый день! Прошу помочь разобраться с регулятором APID_POS_VALV из библиотеки OwenPidRegs. Проблема следующая: Запись параметров ПИД записываются в регулятор APID_POS_VALV через блок SET_APID_POS_VALV, в котором нужно указать блок, в который нужно записать параметры, вход FB. Там написано POINTER TO APID_POS_VALV, я при этом указываю название самого pid регулятора, в результате выскакивает ошибка "Невожможно конвертировать тип OPR.APID_POS_VALV в тип POINTER TO APID_POS_VALV. Подскажите пожалуйста как правильно привязать блок SET к регулятору?

Добрый день.
Вместо названия экземпляра указывайте ADR(название_экземпляра).

kondor3000
31.08.2023, 10:59
Программу удалил, переустановил. Во время установки не загружается дополнительный пакет, инсталлера опять нет.
Значит не правильно установили, сделайте как на видео https://www.youtube.com/watch?v=3KcJWZEVXCg

des_na_laes@mail.ru
31.08.2023, 14:03
Коллеги, добрый день! Пытаюсь настроить регулятор PID дискретный из библиотеки ОВЕН. Не получается подскажите пожалуйста что не так. Какие только значения не подставлял, не выдает сигналы больше" и "меньше", хоть ты тресни. Скрин во вложении.

Евгений Кислов
31.08.2023, 14:21
Посмотрите пример:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/11_Other/Example_ApidPosValv_3516v1.zip

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

Votrj1
31.08.2023, 16:37
Что то я перегрелся , вопрос: осталось проблема, при мультиязычном интерфейсе возникла потребность менять заголовок у NumPad который может быть строкой. Вот только объявленные и инициализированные строкой в GLOBL RETAIN переменные типа String или Wstring в GloblTextList не попадают. Так же не попадают заголовки столбцов компонента ТАБЛИЦЫ. Решение по смене языка у этих компонент?

Евгений Кислов
01.09.2023, 06:53
Что то я перегрелся , вопрос: осталось проблема, при мультиязычном интерфейсе возникла потребность менять заголовок у NumPad который может быть строкой. Вот только объявленные и инициализированные строкой в GLOBL RETAIN переменные типа String или Wstring в GloblTextList не попадают. Так же не попадают заголовки столбцов компонента ТАБЛИЦЫ. Решение по смене языка у этих компонент?

1. Вам нужно в коде менять значение строковой переменной, связанной с заголовком диалога, на основании текущего языка (системеная переменная VisuElems.CURRENTLANGUAGE).

2. Пока что не понял, в чем проблема с заголовками столбцов таблиц:

69974

Votrj1
01.09.2023, 08:51
1. Вам нужно в коде менять значение строковой переменной, связанной с заголовком диалога, на основании текущего языка (системеная переменная VisuElems.CURRENTLANGUAGE).

2. Пока что не понял, в чем проблема с заголовками столбцов таблиц:

69974

Евгений, именно так все и делаю. Только например заголовки стольцов элемента ТАБЛИЦА не попадают в GloblTextList список. Аналогично с заголовками диалогов ввода NumPad. Это только с ними проблема. Попытка прописать через глобальную строковую переменную заголовки, работает, но в список указанный выше не попадает. Соответственно и переключать не получается у них языки. Если кончно по верх них установить текстовую метку то все прокатит.

Евгений Кислов
01.09.2023, 08:53
Евгений, именно так все и делаю. Только например заголовки стольцов элемента ТАБЛИЦА не попадают в GloblTextList список. Аналогично с заголовками диалогов ввода NumPad. Это только с ними проблема. Попытка прописать через глобальную строковую переменную заголовки, работает, но в список указанный выше не попадает. Соответственно и переключать не получается у них языки. Если кончно по верх них установить текстовую метку то все прокатит.

На моем скриншоте видно, что у меня заголовки столбцов таблицы попадают в список текстов.
Если конкретно у вас не попадают - давайте посмотрим по AeroAdmin.

Votrj1
01.09.2023, 11:16
Евгений, именно так все и делаю. Только например заголовки стольцов элемента ТАБЛИЦА не попадают в GloblTextList список. Аналогично с заголовками диалогов ввода NumPad. Это только с ними проблема. Попытка прописать через глобальную строковую переменную заголовки, работает, но в список указанный выше не попадает. Соответственно и переключать не получается у них языки. Если кончно по верх них установить текстовую метку то все прокатит.

Евгений, с таблицами глюк. И перекомпилировал и менял название столбцов (НО НА ТО ЖЕ! ). Как только ввел что то новое появилось в глобальном списке. Хотя сама таблица работала и заголовки отображались. Проверка, перепроверка ID по правой кн мыши кстати не помогала. На всяк пока у меня CS 3.5.16.3.

С диалогами НЕ69983 победил, заголовок диалога NumPad в GlobTextlList не попадает и при обявлении в лоб как в скриншоте, так и через ссылку на текстовую строку. Но все работает. Только в списке нет. Кстати когда делаешь проверку ID из меню GloblText видно как он перебирает визуализации, что то NumPad там не видно, может быстро, но?

Евгений Кислов
01.09.2023, 11:27
Евгений, с таблицами глюк. И перекомпилировал и менял название столбцов (НО НА ТО ЖЕ! ). Как только ввел что то новое появилось в глобальном списке. Хотя сама таблица работала и заголовки отображались. Проверка, перепроверка ID по правой кн мыши кстати не помогала. На всяк пока у меня CS 3.5.16.3.

С диалогами НЕ69983 победил, заголовок диалога NumPad в GlobTextlList не попадает и при обявлении в лоб как в скриншоте, так и через ссылку на текстовую строку. Но все работает. Только в списке нет. Кстати когда делаешь проверку ID из меню GloblText видно как он перебирает визуализации, что то NumPad там не видно, может быстро, но?

По Numpad - привяжите в это поле переменную типа WSTRING.
Меняйте в коде ее значение в зависимости от языка.



IF VisuElems.CURRENTLANGUAGE = 'ru' THEN
wsNumpadTitle := "Введите значение";
ELSIF VisuElems.CURRENTLANGUAGE = 'en' THEN
wsNumpadTitle := "Enter a value";
END_IF

Votrj1
01.09.2023, 11:39
По Numpad - привяжите в это поле переменную типа WSTRING.
Меняйте в коде ее значение в зависимости от языка.



IF VisuElems.CURRENTLANGUAGE = 'ru' THEN
wsNumpadTitle := "Введите значение";
ELSIF VisuElems.CURRENTLANGUAGE = 'en' THEN
wsNumpadTitle := "Enter a value";
END_IF



Можно и так. Те мораль :NumPad заголовок в GloblTextList компилятор не заносит?

Евгений Кислов
01.09.2023, 11:53
Можно и так. Те мораль :NumPad заголовок в GloblTextList компилятор не заносит?

Не заносит, потому что это не статический текст, а значение переменной.

Votrj1
01.09.2023, 12:04
Евгений: последний вопрос и я отстану, для инфо: в таблице при программном выводе подкрашивать строки не получится? И установить список в последнюю строку программно, или режим рулона то же нельзя? Если не то в 17 версии?

Евгений Кислов
01.09.2023, 12:15
Евгений: последний вопрос и я отстану, для инфо: в таблице при программном выводе подкрашивать строки не получится? И установить список в последнюю строку программно, или режим рулона то же нельзя? Если не то в 17 версии?

Изменять цвет строк можно.
Насчет "режима рулона" я не до конца понял.
Таблица просто отображает массив ваших данных. В программе вы можете совершать над этим массивом любые нужные вам манипуляции.

Votrj1
01.09.2023, 12:25
Изменять цвет строк можно.
Насчет "режима рулона" я не до конца понял.
Таблица просто отображает массив ваших данных. В программе вы можете совершать над этим массивом любые нужные вам манипуляции.

При выводе в массив таблицы разным цветом цветового параметра шрифта, заливки нет. Вроде. Только если пальцем в строки тыкать, там есть. А рулон: заполняю из программы 20 например строк массива таблицы, а в таблице сконфигурировано на отображение 10. Покажет 10 , далее вручную надо рулонить бегунком до последнего. Хочется программно визуально встать на N-ю строку.

Евгений Кислов
01.09.2023, 12:45
При выводе в массив таблицы разным цветом цветового параметра шрифта, заливки нет. Вроде. Только если пальцем в строки тыкать, там есть. А рулон: заполняю из программы 20 например строк массива таблицы, а в таблице сконфигурировано на отображение 10. Покажет 10 , далее вручную надо рулонить бегунком до последнего. Хочется программно визуально встать на N-ю строку.

Насчет цветов - посмотрите пример, там в том числе и это рассматривается:
https://youtu.be/-qPyjuiPbbk?si=y2W1FyAqUZMYSjBZ

Насчет прокрутки таблицы из кода - см. вкладку Выбор в свойствах элемента.

ETL_Роман
01.09.2023, 16:01
Спасибо за ответ
Когда-нибудь вернусь к контролю версий, но пока в условиях санкций нет смысла копать в сторону CoDeSys Git. Может быть Copia попробуем, но позже.

Вопрос по ретейну. Допустим у меня есть 10 ретейн переменных в проекте. Если я перезапишу одну переменную, весь ретейн перезапишется?
И если я буду каждый цикл перезаписывать ретейн, на какое время мне хватит ресурса контроллера. Да, я понимаю, что это зависит от типа переменной(-ых) и не стоит каждый цикл перезаписывать его, это больше риторический вопрос.

Евгений Кислов
01.09.2023, 18:25
Спасибо за ответ
Когда-нибудь вернусь к контролю версий, но пока в условиях санкций нет смысла копать в сторону CoDeSys Git. Может быть Copia попробуем, но позже.

Вопрос по ретейну. Допустим у меня есть 10 ретейн переменных в проекте. Если я перезапишу одну переменную, весь ретейн перезапишется?
И если я буду каждый цикл перезаписывать ретейн, на какое время мне хватит ресурса контроллера. Да, я понимаю, что это зависит от типа переменной(-ых) и не стоит каждый цикл перезаписывать его, это больше риторический вопрос.

Принцип сохранения RETAIN в контроллерах с CODESYS V3.5 описан здесь:
https://owen.ru/forum/showthread.php?t=28167&p=308592&viewfull=1#post308592

Votrj1
01.09.2023, 18:28
Насчет цветов - посмотрите пример, там в том числе и это рассматривается:
https://youtu.be/-qPyjuiPbbk?si=y2W1FyAqUZMYSjBZ

Насчет прокрутки таблицы из кода - см. вкладку Выбор в свойствах элемента.

Спасибо! Помогло. Не совсем то и недостаточно подробно, но... Цвета строк сделал, пришлось к каждой строке приклеить невидимый столбец с цветом. Осталось одно чтоб запись в таблицу по кругу бегала. Сделал. Но при переходе с последней строки на первую наблюдается глюк. Если находясь на последней строке перед тем как сделать еще одну запись переменную которая на скриншоте установить в 1 вручную (из текстового поля ) то таблица пререрисуется с 1й строки и можно ввести данные программно в первую строку. Все ОК. А если из подпрограммы установить в 1 и тут же вызвать " см второй скрин", то таблица отрисовывается с 2 строки. Но заполнение правильное. Такое ощущение что что то не успевает. Да, массив на вывод 100 строк. 69993 69994

Евгений Кислов
02.09.2023, 20:39
Выложите простейший проект, в котором я смогу это повторить.

Гончаров И.
02.09.2023, 21:50
Добрый день. Подскажите пожалуйста, возникли трудности при загрузки проекта в СПК107. Если я создаю новую проект, выбираю в дереве СПК, компилирую чистый проект то ошибок нет. Но если я выбираю в дереве проекты-Стандартный проект, потом указываю устройство СПК и язык программирования то на компиляции пустого проекта у меня появляется 41 ошибка. Скорее я что то не так делаю, т.к. только учусь.70000

Гончаров И.
03.09.2023, 09:10
Добрый день. Подскажите пожалуйста, возникли трудности при загрузки проекта в СПК107. Если я создаю новую проект, выбираю в дереве СПК, компилирую чистый проект то ошибок нет. Но если я выбираю в дереве проекты-Стандартный проект, потом указываю устройство СПК и язык программирования то на компиляции пустого проекта у меня появляется 41 ошибка. Скорее я что то не так делаю, т.к. только учусь.70000

https://owen.ru/forum/showthread.php?t=28167&page=12&p=373718&viewfull=1#post373718 нашел ответ тут)

ultra76
03.09.2023, 21:59
Здравствуйте, коллеги.
Есть необходимость управлять шаговым двигателем через сигналы STEP-DIR.
Сконфигурировал один из выходов как "Генератор импульсов". Могу задавать кол-во импульсов. Это понятно.
Не смог разобраться, как можно менять скорость импульсов (период импульсов) из кода программы? Или период импульсов задаётся жестко?

Евгений Кислов
04.09.2023, 06:42
Здравствуйте, коллеги.
Есть необходимость управлять шаговым двигателем через сигналы STEP-DIR.
Сконфигурировал один из выходов как "Генератор импульсов". Могу задавать кол-во импульсов. Это понятно.
Не смог разобраться, как можно менять скорость импульсов (период импульсов) из кода программы? Или период импульсов задаётся жестко?

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

Schizo
04.09.2023, 10:11
Доброго дня , помогите пожалуйста!

Холодильная установка, на теплообменнике стоит 3х ходовой кран который управляется 4..20мА.
Как осуществить управление ПИД регулятором из стандартной библиотеки или же из овеновской, что бы получить именно такой сигнал?

1exan
04.09.2023, 13:44
Доброго дня , помогите пожалуйста!

Холодильная установка, на теплообменнике стоит 3х ходовой кран который управляется 4..20мА.
Как осуществить управление ПИД регулятором из стандартной библиотеки или же из овеновской, что бы получить именно такой сигнал?

Масштабируйте диапазон значений выхода регулятора в диапазон значений используемого аналогового выхода

Votrj1
04.09.2023, 14:21
Выложите простейший проект, в котором я смогу это повторить.

В хелпе по визуализациям есть пример заполнения таблицы при условии что количество строк на экране равно размеру массива. Там же организован циклический буфер. Так вот вопрос, как сделать то же если размер массива больше числа отображаемых строк. Методом тыка выяснил что если "Тип выбора" -> Нет выделения и параметр таблицы "Переменная для выбранной строки"(назовем IND(globl) после вывода делать на 1 больше чем текущий номер строки то доходя до последней строки на экране список автоматически прокручивается на 1 вверх. Все вроде хорошо. Проблема в конце . Допустим массив 20 строк, таблица 10. После вывода в 20ю строку следуя алгоритму IND=21. Следующая запись должна записаться в первую строку таблицы и для правильной визуализации я должен сделать IND=1 и после вывода и отображения сделать IND+1 (чтоб он был больше на 1 текущего номера отображаемой строки). Так вот если до перехода с 20 на 1ю строку вручную забить IND=1 то все ОК. Таблица отрисуется с 1 по 10 строку. Если из программы то получается : IND=1 ; вывод первой строки; IND+1 . Так вот "таблица" не видит IND=1 , тк за ним через несколько операторов идет IND+1. Вопрос: ждать? Чего? PS: само заполнение таблицы правильное, проблема с отображением при переходе с 20 на 1ю.

Евгений Кислов
04.09.2023, 16:24
В хелпе по визуализациям есть пример заполнения таблицы при условии что количество строк на экране равно размеру массива. Там же организован циклический буфер. Так вот вопрос, как сделать то же если размер массива больше числа отображаемых строк. Методом тыка выяснил что если "Тип выбора" -> Нет выделения и параметр таблицы "Переменная для выбранной строки"(назовем IND(globl) после вывода делать на 1 больше чем текущий номер строки то доходя до последней строки на экране список автоматически прокручивается на 1 вверх. Все вроде хорошо. Проблема в конце . Допустим массив 20 строк, таблица 10. После вывода в 20ю строку следуя алгоритму IND=21. Следующая запись должна записаться в первую строку таблицы и для правильной визуализации я должен сделать IND=1 и после вывода и отображения сделать IND+1 (чтоб он был больше на 1 текущего номера отображаемой строки). Так вот если до перехода с 20 на 1ю строку вручную забить IND=1 то все ОК. Таблица отрисуется с 1 по 10 строку. Если из программы то получается : IND=1 ; вывод первой строки; IND+1 . Так вот "таблица" не видит IND=1 , тк за ним через несколько операторов идет IND+1. Вопрос: ждать? Чего? PS: само заполнение таблицы правильное, проблема с отображением при переходе с 20 на 1ю.

Выложите, пожалуйста, ваш простейший проект, в котором я смогу это повторить.

Schizo
05.09.2023, 07:34
Масштабируйте диапазон значений выхода регулятора в диапазон значений используемого аналогового выхода

Благодарю! С этим разобрался вроде как , нашел в библиотеке оскат блоки SCALE , но что то мне подсказывает что в моем случае эти блоки не работают потому как диапазон значений выхода с пид регулятора в режиме охлаждения от -1 до 0.
Очередная засада(

1exan
05.09.2023, 07:56
Благодарю! С этим разобрался вроде как , нашел в библиотеке оскат блоки SCALE , но что то мне подсказывает что в моем случае эти блоки не работают потому как диапазон значений выхода с пид регулятора в режиме охлаждения от -1 до 0.
Очередная засада(

А в чем засада то

Votrj1
05.09.2023, 12:12
Выложите, пожалуйста, ваш простейший проект, в котором я смогу это повторить.

Вот рыба: задача по кнопке ЗАПИСЬ СТРОКИ(только) бегать по кругу с 1 по 20 строку и нормально отображать. Вроде как все варианты перепробовал.
Если выкинуть анализ переменной pr в ZapTab() которая просится вроде и находясь на 20й строке нажать кнопку IndexTek=1 а потом уже ЗАПИСЬ СТРОКИ то все ок. Но только при использовании этой кнопки. Документации 0.

Евгений Кислов
05.09.2023, 12:59
Цветом должно отображаться последнее записанное в таблицу значение?

Votrj1
05.09.2023, 13:08
Маркер строки поля Время желтым. Перемещается при каждом нажатии Запись.

Евгений Кислов
05.09.2023, 13:27
Маркер строки поля Время желтым. Перемещается при каждом нажатии Запись.

По-моему, вот этот пример работает именно так, как вам хотелось бы.

Votrj1
05.09.2023, 13:37
По-моему, вот этот пример работает именно так, как вам хотелось бы.

А можно в 3.5.16.3

Евгений Кислов
05.09.2023, 13:42
А можно в 3.5.16.3

Прикладываю.

Карбофос
05.09.2023, 14:40
Здравствуйте. Решил попробовать добавить в проект считывание состояния батареи СПК, как в недавнем видеопримере, но столкнулся с тем, что при вводе команды "ubus list" в терминал, батареи нет в списке объектов. Ну и соответственно на команду "ubus list battery -v" система выдает "Command failed: Not found".
Для СПК этот пример не подходит? Версия прошивки - 2.4.
70033

Карбофос
05.09.2023, 15:09
Кстати, наверное нашел ошибку в объекте "Buzzer". В ячейке "Тип" строки "Sound Frequency" указано UINT(500...8000), а если переменной "Application.TargetVars.stBuzzer.uiFrequency" задать значение "500", компилятор ругается, что значение не входит в диапазон 800..5000.

70034

70035

Евгений Кислов
05.09.2023, 15:49
Здравствуйте. Решил попробовать добавить в проект считывание состояния батареи СПК, как в недавнем видеопримере, но столкнулся с тем, что при вводе команды "ubus list" в терминал, батареи нет в списке объектов. Ну и соответственно на команду "ubus list battery -v" система выдает "Command failed: Not found".
Для СПК этот пример не подходит? Версия прошивки - 2.4.
70033

Добрый день.
В СПК нет контроля напряжения на батарее RTC.

Евгений Кислов
05.09.2023, 15:54
Кстати, наверное нашел ошибку в объекте "Buzzer". В ячейке "Тип" строки "Sound Frequency" указано UINT(500...8000), а если переменной "Application.TargetVars.stBuzzer.uiFrequency" задать значение "500", компилятор ругается, что значение не входит в диапазон 800..5000.

70034

70035

Ошибка не в объекте Buzzer, а в библиотеке OwenTypes.
Спасибо, мы ее поправим в грядущем обновлении.

Карбофос
05.09.2023, 16:02
Добрый день.
В СПК нет контроля напряжения на батарее RTC.

Других способов определить что батарея села нет? Косвенных хотя бы?

Votrj1
05.09.2023, 16:31
Прикладываю.

Евгений , а вы растяните таблицу не на 10 строк на 17 например. И все начинает ошибаться на 18 строке. Или еще где высота таблицы зарыта?

ВЫЧИСЛИЛ! высота таблицы в пикселях должна быть точно кратна размеру строки. Заносите в хелп.

Евгений Кислов
05.09.2023, 16:45
Евгений , а вы растяните таблицу не на 10 строк на 17 например. И все начинает ошибаться на 18 строке. Или еще где высота таблицы зарыта?

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

Евгений Кислов
05.09.2023, 16:46
Других способов определить что батарея села нет? Косвенных хотя бы?

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

Votrj1
05.09.2023, 16:57
Выложите вашу версию моего примера, где "все начало ошибаться".
По возможности не добавляйте туда своего кода.

Только мышкой изменил по вертикали.И как ранее написал: ВЫЧИСЛИЛ! высота таблицы в пикселях должна быть точно кратна размеру строки. Заносите в хелп. 1-2 пиксель вообще глазом не видно, а работать не будет нормально.

Ps1x0
06.09.2023, 07:59
Здравствуйте, а я правильно понимаю, что если у нас есть контроллер ПЛК 210 и модуль МВ210 соединенные по modbus tcp (контроллер-мастер, модуль-слейв), то опросить их по тому же modbus tcp с верхнего уровня (например MasterScada) не получится?

Евгений Кислов
06.09.2023, 08:25
Здравствуйте, а я правильно понимаю, что если у нас есть контроллер ПЛК 210 и модуль МВ210 соединенные по modbus tcp (контроллер-мастер, модуль-слейв), то опросить их по тому же modbus tcp с верхнего уровня (например MasterScada) не получится?

Добрый день.
Получится без каких-то проблем.
Но в случае MasterSCADA проще использовать OPC UA.

sco-scorpion
06.09.2023, 08:41
Добрый день.
Возникла проблема с работой ФБ R_TRIG, простое включение, но выход не включается не могу понять что не так

Евгений Кислов
06.09.2023, 08:49
Добрый день.
Возникла проблема с работой ФБ R_TRIG, простое включение, но выход не включается не могу понять что не так

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

Евгений Кислов
06.09.2023, 08:54
Только мышкой изменил по вертикали.И как ранее написал: ВЫЧИСЛИЛ! высота таблицы в пикселях должна быть точно кратна размеру строки. Заносите в хелп. 1-2 пиксель вообще глазом не видно, а работать не будет нормально.

В вашем примере это тоже работает именно так, как настроено. Строки прокручиваются и выделяются цветом.
То, что из-за несовпадения высоты строк у вас переход между строками 7 и 8 отображается после прокрутки на 2 строки - это ожидаемое поведение.
Мы в любом случае добавим в документацию примечание об этом - спасибо за пожелание.

sco-scorpion
06.09.2023, 09:28
R_TRIG формирует единичный импульс - глазами вы его не увидите.

Переменная С должна ж быть TRUE

Евгений Кислов
06.09.2023, 09:39
Переменная С должна ж быть TRUE

Посмотрите, пожалуйста, как работает R_TRIG:
https://youtu.be/OiXnh6t73ug?si=BQru2BfrWKNDgkiw

ETL_Роман
06.09.2023, 09:45
Есть какой-то гайд как по сетевым настройкам модулей I/O и мастера Ethernet. Какие выставлять таймеры (таймаут ответа/минимальный период опроса/таймаут ответа modbas TCP/таймаут сокета). Как менять при увеличении количества опрашиваемых модулей. У меня сейчас 10 опрашиваемых устройств в системе, не требующей очень высокой точности, но и получать данные раз в 10 секунд не хотелось бы.

Евгений Кислов
06.09.2023, 09:52
Есть какой-то гайд как по сетевым настройкам модулей I/O и мастера Ethernet. Какие выставлять таймеры (таймаут ответа/минимальный период опроса/таймаут ответа modbas TCP/таймаут сокета). Как менять при увеличении количества опрашиваемых модулей. У меня сейчас 10 опрашиваемых устройств в системе, не требующей очень высокой точности, но и получать данные раз в 10 секунд не хотелось бы.


таймаут ответа - в общем случае не имеет значения, так как используется таймаут ответа modbus TCP;
минимальный период опроса - зависит от конкретного модуля (насколько часто он может отвечать?). Чем меньше период опроса - тем больше нагрузка на CPU;
таймаут ответа modbus TCP - зависит от конкретного модуля (какая у него может быть задержка между получением запроса и отправкой ответа?);
таймаут сокета - в общем случае нет смысла менять значение по умолчанию.

Schizo
06.09.2023, 10:28
А в чем засада то


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

Гончаров И.
06.09.2023, 10:32
Добрый день, идет разработка проекта, требуется управление СПК, но он встроен в Exd шкаф.
Подскажите пожалуйста возможно ли на СПК107 реализовать управление курсором, имитацию нажатия на экран, а так же ввод значений с внешних кнопок.
Планируется подключать к СПК модули расширения, а к ним уже кнопки.
Пробовал подключать клавиатуру и мышь по USB, но управление курсором только через мышку.
Пример СПК и назначение кнопок прилагаю 70063

Евгений Кислов
06.09.2023, 10:37
Добрый день, идет разработка проекта, требуется управление СПК, но он встроен в Exd шкаф.
Подскажите пожалуйста возможно ли на СПК107 реализовать управление курсором, имитацию нажатия на экран, а так же ввод значений с внешних кнопок.
Планируется подключать к СПК модули расширения, а к ним уже кнопки.
Пробовал подключать клавиатуру и мышь по USB, но управление курсором только через мышку.
Пример СПК и назначение кнопок прилагаю 70063

Добрый день. Технически это возможно, хотя и не очень просто.
Посмотрите здесь п. 6:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysVisuIecCode.pdf

Votrj1
06.09.2023, 12:51
В вашем примере это тоже работает именно так, как настроено. Строки прокручиваются и выделяются цветом.
То, что из-за несовпадения высоты строк у вас переход между строками 7 и 8 отображается после прокрутки на 2 строки - это ожидаемое поведение.
Мы в любом случае добавим в документацию примечание об этом - спасибо за пожелание.


Евгений во первых спасибо за совместный поиск ошибки.
А во вторых вот такие настройки высоты таблицы из 10 строк сделайте, вообще маркера на 10 нажатий не увидите. Вот с этим я и мучался.

Alejandro.ruso
07.09.2023, 18:48
70084
70085
70086
70087
70088
70089

Alejandro.ruso
07.09.2023, 18:51
Извиняюсь, что долго не делал скрины, надеюсь, что получилось всё правильно.

Alejandro.ruso
07.09.2023, 18:58
Добрый день.
А в меню Пуск появился CODESYS Installer?
70090
70091
70093
70092
70094
70095

Евгений Кислов
07.09.2023, 19:21
Если вы планируете программировать СПК207 - то вам нужно установить CODESYS V3.5 SP5 Patch 5 и архив репозитория (ссылка в подписи).

yurya
08.09.2023, 09:14
Добрый день.
В трее пропал Gateway. Запустил через ПУСК. В трее появился, но не запускается. В чем дело?

Евгений Кислов
08.09.2023, 09:16
Добрый день.
В трее пропал Gateway. Запустил через ПУСК. В трее появился, но не запускается. В чем дело?

Добрый день.
Возможно, у вас служба CODESYS Gateway перестала запускаться.
Попробуйте запустить ее вручную (Диспетчер задач Windows - Службы).

yurya
08.09.2023, 09:19
Добрый день.
В трее пропал Gateway. Запустил через ПУСК. В трее появился, но не запускается. Шлюз красный. В чем дело?

yurya
08.09.2023, 09:25
Добрый день.
Возможно, у вас служба CODESYS Gateway перестала запускаться.
Попробуйте запустить ее вручную (Диспетчер задач Windows - Службы).

Служба пропала. Сравнил с другим ПК. Там есть.

Евгений Кислов
08.09.2023, 09:48
Тогда установите Gateway:
https://ftp.owen.ru/CoDeSys3/01_CODESYS/CODESYS%20Gateway%20V3.5SP5Patch5%20Setup.zip

yurya
08.09.2023, 09:56
Тогда установите Gateway:
https://ftp.owen.ru/CoDeSys3/01_CODESYS/CODESYS%20Gateway%20V3.5SP5Patch5%20Setup.zip

Жду Админа, недостаточно прав для установки.
Пропало две службы (в сравнении с другим ПК): CODESYS Gateway V3 и CODESYS ServiceControl. Почему такое можно случиться?

Евгений Кислов
08.09.2023, 10:00
Жду Админа, недостаточно прав для установки.
Пропало две службы (в сравнении с другим ПК): CODESYS Gateway V3 и CODESYS ServiceControl. Почему такое можно случиться?

Такое может случится, если были удалены соответствующие программные компоненты.

yurya
08.09.2023, 10:41
Такое может случится, если были удалены соответствующие программные компоненты.

Спасибо. Работа возобновилась.
Версия Gateway была 3.5.17.30, сейчас 3.5.5.50. Это нормально?

Евгений Кислов
08.09.2023, 10:42
Спасибо. Работа возобновилась.
Версия Gateway была 3.5.17.30, сейчас 3.5.5.50. Это нормально?

Да, на подключение к ПЛК это не повлияет.

sssssaaaaabbbbb
11.09.2023, 11:12
Здрасвтвуйте, есть ли у кого то код фильтра для измерения аналогового сигнала? Типа Калмана или матричного.

Гончаров И.
12.09.2023, 18:37
Спасибо, описано то что нужно, но пока не до конца разобрался в коде. Правильно я понял, что если убрать галку Standard keyboard handling то клавиатура в принципе заменяет мышь и можно будет переключаться меду блоками визуализации с помощью кнопок? Пробовал подключать клавиатуры к СПК107 но они никак не хотят работать. С мышкой таких проблем нет, она определяется сразу. Так же прошу объяснить почему при открытии примера из п.6.2 https://ftp.owen.ru/CoDeSys3/98_Books/CodesysVisuIecCode.pdf у меня появляется ошибка? 70160 При нажатии на "Да", при компиляции появляются 5 ошибок 70161

RamesIV
12.09.2023, 20:51
Здравствуйте!

Такой вопрос.

Есть базовый интерфейс:
INTERFACE ItfBase

и его насдедник:
INTERFACE ItfDerived EXTENDS ItfBase,

а также визуализация в интерфейсе которой указана переменная реализующая ItfBase
VAR_IN_OUT
TestItfBase:ItfBase;
END_VAR

Возможно ли передать экземпляру данной визуализации переменную, реализующую ItfDerived?
И в общем случае существует ли в Codesys механизм приведения интерфейсов?

CDS3/5SP17P3.

Евгений Кислов
13.09.2023, 07:55
Здравствуйте!

Такой вопрос.

Есть базовый интерфейс:
INTERFACE ItfBase

и его насдедник:
INTERFACE ItfDerived EXTENDS ItfBase,

а также визуализация в интерфейсе которой указана переменная реализующая ItfBase
VAR_IN_OUT
TestItfBase:ItfBase;
END_VAR

Возможно ли передать экземпляру данной визуализации переменную, реализующую ItfDerived?
И в общем случае существует ли в Codesys механизм приведения интерфейсов?

CDS3/5SP17P3.

Добрый день.

1. Да.
2. https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_operator_queryinterface.html

Евгений Кислов
13.09.2023, 07:56
Спасибо, описано то что нужно, но пока не до конца разобрался в коде. Правильно я понял, что если убрать галку Standard keyboard handling то клавиатура в принципе заменяет мышь и можно будет переключаться меду блоками визуализации с помощью кнопок? Пробовал подключать клавиатуры к СПК107 но они никак не хотят работать. С мышкой таких проблем нет, она определяется сразу. Так же прошу объяснить почему при открытии примера из п.6.2 https://ftp.owen.ru/CoDeSys3/98_Books/CodesysVisuIecCode.pdf у меня появляется ошибка? 70160 При нажатии на "Да", при компиляции появляются 5 ошибок 70161

1. Да, именно так.
2. После подключения клавиатуры требуется перезагрузить контроллер.
3. Потому что в примерах из статьи использован плагин визуализации 4.3.0.0, а у вас, вероятно, используется родной из дистрибутива V3.5 SP17 Patch 3 - 4.1.1.0.

RamesIV
13.09.2023, 08:47
Добрый день.

1. Да.
2. https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_operator_queryinterface.html

1. При попытке привязать наследника к визуализации напрямую получаем ошибку "Невозможно конвертировать тип 'REFERENCE TO IValveBiSimple' в тип 'IValveBISign'", как прикруть сюда __QUERYINTERFACE не понятно.

RamesIV
13.09.2023, 09:04
Добрый день.

1. Да.
2. https://content.helpme-codesys.com/en/CODESYS%20Development%20System/_cds_operator_queryinterface.html

Получилось так:

1) Объявляем переменную типа ItfBase varItfBase : ItfBase
2) Привязываем к varItfBase визуализации
3) Приводим интерфейс __QUERYINTERFACE( varItfDerived , varItfBase ) в POU

Возможно ли сделать без конвертации в POU?

Евгений Кислов
13.09.2023, 09:12
Получилось так:

1) Объявляем переменную типа ItfBase varItfBase : ItfBase
2) Привязываем к varItfBase визуализации
3) Приводим интерфейс __QUERYINTERFACE( varItfDerived , varItfBase ) в POU

Возможно ли сделать без конвертации в POU?

Можно к varItfBase в ссылке фрейма сразу привязать переменную типа varItfDerived.

RamesIV
13.09.2023, 10:09
Можно к varItfBase в ссылке фрейма сразу привязать переменную типа varItfDerived.

Не привязывается (в визуализации ItfBase, во фрейме указываем ItfDerived):

Невозможно конвертировать тип 'REFERENCE TO ItfBase' в тип 'ItfDerived'

Евгений Кислов
13.09.2023, 10:12
Не привязывается (в визуализации ItfBase, во фрейме указываем ItfDerived):

Невозможно конвертировать тип 'REFERENCE TO ItfBase' в тип 'ItfDerived'

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

=provincial=
13.09.2023, 16:12
Здравствуйте, у меня в устройстве ModBus Master задвоились переменные на вкладке "Соотнесение входов и выходов". Это лечится?
Во вкладке "Канал ModBus Slave" в таблице всё хорошо, а вот там, где привязывать переменные - трэш.
При создании таблицы регистров я использовал кнопки внизу "Вверх"/ "Вниз".
Да и вообще, очень не продуман интерфейс добавления строк и работы с ними, всё нужно делать вручную. Ни скопировать, ни вставить...

Евгений Кислов
13.09.2023, 16:23
Здравствуйте, у меня в устройстве ModBus Master задвоились переменные на вкладке "Соотнесение входов и выходов". Это лечится?
Во вкладке "Канал ModBus Slave" в таблице всё хорошо, а вот там, где привязывать переменные - трэш.
При создании таблицы регистров я использовал кнопки внизу "Вверх"/ "Вниз".
Да и вообще, очень не продуман интерфейс добавления строк и работы с ними, всё нужно делать вручную. Ни скопировать, ни вставить...

Нет, не лечится.

Romashoff
15.09.2023, 14:41
Добрый день. Вопросов 2.
1. Возможно ли при помощи библиотеки MQTT_Client подписываться на несколько топиков одновременно.
2. Мне приходят данные в формате строки, я достоверно знаю что в этой строке лежит значение инта була или реала , можно ли как то быстро понять какой тип данных прилетел. Или делать функцию в которой парсить строку

ShivA
18.09.2023, 14:09
Добрый день. После запуска проекта на выполнение, (ALT+F8) codesys выдает сообщение об ошибке: "неверный пакет результатов". Компиляция проходит без ошибок. Кто знает, где копать? Заранее спасибо. PS: результат один и тот же, если действующий проект заменить бэкапом, который точно рабочий.

Евгений Кислов
18.09.2023, 14:20
Добрый день. Вопросов 2.
1. Возможно ли при помощи библиотеки MQTT_Client подписываться на несколько топиков одновременно.
2. Мне приходят данные в формате строки, я достоверно знаю что в этой строке лежит значение инта була или реала , можно ли как то быстро понять какой тип данных прилетел. Или делать функцию в которой парсить строку

Добрый день.

1. Да.
2. Нужно писать парсер.

Евгений Кислов
18.09.2023, 14:21
Добрый день. После запуска проекта на выполнение, (ALT+F8) codesys выдает сообщение об ошибке: "неверный пакет результатов". Компиляция проходит без ошибок. Кто знает, где копать? Заранее спасибо. PS: результат один и тот же, если действующий проект заменить бэкапом, который точно рабочий.

Добрый день.
Я такое наблюдал при проблемах со связью между ПК и ПЛК (например, если в локальной сети случается сбой, и часть пакетов начинает теряться).

Romashoff
18.09.2023, 15:38
Добрый день.

1. Да.

Спасибо !
А как ? если в общих чертах ? я сделал что он бегает и по очереди подписывается на разные топики. Но тут проблема возникает если топик был опубликован без retain то я могу и не увидеть изменение.

Евгений Кислов
18.09.2023, 15:56
Но тут проблема возникает если топик был опубликован без retain то я могу и не увидеть изменение.

Опишите детальнее предполагаемую проблему.

ShivA
18.09.2023, 16:58
Добрый день.
Я такое наблюдал при проблемах со связью между ПК и ПЛК (например, если в локальной сети случается сбой, и часть пакетов начинает теряться).

Странным образом завис СПК107, продолжал нормально выполнять свои задачи, но сенсорный экран не функционировал... пока обратил на это внимание, уже снес codesys, пставил заново, снес, поставил.... перезагрузка по питанию помогла... кста, наблюдаю отстегивание web-морды после нескольких загрузок исходного кода в СПК при отладке программы... решается перезагрузкой из меню СПК. но такое же не должно происходить? началось после перехода на 17 версию.

ShivA
18.09.2023, 19:55
доброго дня. Как-то давно прилетело обновление BASIC 3.3.4.0 ну ладно... прилетело и прилетело... с того времени уже немало проектов было сделано, тут понадобилось снести codesys и установить заново, а библиотека BASIC 3.3.4.0 даже на сайте производителя отсутствует.... вот дела... как быть?

Евгений Кислов
18.09.2023, 20:10
Странным образом завис СПК107, продолжал нормально выполнять свои задачи, но сенсорный экран не функционировал... пока обратил на это внимание, уже снес codesys, пставил заново, снес, поставил.... перезагрузка по питанию помогла... кста, наблюдаю отстегивание web-морды после нескольких загрузок исходного кода в СПК при отладке программы... решается перезагрузкой из меню СПК. но такое же не должно происходить? началось после перехода на 17 версию.

Да, такого не должно происходить.
Чтобы разобраться в ситуации - отправьте на support@owen.ru ваш проект и детально опишите, как с его помощью повторить проблему.

Евгений Кислов
18.09.2023, 20:10
доброго дня. Как-то давно прилетело обновление BASIC 3.3.4.0 ну ладно... прилетело и прилетело... с того времени уже немало проектов было сделано, тут понадобилось снести codesys и установить заново, а библиотека BASIC 3.3.4.0 даже на сайте производителя отсутствует.... вот дела... как быть?

https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/02_Libraries/OSCATBasic_v3.3.4.0.package

Romashoff
19.09.2023, 06:25
Опишите детальнее предполагаемую проблему.

Если параметр публикуется без Retain то когда подписываешься на топик после публикации там нет значения.
Протокол MQTT поддерживает подписку на множество топиков. Тот же маскитовский клиент просто подписывается на кучу топиков сразу и ждет параметры.
с библиотекой MQTT_CLient для CODESYS на PLC200 я не знаю возможна ли подписка одновременно на кучу топиков. Я смог реализовать лишь последовательную подписку на топики клиентом пробегаясь по списку топиков.
Ну и проблема что если была публикация без Retain я не вижу параметр потому что в момент публицации читался другой топик из списка.
НУ и это не правильно я считаю когда один клиент посылает брокеру кучу "сабскрайбов" .
Поэтому и спросил а можно ли сразу подписаться списком на топики и просто ждать параметры.
Пока решение для каждого топика свой клиент тогда параметры достоверно будут получены контроллером (около 50-ти клиентов).
П.С. С публикацией таже проблема в общем то приходится постоянно менять переменную сообщения и топика далее публиковать, потом ждать состояния завершения публикации , выключать публикацию менять сообщение и топик и снова публиковать, но это хотя бы работает достаточно стабильно.

Евгений Кислов
19.09.2023, 07:42
Я смог реализовать лишь последовательную подписку на топики клиентом пробегаясь по списку топиков.

В рамках данной библиотеки подразумевается именно этот подход.


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

Честно говоря, не до конца понимаю термин "читался". В MQTT клиент не "читает", а получает сообщение от брокера.
На всякий случай уточню - вы же понимаете, что подписку на все нужные топики на топики достаточно сделать однократно при старте приложения?


НУ и это не правильно я считаю когда один клиент посылает брокеру кучу "сабскрайбов" .

Вы смотрели через WireShark, что делает "маскитовский клиент", когда "просто подписывается на кучу топиков сразу ?

Romashoff
19.09.2023, 11:29
На всякий случай уточню - вы же понимаете, что подписку на все нужные топики на топики достаточно сделать однократно при старте приложения?

Нет не понимал.
Тогда не подскажите как управлять входами i_xSubscribe и именем топика i_xTopicSubscribe библиотеки MQTT_Client что бы за 1 итерацию подписаться на все необходимые мне топики, спасибо.

Евгений Кислов
19.09.2023, 11:32
Нет не понимал.
Тогда не подскажите как управлять входами i_xSubscribe и именем топика i_xTopicSubscribe библиотеки MQTT_Client что бы за 1 итерацию подписаться на все необходимые мне топики, спасибо.

Что вы называете термином "1 итерация"?

Romashoff
19.09.2023, 11:43
Что вы называете термином "1 итерация"?

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

iv.kmz
19.09.2023, 11:43
Здравствуйте!

Что нужно сделать, чтобы в визуализации у элементов появились свойства-события OnMouseDown и т.п.?

70283

Евгений Кислов
19.09.2023, 11:52
Здравствуйте!

Что нужно сделать, чтобы в визуализации у элементов появились свойства-события OnMouseDown и т.п.?

70283

Добрый день.
В настройках элемента вверху справа поставьте галочку Дополнительно- тогда отобразится больше настроек.

Евгений Кислов
19.09.2023, 12:09
Вы сказали выше что подписываемся на все топики 1 раз при старте, на сколько я понял это стандартный алгоритм проверки первого запуска в котором мы должны сделать все подписки (1 итерация контроллера) после чего в это условие проверки 1-ого старта больше не попадаем ни когда. Только при след. запуске плк.

Тут описано, как что-то сделать при старте контроллера:
https://www.owen.ru/forum/showthread.php?t=28167&p=304642&viewfull=1#post304642

Теперь по поводу алгоритма:
1. генерируете единичный импульс на входе i_xSubscribe (при этом на входе i_xTopicSubscribe должно быть задано имя первого интересующего топика)
2. дожидаетесь, пока на выходе q_udiState появится значение 67 (подписка прошла успешно) или 90 (подписка не удалась)
3. генерируете следующий единичный импульс и повторяете п. 1-3 с разными названиями топиков
4. когда подпишитесь на все топики - переводите xIsPlcStarted из сниппета по ссылке выше в значение TRUE

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

Romashoff
19.09.2023, 12:11
Евгений, спасибо разобрался. Ваши вопросы помогли выйти из ступора.
Вы уже алгоритм написали ) думаю все ровно пригодится будущим поколениям

Votrj1
19.09.2023, 13:34
Опять наверно к Евгению. Тренды cs 3,5,16-3. Смотрим скрин. Все не проверял, но для оси +5/-15 если дать значение параметра больше ~+2200 то линия тренда вместо того чтоб прижаться к верху прижимается к низу как отрицательное число. И это не >= 2048 , а что то другое. Чисто для сведения, так как был удивлен поведением.
И Вопроc: можно ли как то из программы воздействовать на указанную красным кнопку, так как сдвигают бегунок по центру и графики переходят в режим истории и замораживаются на всегда пока не нажмешь указанную кнопку.

Евгений Кислов
19.09.2023, 14:03
Опять наверно к Евгению. Тренды cs 3,5,16-3. Смотрим скрин. Все не проверял, но для оси +5/-15 если дать значение параметра больше ~+2200 то линия тренда вместо того чтоб прижаться к верху прижимается к низу как отрицательное число. И это не >= 2048 , а что то другое. Чисто для сведения, так как был удивлен поведением.
И Вопроc: можно ли как то из программы воздействовать на указанную красным кнопку, так как сдвигают бегунок по центру и графики переходят в режим истории и замораживаются на всегда пока не нажмешь указанную кнопку.

В 3.5.17.3 у меня не воспроизвелось:

70285

Насчет вопроса - насколько я знаю, такой возможности нет.

ГЛЮКОNIC
19.09.2023, 14:45
Тренды для CS3.5 от Owen в каком формате будут записывается ? - очень хотелось бы в офисовских форматах типа публиш или тд.

Евгений Кислов
19.09.2023, 16:02
Тренды для CS3.5 от Owen в каком формате будут записывается ? - очень хотелось бы в офисовских форматах типа публиш или тд.

В форматах .bin (внутренний формат, используется самим элементом) и .csv (для операторов и других пользователей, файлы этого формата можно открыть в Microsoft Excel и другом аналогичном ПО.

Votrj1
20.09.2023, 07:47
В 3.5.17.3 у меня не воспроизвелось:

70285

Насчет вопроса - насколько я знаю, такой возможности нет.

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

Евгений Кислов
20.09.2023, 08:04
А на всякий случай: находится в историческом режиме тренды так долго могут, они не в буфер пишут? Что нибудь не переполнится?

В документации не указано каких-то ограничений на время нахождения трендов в историческом режиме.

Гончаров И.
20.09.2023, 09:00
Добрый день, подскажите пожалуйста. Допустим есть здание А. В этом здании 100 датчиков типа сухой контакт (НЗ). Они подключены через адресную метку по Modbus RTU к СПК107. Есть здание Б. В нем 30 датчиков типа сухой контакт, так же подключенных. Возможно ли сделать универсальную программу для двух зданий? Допустим в программе будет 100 адресов и через пульт СПК107 выбрать адреса которые надо опрашивать, а остальные, например, отключать? Или можно и не отключать, а просто у 30 датчиков здания Б, сделать такие же адреса как у 30 из 100 здания А? Возможно будут и другие здания, там будет другое количество датчиков. Если какой то из вариантов можно исполнить, возможно ли сделать какой-нибудь конфигуратор этих датчиков через контроллер. Например, в здании А выбрать адрес 10 и задать ему что это датчик температуры, следовательно в журнале аварий должно отображаться "Превышение температуры", а в здании Б задать 10 адрес датчиком влажности и в журнале аварий должно отображаться "Превышение влажности"?

Евгений Кислов
20.09.2023, 09:05
Добрый день, подскажите пожалуйста. Допустим есть здание А. В этом здании 100 датчиков типа сухой контакт (НЗ). Они подключены через адресную метку по Modbus RTU к СПК107. Есть здание Б. В нем 30 датчиков типа сухой контакт, так же подключенных. Возможно ли сделать универсальную программу для двух зданий? Допустим в программе будет 100 адресов и через пульт СПК107 выбрать адреса которые надо опрашивать, а остальные, например, отключать? Или можно и не отключать, а просто у 30 датчиков здания Б, сделать такие же адреса как у 30 из 100 здания А? Возможно будут и другие здания, там будет другое количество датчиков. Если какой то из вариантов можно исполнить, возможно ли сделать какой-нибудь конфигуратор этих датчиков через контроллер. Например, в здании А выбрать адрес 10 и задать ему что это датчик температуры, следовательно в журнале аварий должно отображаться "Превышение температуры", а в здании Б задать 10 адрес датчиком влажности и в журнале аварий должно отображаться "Превышение влажности"?

Добрый день.
Всё перечисленное реализуемо.

Николай Суриков
21.09.2023, 09:42
Предыдущую ошибку устранил. Но в процессе установки появлялась другая:
65031

"It is possible that packages from this path could not be installed:
(Возможно, что пакеты с этого пути не могли быть установлены...)

Это критично или не обращать внимания?

Добрый день коллеги.
Есть решение данной ошибки при установки CoDeSys?
Уже все перепробовал, осталось только Windows переустановить, а это сложно, так как компьютер стоит на объекте и подключение к нему осуществляется через удаленный доступ.

Евгений Кислов
21.09.2023, 09:48
Добрый день коллеги.
Есть решение данной ошибки при установки CoDeSys?
Уже все перепробовал, осталось только Windows переустановить, а это сложно, так как компьютер стоит на объекте и подключение к нему осуществляется через удаленный доступ.

Добрый день.
Насколько я помню - такая ошибка бывает, когда не хватает места на диске, на который устанавливается CODESYS (например, если там осталась всего пара гигабайт).