Страница 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

    По умолчанию

    Цитата Сообщение от Серёга Букашкин Посмотреть сообщение
    Имею необходимость передавать в сетевых переменных например или 6 интов, или 3 флоата в те же адреса, по флагу номера экрана от читающей системы. То есть отдавать разнокалиберные сетевые переменные в те же адреса. Возможно ли это? Всё от ограниченности сетевого буфера на ПР200 (слейв), не хватает адресов.
    В одни и те же, сомневаюсь, тип переменной ведь настраивается в проекте и менять его из программы нельзя.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    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

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

    По умолчанию

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

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

    По умолчанию

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

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

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

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

Страница 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

Ваши права

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