Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Буферизация сетевых переменных

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию Буферизация сетевых переменных

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

    Пока не нашел ничего лучше, чем
    1) менять сетевые переменные раз в секунду
    2) передавать специальный контрольный бит, который равен нулю в течении четверти секунды до и после смены состояния.
    3) данные принятые с контрольным битом равным нулю отбрасываются.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  2. #2

    По умолчанию

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

    Пока не нашел ничего лучше, чем
    1) менять сетевые переменные раз в секунду
    2) передавать специальный контрольный бит, который равен нулю в течении четверти секунды до и после смены состояния.
    3) данные принятые с контрольным битом равным нулю отбрасываются.
    Добрый день, можете подробнее описать Вашу задачу, сетевые переменные это не параллельный интерфейс, работа с модбасом ведется в определенных временных окнах, и нет гарантии что все существующие будут переданы в одном сеансе, а если приложить сюда возможные сбои, повторные запросы и.т.д, то задача вообще не решаема.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  3. #3
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Есть несколько макросов, имитирующих массивы. Значения массивов передаются по сети по очереди. Параллельно с массивами есть счетчик номера текущего передаваемого элемента. Скада ведет историю каждого элемента массива индивидуально, поэтому очень важно, чтобы переданный элемент соответствовал переданному номеру. Иначе записываемая история оказывается некорректна.
    Можно было бы "развернуть" массивы и передавать все элементы "параллельно", но это очень много элементов и вообще получится ненужная каша.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  4. #4

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Есть несколько макросов, имитирующих массивы. Значения массивов передаются по сети по очереди. Параллельно с массивами есть счетчик номера текущего передаваемого элемента. Скада ведет историю каждого элемента массива индивидуально, поэтому очень важно, чтобы переданный элемент соответствовал переданному номеру. Иначе записываемая история оказывается некорректна.
    Можно было бы "развернуть" массивы и передавать все элементы "параллельно", но это очень много элементов и вообще получится ненужная каша.
    Что за задача таким способом решается? Зачем такая строгость по времени передачи каждого элемента, или таким образом решаете вопрос экономии сетевых переменных?
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  5. #5
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Цитата Сообщение от Ревака Юрий Посмотреть сообщение
    Что за задача таким способом решается? Зачем такая строгость по времени передачи каждого элемента, или таким образом решаете вопрос экономии сетевых переменных?
    Массив имитирует адресуемые регистры условного процессора, позволяет например, использовать всего один макрос для обработки однотипных данных, использовать динамическую память (позволяет технологу делить процесс на нужное ему число периодов в течении суток, не загромождая программу набором однотипных переменных, и не создавая однотипных экранов для задания этих периодов), имитировать циклы, и даже создавать динамически изменяющиеся алгоритмы.
    Ну и одно из применений - экономия сетевых переменных.

    ЗЫ Лоджик конечно сильно ограниченная в средствах система, но как видим, многие из них можно при желании эмулировать. Но отсутствие возможности отслеживания разных событий - это просто катастрофа. События ввода, чтения/записи данных, навигации по экранам и так далее. Очень стоило бы эту дыру заделать, это повысит юзабельность Лоджика в сотню раз.
    Последний раз редактировалось anthrwpos; 20.08.2018 в 18:01.
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

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

    По умолчанию

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

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

    По умолчанию

    anthrwpos, то есть мантиссу в одном инте, а экспоненту в другом инте и получим те же два регистра или как ?
    тут по моему самое основное и глобальное - "в те же адреса" вопрос с приемом остается открытым

  8. #8
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    anthrwpos, то есть мантиссу в одном инте, а экспоненту в другом инте и получим те же два регистра или как ?
    тут по моему самое основное и глобальное - "в те же адреса" вопрос с приемом остается открытым
    Мантисса числа флоат занимает 23 бит, экспонента 8 бит и знак 1 бит. Итого чтобы их передать, нужно в точности два 16-битных инта.
    Флоат на википедии
    - ά ν θ ρ ω π ο ς -
    Мои универсальные макросы https://github.com/anthrwpos1/macros

  9. #9
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,242

    По умолчанию

    Неужели нельзя FLOAT умножить на 10 в энной степени(требуемое количество знаков после запятой) и передать целочисленной переменной?!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

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

    По умолчанию

    anthrwpos сакральный смысл передачи 4 байт вместо 4 байт ?

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 54
    Последнее сообщение: 11.09.2017, 10:56
  2. Ответов: 3
    Последнее сообщение: 05.03.2015, 14:01
  3. Проблемы с заданием сетевых параметров
    от smk1635 в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 01.05.2013, 19:18
  4. Энергонезависимость сетевых переменных
    от max_etf в разделе Программируемые реле
    Ответов: 19
    Последнее сообщение: 07.09.2012, 10:03

Ваши права

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