Страница 576 из 712 ПерваяПервая ... 76476526566574575576577578586626676 ... ПоследняяПоследняя
Показано с 5,751 по 5,760 из 7120

Тема: CODESYS V3.5. Вопросы и ответы

  1. #5751
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,193

    По умолчанию

    Цитата Сообщение от Карбофос Посмотреть сообщение
    Еще вопрос: есть ли функция, возвращающая текущее количество активных тревог?
    Посмотрите пример:
    https://forge.codesys.com/svn/prj,co...anager.project

    В PLC_PRG см. вызовы AlarmManager.g_AlarmHandler.GetActiveAlarms и получение интерфейса клиентов перед ними.

  2. #5752

    По умолчанию

    Цитата Сообщение от Rudy_69 Посмотреть сообщение
    Большое спасибо, а как потом c WORD в REAL преобразовать?
    https://owen.ru/forum/showthread.php?t=37645&page=8#78

  3. #5753

    По умолчанию

    Добрый день. Подскажите, пожалуйста, как можно изменить число подключаемых клиентов по ModBus TCP при использовании библиотеки OwenCommunication?

  4. #5754
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,193

    По умолчанию

    Цитата Сообщение от SemAndr Посмотреть сообщение
    Добрый день. Подскажите, пожалуйста, как можно изменить число подключаемых клиентов по ModBus TCP при использовании библиотеки OwenCommunication?
    Добрый день.
    С помощью глобального параметра библиотеки, который называется g_c_usiMaxCountClients (вкладка Settings в дереве библиотеки в Менеджере библиотек).

  5. #5755
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    Добрый день.
    Подскажите пожалуйста, в CoDeSys 3.5 SP14 P3+ наблюдались ли проблемы с функцией TEST_AND_SET ?
    В проекте активно используется синхронизация многопоточного доступа, и возникают ситуации, похожие на некорректное срабатывание TEST_AND_SET .

  6. #5756
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    Использую эту функцию таким образом:

    Код:
    	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
    Или это у меня ошибка?

  7. #5757
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,193

    По умолчанию

    Добрый день.

    В проекте активно используется синхронизация многопоточного доступа
    Сочувствую.

    и возникают ситуации, похожие на некорректное срабатывание TEST_AND_SET .
    Какое именно поведение TEST_AND_SET вы считает корректным, а какое - нет?

  8. #5758
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    > Сочувствую.

    Так всё плохо с синхронизацией многопоточности в CoDeSys? :-)

    > Какое именно поведение TEST_AND_SET вы считает корректным, а какое - нет?

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

  9. #5759
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,193

    По умолчанию

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

    Но "защищённые" данные портятся так, если бы TEST_AND_SET не выполняла атомарность.
    В принципе, даже "защищенные" данные можно легко испортить в любом фрагменте кода с массивами, указателями и т.д.

    Тут беда ещё в том, что отладке всё это многопоточное поддаётся чуть лучше, чем никак
    Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать. (с) Брайан Керниган

    Еще рекомендую обратить внимание на три слова на обложке одной известной книги.

  10. #5760
    Пользователь
    Регистрация
    08.02.2020
    Адрес
    Ставрополь
    Сообщений
    228

    По умолчанию

    > там, где действительно нужна

    Обмен данными с устройствами Modbus.

    > даже "защищенные" данные можно легко испортить в любом фрагменте кода с массивами

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

Страница 576 из 712 ПерваяПервая ... 76476526566574575576577578586626676 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3204
    Последнее сообщение: Сегодня, 08:50
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 826
    Последнее сообщение: 30.04.2024, 20:16
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •