Страница 668 из 711 ПерваяПервая ... 168568618658666667668669670678 ... ПоследняяПоследняя
Показано с 6,671 по 6,680 из 7101

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

  1. #6671

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Выложите лог OPC-сервера и ваш проект CODESYS.
    https://cloud.mail.ru/public/C9Yc/Se5dJF2sY

  2. #6672

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    beatitas Я делал на СМСках от обратного: брал таймер BLNIK и раз в NN секунд просматривал очередь сообщений.
    Если там что-то было - отправлял.
    Благодарю.
    Буду пробовать, но это усложняет задачу на написание буфера для очереди сообщений. Пока вообще не понимаю с какой стороны к нему подходить и на чём основывать. SQL базу прикручивать, как это делается в вебе? Но он точно нужен, на случай массового отвала датчиков)

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

    По умолчанию

    Цитата Сообщение от beatitas Посмотреть сообщение
    Благодарю.
    Буду пробовать, но это усложняет задачу на написание буфера для очереди сообщений. Пока вообще не понимаю с какой стороны к нему подходить и на чём основывать. SQL базу прикручивать, как это делается в вебе? Но он точно нужен, на случай массового отвала датчиков)
    Если все страдания из-за гипотезы о том, что "в string можно затолкать всего 255 символов" - то она неверна.
    https://owen.ru/forum/showthread.php...l=1#post289762
    https://owen.ru/forum/showthread.php...l=1#post361101

  4. #6674

    По умолчанию

    Цитата Сообщение от beatitas Посмотреть сообщение
    Пока вообще не понимаю с какой стороны к нему подходить и на чём основывать.
    Но он точно нужен, на случай массового отвала датчиков)
    Я делал примерно так:
    1. Структура - описание элемента очереди. У неё была строка сообщения, номер адресата (для СМСок) и флаг "активно" (Active).
    Этот флаг был нужен алгоритму перебора очереди, чтобы понимать что этот элемент ещё не отправлен.

    2. Массив этих структур - сама очередь. Выбрал его жёсткие границы и сделал их в виде константы с названием типа MAX_QUEUE_SIZE для того, чтобы во всех циклах и проверках её использовать, и не было жёстко заданных магических чисел из-за которых циклы выйдут за границы массива.
    Это объявляется примерно так:
    VAR CONSTANT
    MAX_QUEUE_SIZE : WORD := 64;
    END_VAR
    VAR
    arrQueue : ARRAY [1..MAX_QUEUE_SIZE] OF SMSItem;
    END_VAR

    3. Функция "Добавить в очередь". Она в цикле перебирает весь этот массив и ищет элемент, в котором Active = FALSE, заполняет его нужными данными и ставит Active = TRUE.
    Это простой цикл с условием: как только нашли Active = FALSE, делаем нужное действие и по EXIT; выходим из цикла.

    4. Функция "Обработка очереди". Там тоже цикл. Но он ищет первый элемент с Active = TRUE и закидывает данные из него в модем, а сам элемент помечает как Active = FALSE. Выход - тоже по EXIT;.
    Её мы и вызываем по таймеру не чаще, чем нужно.

    Во! =)
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  5. #6675
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от beatitas Посмотреть сообщение
    Буду пробовать, но это усложняет задачу на написание буфера для очереди сообщений.Пока вообще не понимаю с какой стороны к нему подходить и на чём основывать.
    https://owen.ru/forum/showthread.php...l=1#post221238
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #6676

  7. #6677

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Вы зачем-то этому параметру 100 задали.
    Задайте 0 - и все станет нормально.

    Без имени.png
    СПАСИБО!!!!!

  8. #6678

    По умолчанию

    Благодарю, пошёл качать 2.3)

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Я делал примерно так:
    1. Структура - описание элемента очереди. У неё была строка сообщения, номер адресата (для СМСок) и флаг "активно" (Active).
    Этот флаг был нужен алгоритму перебора очереди, чтобы понимать что этот элемент ещё не отправлен.

    2. Массив этих структур - сама очередь. Выбрал его жёсткие границы и сделал их в виде константы с названием типа MAX_QUEUE_SIZE для того, чтобы во всех циклах и проверках её использовать, и не было жёстко заданных магических чисел из-за которых циклы выйдут за границы массива.
    Это объявляется примерно так:
    VAR CONSTANT
    MAX_QUEUE_SIZE : WORD := 64;
    END_VAR
    VAR
    arrQueue : ARRAY [1..MAX_QUEUE_SIZE] OF SMSItem;
    END_VAR

    3. Функция "Добавить в очередь". Она в цикле перебирает весь этот массив и ищет элемент, в котором Active = FALSE, заполняет его нужными данными и ставит Active = TRUE.
    Это простой цикл с условием: как только нашли Active = FALSE, делаем нужное действие и по EXIT; выходим из цикла.

    4. Функция "Обработка очереди". Там тоже цикл. Но он ищет первый элемент с Active = TRUE и закидывает данные из него в модем, а сам элемент помечает как Active = FALSE. Выход - тоже по EXIT;.
    Её мы и вызываем по таймеру не чаще, чем нужно.

    Во! =)
    Спасибо огромное. Уже после того как ляпнул про БД - вспомнил про массив структур. Пока не понимаю до конца как правильно обрабатывать это циклом, но буду пробовать повторить)

  9. #6679

    По умолчанию

    beatitas Пожалуйста!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  10. #6680
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от beatitas Посмотреть сообщение
    Благодарю, пошёл качать 2.3)
    не обязательно, oscat библиотека доступна и в 3.5
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 668 из 711 ПерваяПервая ... 168568618658666667668669670678 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  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

Ваши права

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