Отправьте архив вашего проекта на support@owen.ru
В письме укажите версию прошивки.
Вид для печати
Отправьте архив вашего проекта на support@owen.ru
В письме укажите версию прошивки.
Уважаемые коллеги прошу помощи в настройке обмена по протоколу Modbus
Codesys 3.5 sp7 patch 4,
ПЛК 323, таргет 3.5.0.40,
Modbus_COM Версия: 3.4.0.0
Проект компилируется только при Modbus Master версии не выше 3.5.0.0, но в данной версии не реализована возможность установить "авто запуск соединения".
При обновлении Modbus Master на версию 3.5.5.0 Проект выдает много ошибок при компиляции.
Есть-ли выход из данной ситуации.
Можно-ли в коде программы реализовать автоматический перезапуск соединения
Доброй ночи.
Один из функц. блоков RS232 использует библиотеку SysCom. В документации на нее, минимальная скорость 4800 Бод.
Вложение 35083
Но на железке с которой нужно получать данные, стоит фиксированная скорость 2400. Как выйти из ситуации?
Для этого надо в терминале линукса (через библиотеку CmpSysExec) выполнить команду
stty -F /dev/ttyS2 2400
где 2 - номер COM-порта (в данном случае - COM2 для контроллера СПК2хх).
После этого открыть порт на любой скорости через SysCom (она уже не должна влиять) и дальше работать как обычно.
Спасибо большое.
А как потом вернуть настройку порта в исходное, чтобы настройки контролировались из под CDS?
Просто контроллер дали во временное пользование и хотелось бы вернуть его как брал.
Достаточно будет удалить проект.
Т.е. еще раз уточню - данную команду надо однократно выполнять из CODESYS через библиотеку CmpSysExec при старте контроллера.
Можете попробовать вот этот код.
Вложение 35107
Как открыть визуализацию через вызов диалога логин пароль? Добавил в свойствах кнопки OnMauseCkick OpenDislog но диалог не открывается.
Поясните пожалуйста такую ситуацию.
Имеем следующую программу:
VAR
var1:WORD;
var2:REAL;
END_VAR;
-----
var2:=var1/10;
======
В этом случае при отображении var2 в СПК в соответствующем поле с тэгом %3.1f теряются значения после запятой. Т. е. если var1=37, то в поле вывода на СПК наблюдаю значение 3.0.
Если делаю так:
var2:=WORD_TO_REAL (var1) /10;
то отображается как надо. Т. е. если var1=37, то наблюдаю 3.7.
Почему теряется дробная часть в первом примере?
Оба алгоритма компилируются.
Потому что результатом деления целых чисел является целое число.
Лучше явно показать компилятору, что вы ожидаете результат с плавающей точкой:
Код:var2:=var1/10.0;
Доброго дня!
Есть вопрос. (Прошу сильно не пинать) )))
Есть функциональные блоки написанные под CDS2.3, можно ли их использовать в проекте CDS3.5? ... или придётся переделывать?
(Библиотеки использовались стандартные Util и Standart).
Спасибо!
1. CODESYS V3.5 SP7 Patch 4
При создании проекта "Новый проект" -> "Стандартный проект" указываю имя KNS_18.09.17
В верхней части окна его название отображается KNS_18.09.progect
Выхожу из положения так:
Когда проект уже создан "Сохранить проект как..." -> снова указываю имя файла KNS_18.09.17.project
Может я применяю в имени проекта какуют-то запрещенную последовательность символов?
2 вопрос
Возможно я ошибаюсь, может в этой версии я видел типа значка что-то связанное с программированием на C++. Сейчас не могу его найти. Я еще удивился, наверно можно писать на C и конвертить в МЭК.
1. Тут речь скорее не о запрещенных символах, а принципам, по которым CDS формирует имя проекта. Последняя точка и все ,что после нее - действительно отсекаются от названия и заменяются на расширение.
2. Только на С и только при покупке плагина, насколько я понимаю.
Здравствуйте. Подскажите, пожалуйста, будет ли работать на СПК207 оператор __New()? В эмуляторе не работает - возвращает 0. Будет ли работать физически? Нужно реализовать очередь элементов. Может есть другой способ?
Работать будет. Предварительно надо нажать ПКМ на узел Application - Свойства - Опции компиляции приложения - поставить галочку Динамическое распределение памяти.
Но при отсутствии явной необходимости и четкой уверенности в своих действиях лучше попробовать обойтись другими средствами - например, посмотреть, не подойдут ли блоки FIFO и STACK из OSCAT.
В CODESYS не так давно (SP11) появилась отдельная библиотека для работы с абстрактными типами данных (Element Collections) - но, к сожалению, данная версия среды программирования не поддерживается текущими прошивками и не рекомендуется к использованию.
Спасибо. Сомневался, потому что в эмуляторе не работает. Опции и атрибут создаваемого дута ставил, конечно же, иначе ошибка.
Здравствуйте.
Хочу считать "Измерение входа 1 с плавающей точкой"(float32) модуля аналогово ввода "МВ110-224.8А" в СПК105.
Как это сделать?
Добрый день. Проще всего - с использованием шаблона:
http://www.owen.ru/forum/showthread.php?t=27889
https://www.youtube.com/watch?v=0m5vbe7z6Ek
А, как из двух WORD склеить один REAL?
Спасибо! Я понял. Надо сначала книжку почитать.
Работаю в CS V3.5 SP7 Patch 4.
Мне нужно окрасить текст в определенный цвет, в зависимости от состояния программы.
Прописываю в объявлениях переменную и присваиваю ей значение например соответствующее красному
цвету = 16#FF0000. Далее на визуализацию добавляю текстовое поле, прописываю в него текст, и в свойствах
"Переменные шрифта" -> "Цвет" указываю путь к переменной.
Запускаю проект на исполнение, но шрифт не окрашивается в нужный мне цвет. Он просто исчезает с экрана.
Попробовал в CODESYS V3.5 SP5 Patch 3, все как нужно работает. Сейчас перевел все проекты на CS V3.5 SP5 Patch 5 тоже норм.
Переменную прописывал так: dwRed: DWORD:= 16#FF0000;
Так же в SP7 Patch 4 очень часто перед загрузкой нужно было делать очистку: "Компиляция" -> "Очистить все".
Иначе выдает ошибку.
Посмотрите пример из 11.2.1 из документа СПК. Визуализация - там это рассмотрено.
Если коротко - надо 16#FFFF0000 (потому что помимо RGB есть еще альфа-канал).
https://ru.wikipedia.org/wiki/%D0%90...BD%D0%B0%D0%BB
Как вызвать определенную визуализацию из st кода?
Доброго дня.
Реализовал прием данных через RS232 на библиотеке SysCom версии через автомат состояний.
Железка что передает данные в ПЛК, всегда передает 9 байт.
Для проверки полноты данных хочу проверять, что принял их полностью.
При реализации алгоритма нужно проверять, что в буфер записалось 9 байт. И исходя из этого переводить автомат либо в состояние очистки буфера, либо в состояние ошибки.
Количество принятых байт отдает ФБ SysComRead в переменную dwRead. Хочу ее использовать в качестве условия выбора следующего состояния. Точка останова стоит на ФБ приема (картинка ниже), все хорошо, значение вижу. Но стоит перейти на след точку останова, dwRead обнуляется и соответственно меня перебрасывает в состояние ошибки.
Почему значение dwRead сразу обнуляется, еще до того как я очистил буфер?
Как выйти из этой ситуации?
Вложение 36026
При всем уважении - почему бы вам тогда не обратиться в техподдержку компании-производителя?
Всем привет, подскажите пожалуйста как устранить проблему? А она в том, что на компе с нуля сделал систему, соответственно переустановил Codesys3.5, все делал по инструкции, но при загрузке готового проекта, выдает ошибку "не удалось загрузить одну или более библиотек", хотя все устанавливал. В менеджере библиотек видно на какие он ругается, их добавляю, а толку нет.
Версии библиотек проверять или в проекте обновить все библиотеки до последних версий, установленных у вас. Про репозиторий уже написали выше.
Есть ли возможность назначить свои изображения для переключателя в Codesys 3.5 ?