|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
08.09.2016, 13:40 | #1 |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
чтение и запись числа в EEPROM
День добрый.
подскажите, что не так - необходимо сохранять настройки в энергонезависимую память по изменению. то есть , на вход в EEPROM подаю число, на выходе его считываю, в случае изменения - записываю в память. теоретически все работает, на практике иногда число со входа не обновляется на выходе контроллер 2G |
08.09.2016, 14:17 | #2 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: чтение и запись числа в EEPROM
Цитата:
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
08.09.2016, 14:28 | #3 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
В первом случае произойдёт запись только первого изменения, во втором случае запись не происходит из-за незавершённости предыдущей операции записи. Исправлять это не нужно, т.к. оба варианта уничтожают память за считанные часы. Проблема в алгоритме, а не программе. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
08.09.2016, 16:14 | #4 |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: чтение и запись числа в EEPROM
я тоже склоняюсь к тому, что проблема в скорости.
хотя, число на входе меняется редко, во всяком случае ни как не 2 раза за такт - это просто с панели вручную переключается битовая кнопка ( например перевод механизма из режима стоп в режим автоматического управления) - биты пакуются в слово и по модбасу с панели передаются на контроллер. хотелось бы, чтобы эти установки сохранялись в случае пропадания питания. как с этим бороться? увеличил время тика - не помогает. |
08.09.2016, 17:40 | #5 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
Даже лучше два счётчика. Первый просто параллельно WR, а второй через raise. Если числа на счётчиках не сходятся - значит данные идут подряд очень быстро. Т.е. мож панель вместо одного раза "1" пишет целую цепочку 10101111011. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
13.09.2016, 11:51 | #6 |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Да, похоже что данные идут быстрее, чем память готова их обработать
добавил D тригер стало гораздо лучше. Арсений, еще вопрос по счетчикам наработки и быстродействию. у меня время тика реальное получается 135-140 мс, в готовом макросе счетчика моточасов вход тик надо это значение устанавливать? или лучше задать тик вручную, например 200 мс, через блок SetTick с резервом и это время тика указать на входе счетчика? |
13.09.2016, 12:48 | #7 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
Счётчику моточасов сообщите о тике через блок Device(kernel), там есть выход "SetTick". __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
13.09.2016, 13:47 | #8 | |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
в режиме отладки. но, тут у меня просто похоже много доп. модулей навешано - помимо МС еще 4 штуки МР 120+МР 800. особой математики нет, в основном контролер собирает всю информацию и передает на панель по модбасу. ну и заодно считает моторесурс различного оборудования. я так понимаю, что в самих макросах, на входе блока EEPROM ничего менять не надо, программа сама распределяет энергонезависимую память, в которую будут записываться данные так, чтобы яйчейки не пересекались? |
|
13.09.2016, 14:37 | #9 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
Программа да, сама следит за выделением памяти. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
14.09.2016, 10:34 | #10 |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Нет, все равно на уровне 135-140 мс.
Но мне это не критично, лишь бы счетчики сильно не врали. Сделал в меню возможность задавать время тика в пределах 100-200мс через блок SetTick - выставил 200 , через него же завел время тик в макросы. вроде все ок. |
14.09.2016, 10:59 | #11 | |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: чтение и запись числа в EEPROM
Цитата:
Ну и вот прям сразу: ^Выход из экрана - это уже фронт импульса, который работает 1 такт. raise блок после него ставить не надо. Ну и поясните, пожалуйста, зачем время тика преобразовывать в лонг? __________________ В сегнетиксе не работаю с самого начала 2019 года. |
|
14.09.2016, 11:07 | #12 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Потому как макросы моточасов тик в лонге просят.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
14.09.2016, 16:24 | #13 | |
Senior Member
Регистрация: Jun 2015
Сообщения: 566
Благодарил(а): 25 раз(а)
Поблагодарили:
9 раз(а) в 9 сообщениях
|
Ответ: чтение и запись числа в EEPROM
Цитата:
по поводу ^Выход из экрана - угу, из меня еще аховый программист хвостов можно подчистить много. но, как я уже говорил, в этом проекте скорость для меня не главное, даже если время тика будет больше секунды на производственных процессах это никак не скажется) |
|