Спасибо!!!
Вид для печати
Спасибо!!!
Подскажите, чем отличаются эти 2 модема? SP17p3.
Вложение 67802
Подскажите еще, нет ли решения для связи конфигурации тревог и отправки SMS? Ну, чтобы при формировании тревоги, автоматически отправлялось SMS? Или только вручную?
Какой-то код все равно потребуется написать.
По-моему, Cs-Cs где-то выкладывал на форуме пример.
Или можете взять за основу пример отправки e-mail при появлении тревоги:
https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive
Спасибо, посмотрю.
Подскажите пожалуйста по вашему примеру с e-mail. Пока убрал сам блок отправки, хочу увидеть для начала сформированную строку с текстом тревоги. Активные тревоги в контроллере имеются, но ничего не происходит:
Вложение 67810Вложение 67811
Чего-то не хватает?
Спасибо за помощь!
Добрый день! Возникли проблемы с передачей значения температуры. Передача осуществляется по 485 с ПР на СПК. Переменную температуры я преобразовал в целочисленный тип и записал в сетевую. Как быть дальше в Кодесисе, подойдёт ли Read Holding Registers, к какому типу привязаться ARRAY OF WORD или WORD ? Я знаю, что можно из 2х вордов преобразовать в реал с помощью WORD_TO_REAL, но тут передаётся 1 переменной.
Добрый день.
Подойдет.Цитата:
подойдёт ли Read Holding Register
В вашем случае - к WORD.Цитата:
к какому типу привязаться ARRAY OF WORD или WORD
Большое спасибо, а как потом c WORD в REAL преобразовать?
Еще вопрос: есть ли функция, возвращающая текущее количество активных тревог?
Посмотрите пример:
https://forge.codesys.com/svn/prj,co...anager.project
В PLC_PRG см. вызовы AlarmManager.g_AlarmHandler.GetActiveAlarms и получение интерфейса клиентов перед ними.
Добрый день. Подскажите, пожалуйста, как можно изменить число подключаемых клиентов по ModBus TCP при использовании библиотеки OwenCommunication?
Добрый день.
Подскажите пожалуйста, в CoDeSys 3.5 SP14 P3+ наблюдались ли проблемы с функцией TEST_AND_SET ?
В проекте активно используется синхронизация многопоточного доступа, и возникают ситуации, похожие на некорректное срабатывание TEST_AND_SET .
Использую эту функцию таким образом:
Или это у меня ошибка?Код:SleepTime := TIME();
REPEAT
IsWLocked := SEL(IsWLocked = TRUE, TEST_AND_SET(WDataDefender) = 0, TRUE);
IsRLocked := SEL(IsRLocked = TRUE, TEST_AND_SET(RDataDefender) = 0, TRUE);
UNTIL
((TIME() - SleepTime) > DataLockWaitTime) OR_ELSE
((IsWLocked AND IsRLocked) = TRUE)
END_REPEAT
IF (IsWLocked AND IsRLocked) = TRUE THEN
// Тут работа с "защищёнными" данными
END_IF
IF IsRLocked = TRUE THEN RDataDefender := 0; END_IF
IF IsWLocked = TRUE THEN WDataDefender := 0; END_IF
Добрый день.
Сочувствую.Цитата:
В проекте активно используется синхронизация многопоточного доступа
Какое именно поведение TEST_AND_SET вы считает корректным, а какое - нет?Цитата:
и возникают ситуации, похожие на некорректное срабатывание TEST_AND_SET .
> Сочувствую.
Так всё плохо с синхронизацией многопоточности в CoDeSys? :-)
> Какое именно поведение TEST_AND_SET вы считает корректным, а какое - нет?
Корректное -- соответствующее документации, некорректное -- не соответствующее.
Тут беда ещё в том, что отладке всё это многопоточное поддаётся чуть лучше, чем никак, потому твёрдой уверенности в том, что TEST_AND_SET чудит, у меня нет. Но "защищённые" данные портятся так, если бы TEST_AND_SET не выполняла атомарность.
Всё вполне нормально, если она используется там, где действительно нужна, а не в фундаменте системы автоматизации очередной абстрактной фабрики.Цитата:
Так всё плохо с синхронизацией многопоточности в CoDeSys?
В принципе, даже "защищенные" данные можно легко испортить в любом фрагменте кода с массивами, указателями и т.д.Цитата:
Но "защищённые" данные портятся так, если бы TEST_AND_SET не выполняла атомарность.
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать. (с) Брайан КерниганЦитата:
Тут беда ещё в том, что отладке всё это многопоточное поддаётся чуть лучше, чем никак
Еще рекомендую обратить внимание на три слова на обложке одной известной книги.
> там, где действительно нужна
Обмен данными с устройствами Modbus.
> даже "защищенные" данные можно легко испортить в любом фрагменте кода с массивами
Есть и на это подозрение, я ошибусь с бОльшей вероятностью, чем разработчики компилятора.
Вложение 67847Вложение 67848Вложение 67849 Добрый день. Пожалуйста помогите. Дайте идею. Смысл такой выбираю цвет, выбираю на другой панели светильник при его активации заливается новый цвет, а старый сбрасывается. Светильников 10шт. Цветов 16, но может быть и больше. Начал писать через IF. Все получается , но представьте сколько потрачу времени. Дайте совет. Пожалуйста.
С блоком я понимаю, но у меня еще есть 16 цветов и на каждый цвет я сейчас использую SR. На данный момент я вижу, чтобы создать блок надо отработать 16 SRок. Здесь наверно уже никак не спастись, придется все 16 расписывать?
Здравствуйте, подскажите, возможно ли сделать кнопку "Задать время с ПК", которая устанавливала бы текущую время и дату с компьютера в ПЛК ? Если возможно, то как ?
При выборе цвета SR его цепляет и держит, кнопка записи отпускается. А сброс происходит при нажатии другой кнопки и там тоже самое. Вот теперь подскажите пожалуйста как правильно написать массив в RESET . Пишу RESET:=MassivNameColor[2].bUstavColor, а нужно типа RESET:=MassivNameColor[2..16].bUstavColor, а единица работает. Дает ошибку могу писать только Резеты через запятую все 15штук. Но чувствую, что можно правильно написать, только я не знаю.
Смысл такой есть массив состоящий из 16 кнопок, сразу несколько я нажать не могу по условию, то есть работает только одна , если я меняю кнопку(а это кнопка входит в оставшиеся 15) то там первая отключается и работать начинает другая. И так далее. Каждая кнопка это структура у которой есть название и цвет. Которые уже привязываются к соответствующей лампочке. Менять я не могу , мне нужно, чтобы они были все сразу. Так как я могу нажать любую из пятнадцати оставшихся и соответственно РЕЗЕТ должен отключить не выбирая. Допустим я поставлю х, как х будет присваиваться нужное мне значения. Что то я сам себя уже запутал. Кстати необязательно писать на ИФах я просто так начал, может есть какие еще версии. Я учусь и эксперементирую Простите.
Дмитрий Хороменков Шо-то по идее работы это всё напоминает световые пульты (для сценического света). Вот как такой, который у меня есть.
Там делается такое управление: на экране (или физическими кнопками) выбираются приборы (аналог - светильники), а потом в другой части пульта для выбранных приборов меняются их атрибуты (цвет, яркость, положение луча и так далее).
В ПЛК я бы накрутил по аналогии: массив кнопок с лампами, чтобы их выбирать (свойство кнопки - Toggle, чтобы одним нажатием кнопка нажималась, означая выбранную лампу, а другим отжималась, означая не выбранную лампу), и массив цветов. Натыкали кнопками нужные лампы, нажали на цвет. При выборе цвета все кнопки отжимаются.
Был бы массив переменных кнопок (BOOL) и его обработка при выборе цвета в цикле FOR (если кнопка нажата и равна TRUE - применяем цвет).
привет всем)) Немного тупой вопрос. Не совсем понимаю как исполняются FB в среде. Написано асинхронно, условно говоря параллельно основной программе? и после завершения FB и основной программы уже записываются выхода?
Добрый день.
ФБ могут быть как синхронными, так и асинхронными.
Синхронные ФБ полностью выполняют свою операцию в том же цикле задачи, в котором они вызываются. Пример - REAL_TO_WORD2 из библиотеки OwenCommunication.
Асинхронные ФБ выполняют свою операцию в течение нескольких циклов задачи (это позволяет избежать "задержек цикла"). Пример - любый коммуникационный блок из OwenComminication (например, MB_SerialRequest: от фронта на входе xExecute до фронта на выходе xDone пройдет несколько циклов задачи)
Запись "выходов" (если речь о %Q в конфигурации контроллера) происходит в конце каждого цикла задачи конфигурации.
Добрый день. Можете подсказать, почему система Codesys v3.5 SP16 patch 3 не видит библиотеку Oscat Basic, хотя она установлена в системе?Вложение 67925Вложение 67926Вложение 67927
Добрый день.
Проект на CODESYS 3.5.17.3. Девайс - Control Win V3.
При запуске проекта на ПК запускается процесс Codesys” ControlStatic TV, снять который можно только через диспетчер задач.
Что нужно сделать, чтобы этот процесс не запускался?