Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.06.2018, 00:42   #1
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Question Сохранить много одновременных событий в FRAM

Задачка (не АВОК), которая привела меня в ступор (железо: SMH2G+FRAM, тик 200 ms).

Только суть:
Есть N переменных типа int (сейчас - 82, может быть до 140), при изменении нужно сохранить новое значение с меткой времени (метка упакована в int) в энергонезависимую память для обработки в будущем (в том числе после периода обесточивания контроллера).
Проблема в том, что за один тик могут измениться все переменные (то есть надо будет записать до 140 переменных int+int по состоянию на конкретный тик системы), при этом возможно 4-кратное изменение значений с интервалом 2-3 секунды (но вероятность более 4 изменений в любые 10 минут времени пренебрежимо мала).

Вариант доступа к сохраненным данным в формате сквозного FIFO буфера (или его имитации) кажется идеальным, т.к. для вычитки верхним уровнем можно использовать единственный двойной регистр Modbus/TCP (int+int), при каждом обращении вычитывающий новые "строчки" (или это невозможно?)
Вариант с записью каждой переменной в свой FBD-блок EEPROM нужной глубины и вычитка методом R/W (внешний контроллер записывает адрес переменной, а SMH мультиплексором выбирает нужный EEPROM и отвечает) - у меня вызывает опасения из-за задержки ответа минимум на один тик (то есть верхнему уровню придется сперва вычитать переменную, а потом записать адрес новой и подождать минимум тик. Особенно это печально в связи с быстродействием локальной сети).
Вариант с "выстаскиванием" выходов EEPROM всех переменных на отдельные адреса в карте памяти Modbus выглядит очень привлекательно, но пугает риск нарваться на ограничения SMH2G с модулем Ethernet (или ему вычитка внешним мастером 280 modbus-регистров не проблема? Для инфы: по RS485 уже используется около 90 запросов; верхний уровень может вычитать одним запросом до 243 байт, т.е. порядка 60 двойных переменных int+int).

Есть у гуру SMLogix идеи?

UPD: пока склоняюсь к последнему варианту, но это не снимает вопроса кэширования записи в FRAM

Последний раз редактировалось ailcat, 20.06.2018 в 00:56
ailcat вне форума   Ответить с цитированием
Старый 20.06.2018, 11:08   #2
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Вариант доступа к сохраненным данным в формате сквозного FIFO буфера (или его имитации) кажется идеальным, т.к. для вычитки верхним уровнем можно использовать единственный двойной регистр Modbus/TCP (int+int), при каждом обращении вычитывающий новые "строчки" (или это невозможно?)
Здесь нужно добавить 3 переменную, типа номер переменной. Поскольку есть шанс, что не все запросы будут получены или отвечены адекватно. Вы должны точно знать, что система получает верные данные, без смещений.

Я бы делал 3 вариант, а уж если возникнут проблемы - оптимизировать. Третий вариант сделать быстрее всего.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 20.06.2018, 12:04   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Вариант с "выстаскиванием" выходов EEPROM всех переменных на отдельные адреса в карте памяти Modbus выглядит очень привлекательно, но пугает риск нарваться на ограничения SMH2G с модулем Ethernet (или ему вычитка внешним мастером 280 modbus-регистров не проблема? Для инфы: по RS485 уже используется около 90 запросов; верхний уровень может вычитать одним запросом до 243 байт, т.е. порядка 60 двойных переменных int+int).
У 2G ограничение на 112 запросов в режиме "мастера". Количество регистров на режим слейва ограничений не имеет - действуют общие ограничения по 1000 переменных каждого типа.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 20.06.2018, 17:59   #4
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Question Ответ: Сохранить много одновременных событий в FRAM

Gromov,
Arsie,

спасибо за информацию. Выдачу на верхний уровень буду делать по третьему варианту (каждой переменной свой адрес)

НО:
По-прежнему остался вопрос с записью подряд идущих изменений:
1) изменились все 140 переменных - начата запись в EEPROM для каждой переменной,
2) через 2 секунды опять изменились все переменные (и их тоже надо записать),
3) еще через 3 секунды опять изменились все переменные (опять надо записать),
4) и еще через 1 секунду опять изменения (и надо записать еще и их)...
Это максимум (обычно 1-2 изменения подряд), дальше пауза в несколько минут точно есть.
Вопрос:
Я так понимаю, что за 1-2 секунды все 140 блоков EEPROM не успеют записаться. Соответственно, надо как-то корректно сохранить на время записи в энергонезависимую память и другие значения. Как сделать этот буфер (или кэш)?
ailcat вне форума   Ответить с цитированием
Старый 20.06.2018, 18:17   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
[B]
Вопрос:
Я так понимаю, что за 1-2 секунды все 140 блоков EEPROM не успеют записаться. Соответственно, надо как-то корректно сохранить на время записи в энергонезависимую память и другие значения. Как сделать этот буфер (или кэш)?
Да, не успеют. Поставить регистры буферами, защёлкивание снимать, когда последний еепром скажет о своей готовности. Т.е. пока всё не записалось, игнорировать новые данные.

Но это не очень корректно, если строго подойти к процессу. Если эта некорректность ситльно влияет на процесс, то я бы сделал схему записи, которая прерывает запись еепрома при обновление данных и начинает по новой.

Ну, типа, пришли данные, поехало писаться 1450 блоков. Записалось 10, приехали новые данные. Схема перезапустилась и вместо перезаписи оставшихся 130 начала писать все 140 по новой.

Но это реально нужда в этом должна быть. Возможно даже лучше и не писать в память сразу, просто держать на регистрах, пока всё не устаканится и потом уже записать в еепром.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 20.06.2018, 19:45   #6
coverart
Senior Member
 
Регистрация: Mar 2008
Адрес: Екатеринбург
Сообщения: 492
Благодарил(а): 50 раз(а)
Поблагодарили: 14 раз(а) в 13 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

А, если не секрет, откуда валятся переменные, кто/что их меняет с такой скоростью и в таком количестве?
coverart вне форума   Ответить с цитированием
Старый 20.06.2018, 20:47   #7
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

офф.
не понимаю мании решать задачи средствами впритык по возможностям.
экономить деньги заказчика? да нахер он сдался, упырь


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 21.06.2018, 10:43   #8
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата
Сообщение от coverart Посмотреть сообщение
А, если не секрет
Секрет установка, но не секрет логика работы.
Это 2 каскада гальванических ванн со своими "мозгами", отрабатывающими быстротечные процессы. Верхний уровень - сертифицированный комп, который отслеживает фактические параметры и либо рассчитывает "компенсирующие воздействия", либо определяет продукцию в брак. "В серединке" - медленнотекущие процессы, изменение которых отрабатывают живые операторы (образно - крутят ручки, удерживая стрелки в допустимых пределах).


SMH2G заменяет операторов (количество брака упало в разы), но...
Каскады "глядят в мир" единственным RS485 (привет Сегнетиксу с тем же подходом), поэтому контроллером пришлось "влезть" между мозгами/приборами каскада и верхним уровнем - он вычитывает параметры из каскада (ну не со стрелочных же показометров их брать?), по нужным рассчитывает свои воздействия (вместо операторов), а заодно отдает вычитанные выше (благо верхний уровень можно адаптировать почти под все изобретенные способы передачи данных).

Сейчас возникло желание сохранить продукцию, которая выбраковывается при сбоях в питании (АВР по высокому напряжению, т.е. достаточно медленный -откуда те самые 2-3 секунды). Для чего верхнему уровню нужны значения после пропадания и после восстановления питания, причем зачем-то аж все.
Сохранение в энергонезависимую память вызвано хотелками заказчика (он с ними хочет что-то делать после долгого сбоя по питанию).
ailcat вне форума   Ответить с цитированием
Старый 21.06.2018, 11:13   #9
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Сейчас возникло желание сохранить продукцию, которая выбраковывается при сбоях в питании (АВР по высокому напряжению, т.е. достаточно медленный -откуда те самые 2-3 секунды). Для чего верхнему уровню нужны значения после пропадания и после восстановления питания, причем зачем-то аж все.
Сохранение в энергонезависимую память вызвано хотелками заказчика (он с ними хочет что-то делать после долгого сбоя по питанию).
Ну так поставьте бесперебойник самый дешёвый на контроллеры... Ваше время всяко дороже 3-4 тысяч за бесперебойник будет. И второй в ЗИП.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.06.2018, 11:27   #10
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Cool Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от Arsie Посмотреть сообщение
Ну так поставьте бесперебойник самый дешёвый на контроллеры...
Уже стоит (причем недешевый). Держит почти 2 часа, на рабочие процессы хватает за глаза. Для использования в роли "регистратора" - им же получится перекрыть время срабатывания АВР, тут вопросов нет.

Но под последние хотелки (чтобы то, что случилось при сбое питания - можно было прочитать после ремонта подстанции) нужно "помнить" значения несколько суток (4 дня сидели на прошлой неделе без электричества. "ЗАТО" - они такие). И здесь вариант с "неспешной" записью во FRAM мне кажется куда проще правильнее.
Тем паче что и самому может в последующем пригодится (уже под другую задачу, перекликающуюся с "хобби")...
ailcat вне форума   Ответить с цитированием
Старый 21.06.2018, 11:41   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Уже стоит (причем недешевый). Держит почти 2 часа, на рабочие процессы хватает за глаза. Для использования в роли "регистратора" - им же получится перекрыть время срабатывания АВР, тут вопросов нет.

Но под последние хотелки (чтобы то, что случилось при сбое питания - можно было прочитать после ремонта подстанции) нужно "помнить" значения несколько суток (4 дня сидели на прошлой неделе без электричества. "ЗАТО" - они такие). И здесь вариант с "неспешной" записью во FRAM мне кажется куда проще правильнее.
Тем паче что и самому может в последующем пригодится (уже под другую задачу, перекликающуюся с "хобби")...
Если ИБП недешёвый, значит там есть как минимум одна релюха, которая может показать окончание заряда. И по сигналу этой релюхи контроллер может неторопясь всё записать в еепром. Почему неторопясь? Потому что процесс уже давно остановлен, новых данных нет и не будет.

Если у ИБП нет релюхи, то релюха с запиткой катушки от ввода прекрасно покажет, есть электричество или нет его. А дальше по таймеру записать данные в еепром.

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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.06.2018, 14:25   #12
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Exclamation Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от Arsie Посмотреть сообщение
Почему неторопясь? Потому что процесс уже давно остановлен, новых данных нет и не будет.
Процесс есть и продолжается еще некоторое время (2 часа, которые держит ИБП, как мне кажется, и определены исходя из ожидаемого времени завершения химических реакций), при этом верхний уровень продолжает получать "текущие" данные.
Но в FRAM (стоит именно этот модуль внешней памяти) нужно записывать те значения, которые сняты через 0,5-1 сек после пропадания и через 0,5-1 сек после восстановления питания. В том числе и при двойной отработке АВР...
ailcat вне форума   Ответить с цитированием
Старый 21.06.2018, 14:46   #13
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Процесс есть и продолжается еще некоторое время (2 часа, которые держит ИБП, как мне кажется, и определены исходя из ожидаемого времени завершения химических реакций), при этом верхний уровень продолжает получать "текущие" данные.
Но в FRAM (стоит именно этот модуль внешней памяти) нужно записывать те значения, которые сняты через 0,5-1 сек после пропадания и через 0,5-1 сек после восстановления питания. В том числе и при двойной отработке АВР...
Когда срабатывает АВР хим. реакции ускоряются или замедляются?) Если там остаточное "брожение" два часа, смысл реагировать на 2-хсекундные возмущения?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 21.06.2018, 15:31   #14
СВМ
Senior Member
 
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили: 3 раз(а) в 3 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Задачка (не АВОК), которая привела меня в ступор (железо: SMH2G+FRAM, тик 200 ms).
Вариант: вместо SMH2G поставьте SMH4 и записывайте на USB флэшку.
СВМ вне форума   Ответить с цитированием
Старый 21.06.2018, 16:08   #15
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Thumbs down Ответ: Сохранить много одновременных событий в FRAM

Цитата
Сообщение от СВМ Посмотреть сообщение
Вариант: вместо SMH2G поставьте SMH4.
Чтобы "присесть" из-за очередного глюка линукса?
Нет, ну их нафиг, эти линуксы, в чем-либо ответственнее вентиляции.
ailcat вне форума   Ответить с цитированием
Старый 25.06.2018, 02:06   #16
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от Arsie Посмотреть сообщение
Когда срабатывает АВР хим. реакции ускоряются или замедляются?) Если там остаточное "брожение" два часа, смысл реагировать на 2-хсекундные возмущения?
А фиг их знает. Но установка отрабатывает довольно сложный алгоритм остановки (полагаю, что для сохранения раствора - т.к. для изделий даже полминуты гарантируют брак), и отрабатывает его за счет ИБП.
А реагирует она даже на секундные отклонения (а собственнные "мозги", подозреваю, что и на более скоротечные могут - привода довольно шустрые). Компенсирующие воздействия, кстати, довольно приличные - после буквально 3-секундного перерва с небольшой задержкой электроды в солнвой ванне (реостат) на мгновение ныряют в нее практически целиком, хотя до перерыва не погружены и на треть. И "прыгают" (погружаются-вынимаются) там довольно прикольно, прежде чем вновь на установившийся режим выйдут. И все эти загогулины мозги каскада выделывают всего по двум переменным, которые кидает верхний уровень (рссчитав их по полученным снизу данным)...
Но:
Зачем сохранять значения именно после пропадания и восстановления питания, но не сохранять поступающие выше при работе от ИБП - не знаю.
ailcat вне форума   Ответить с цитированием
Старый 25.06.2018, 02:12   #17
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Компенсирующие воздействия, кстати, довольно приличные - после буквально 3-секундного перерва с небольшой задержкой электроды в солнвой ванне (реостат) на мгновение ныряют в нее практически целиком, хотя до перерыва не погружены и на треть. И "прыгают" (погружаются-вынимаются) там довольно прикольно, прежде чем вновь на установившийся режим выйдут.
Всё это напоминает регулирование водяного калорифера приводом с временем хода 1 сек. Бесмысленно и беспощадно для калорифера.

Хорошо, дело ваше)) Способы вам понятны?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 25.06.2018, 02:24   #18
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от Arsie Посмотреть сообщение
Всё это напоминает регулирование водяного калорифера приводом с временем хода 1 сек. Бесмысленно и беспощадно для калорифера.
В масштабах быстротечности технологии - это регулирование водяного калорифера приводом со скоростью хода пару часов. И компенсирующие воздействия в масш абах переключателя зима/лето.


И - нет, технологии буферизации НЕпонятны. Потому что вместо подсказки тема скатилась к обсуждению "зачем это надо".
Впрочем, пора бы уже привыкнуть...
ailcat вне форума   Ответить с цитированием
Старый 25.06.2018, 11:20   #19
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
В масштабах быстротечности технологии - это регулирование водяного калорифера приводом со скоростью хода пару часов. И компенсирующие воздействия в масш абах переключателя зима/лето.


И - нет, технологии буферизации НЕпонятны. Потому что вместо подсказки тема скатилась к обсуждению "зачем это надо".
Впрочем, пора бы уже привыкнуть...
Я всегда даю рецепт, а потом начинаю выяснять, нужен ли он вам и в какой форме.

Цитата Поставить регистры буферами, защёлкивание снимать, когда последний еепром скажет о своей готовности. Т.е. пока всё не записалось, игнорировать новые данные.

Но это не очень корректно, если строго подойти к процессу. Если эта некорректность ситльно влияет на процесс, то я бы сделал схему записи, которая прерывает запись еепрома при обновление данных и начинает по новой.

Ну, типа, пришли данные, поехало писаться 140 блоков. Записалось 10, приехали новые данные. Схема перезапустилась и вместо перезаписи оставшихся 130 начала писать все 140 по новой.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 27.06.2018 в 12:59
Arsie сейчас на форуме   Ответить с цитированием
Старый 25.06.2018, 23:07   #20
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Вы тоже не читаете с первого раза (надеюсь, из-за занятости не менее важными задачами).

Значение имеет не последняя цифра. Значение имеет последовательность цифр.
Что априори исключает
Цитата:
Сообщение от Arsie Посмотреть сообщение
Ну, типа, пришли данные, поехало писаться 140 блоков. Записалось 10, приехали новые данные. Схема перезапустилась и вместо перезаписи оставшихся 130 начала писать все 140 по новой
Описанная вами задача легко решается после прочтения хелпа.

Вместо этого нужно:
"Ну, типа, пришли данные, поехало писаться 140 блоков. Записалось 10, приехали новые данные. Дописались оставшиеся 130 - и начали писаться вновь приехавшие".
Причем вновь приехавших - может и не быть. А может быть один раз. А может два, причем за период, пока даже изначальные данные еще не дописались. А может и три (но не больше)...

и именно вот этот FIFO-буфер неопределенной глубины для сваливающихся данных и стал для меня проблемой (блоки EEPROM можно сделать и конечной глубины, благо верхний уровень не так ограничен в ресурсах).
ailcat вне форума   Ответить с цитированием
Старый 26.06.2018, 11:25   #21
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
Вместо этого нужно:
"Ну, типа, пришли данные, поехало писаться 140 блоков. Записалось 10, приехали новые данные. Дописались оставшиеся 130 - и начали писаться вновь приехавшие".
Причем вновь приехавших - может и не быть. А может быть один раз. А может два, причем за период, пока даже изначальные данные еще не дописались. А может и три (но не больше)...

и именно вот этот FIFO-буфер неопределенной глубины для сваливающихся данных и стал для меня проблемой (блоки EEPROM можно сделать и конечной глубины, благо верхний уровень не так ограничен в ресурсах).
У вас есть ещё вопросы по технической поддержке?

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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 26.06.2018 в 13:21
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.06.2018, 09:07   #22
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
Thumbs down Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от Arsie Посмотреть сообщение
У вас есть ещё вопросы по технической поддержке?
У меня изначально не было вопросов по технической поддержке.

Но извините, что посмел на общем форуме задать вопрос по реализации задачи на ваших контроллерах, которая оказалась сложна для меня - надеясь на помощь сообщества.

И, главное -
СПАСИБО, что убедили меня нигде больше не применять ваших контроллеров. Даже если они оказываются оптимальными для задачи.
ailcat вне форума   Ответить с цитированием
Старый 27.06.2018, 11:47   #23
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 016
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Сохранить много одновременных событий в FRAM

Цитата:
Сообщение от ailcat Посмотреть сообщение
У меня изначально не было вопросов по технической поддержке.

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

Q: Для инфы: по RS485 уже используется около 90 запросов; верхний уровень может вычитать одним запросом до 243 байт, т.е. порядка 60 двойных переменных int+int).

A: У 2G ограничение на 112 запросов в режиме "мастера". Количество регистров на режим слейва ограничений не имеет - действуют общие ограничения по 1000 переменных каждого типа.



Но задача мгновенной массированной записи на модуль памяти нерешаема. Т.е., очевидно, что нужно использовать какие-либо послабления в условиях задачи.

Поэтому я стал задавать наводящие вопросы с целью понять, является ли следующий алгоритм оптимальным:

  1. изменились все 140 переменных - начата запись в EEPROM для каждой переменной
  2. через 2 секунды опять изменились все переменные (и их тоже надо записать)
  3. еще через 3 секунды опять изменились все переменные (опять надо записать)
  4. и еще через 1 секунду опять изменения (и надо записать еще и их)...


Предприняв 2-3 попытки выяснить, почему именно этот алгоритм является единственно верным на ваш взгляд, я написал вопрос о техподдержке и что перестаю вас мучать вопросами.

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


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 27.06.2018 в 12:11
Arsie сейчас на форуме   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 13:10.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023