![]() |
![]() ![]() |
|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
У меня сейчас и в 25-м Пикселе как раз с этими ARROYII проблема: данные в блоке то обновляются, то нет. Даже не знаю, как быть..
Последний раз редактировалось Arsie, 07.04.2017 в 13:50 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Добрый день.
Вот какая петрушка получается. Прилагаю маленький кусок программы на 20 блоков. В блоке ARRAYII происходит что-то непонятное. Кнопка ESC щёлкает счётчиком, который меняет адрес записи в память. Записываем порядковый номер входа, на котором есть сигнал. Если на всех входах сигнал отсутствует, то в ячейки памяти поочерёдно (по счётчику) записываются 0. Но это по теории. На практике блок памяти ведёт себя непредсказуемо. Контроллер Pixel 25. Помогите, пожалуйста, разобраться, в чём дело. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]()
А в чём непредсказуемость?
__________________ RTFM |
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
В том, что блок то записывает вводимое значение в другие адреса, то не записывает совсем, а иногда и вовсе 0 откуда-то берётся.
Может это с контроллером что-то не так? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]()
А вы про какой блок 8-й или 19-й?
__________________ RTFM |
![]() |
![]() |
![]() |
#6 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
8-й, конечно же.
Уже попробовал на версию 3.25 откатить - не помогло. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Регистрация: May 2009
Сообщения: 1 033
Благодарил(а): 9 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
![]()
На выход блока syn внимание при записи обращаете?
__________________ RTFM |
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Хотите сказать, он за целую секунду (чаще я не успеваю кнопочку нажимать) не успевает обработать свои 20 ячеек? А откуда тогда 0 появляется, если на входе постоянно есть циферка? И почему фактический адрес записи отличается от заданного? Это больше на лототрон похоже, чем на блок записи.
|
![]() |
![]() |
![]() |
#9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Для синхронизации используется сигнал готовности блока "syn", который помогает избежать "лототнона". Почему записывается ноль - я не знаю, т.к. вместо кнопок, задающих значение, использовал константы. При этом писалось всё как нужно. Скорее всего вы отпускали кнопки до того, как выполнялась фактическая запись или что-то в этом роде. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
А сколько времени потребуется на обработку блока на 128 строк, при времени цикла 100мс?
|
![]() |
![]() |
![]() |
#11 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#12 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Контроллер Pixel 25. 4 блока ARRAYII по 128 строк. То есть, даже при записи в одну ячейку блок обрабатывает все 128 ячеек? А для чего?
|
![]() |
![]() |
![]() |
#13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Блок ARRAYII вообще не требует вычитывания при своей работе. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Мне нужно 128 ячеек памяти. Но если я указываю в свойствах блока 2 выхода, то получается что и ячеек памяти всего две, верно? ARRAYII использовал только потому, что на нём хотя бы видно, что записано в память. Сначала делал на ARRAY на 225 адресов, но там тоже не пойми что творится - первое чтение корректное, а затем какие-то левые цифры выдаёт.
|
![]() |
![]() |
![]() |
#15 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#16 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() |
![]() |
![]() |
![]() |
#17 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#18 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Я об том же и говорю. Вопрос в том, что задаётся количеством выходов в блоке: количество выходов или количество ячеек памяти?
Насколько я понял его работу, то если задать только два выхода, то и ячеек памяти получится всего две. Или я не прав? |
![]() |
![]() |
![]() |
#19 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Количество ячеек на один выход можно увидеть в таблице из справки. Если бы вы потрудились указать, о каком именно ARRAYII вы сейчас говорите, я дал бы конкретную цифру. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#20 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
О блоке ARRAYII (int). Дело в том, что когда у блока было 2 выхода, а я записывал в адреса, имеющие бОльшую, чем 2 нумерацию, я заметил, что данные на этих двух выходах изменялись. Потому и решил, что количество выходов = количество ячеек памяти в блоке. И в справке также указано, что "Количество ячеек, которые могут быть сохранены в этом блоке изменяется через свойства блока", хотя в свойствах блока речь идёт именно о Выходах. Так что определитесь уже, что изменяется в свойствах блока.
|
![]() |
![]() |
![]() |
#21 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() На входе mux вы выставляете номер выхода, значение которого вы хотите видеть на выходе outmux. Если в блоке ArrayII(int) вы выставляете 128 выходов, он занимает 256 байт памяти. Диапазон wr_addr при этом от 0 до 127. Диапазон mux при этом от 0 до 127. Если на указанные входы подать число, большее, чем 127, оно "сворачивается" по правилам, принятым в блоках MUX(). __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#22 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Ещё раз, по-простому: чтобы записать 10 значений, типа int, сколько Выходов нужно указать в свойствах блока ARRAYII?
С количеством ячеек разобрались. Теперь другой вопрос: при чтении блок опрашивает только заданную в mux ячейку, или полностью "перетрясает" весь массив? Последний раз редактировалось Arsie, 07.04.2017 в 12:58 |
![]() |
![]() |
![]() |
#23 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Как ни странно, 10. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#24 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]() А вход start rd для чего тогда? |
![]() |
![]() |
![]() |
#25 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#26 |
Senior Member
Регистрация: Sep 2012
Сообщения: 171
Благодарил(а): 4 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
![]()
Семён Семёныч!!! Так ведь это же совсем другое дело! А я уже расстроиться хотел, что Pixel не оправдал надежд! Где ж Вы раньше-то были!!!)
|
![]() |
![]() |
![]() |
#27 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 404
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
![]()
Я правильно понял, что на всех выходах элемента ArrayII данные обновляются только после активации входа start_rd и в остальное время временных ресурсов не потребляют, оставаясь "защелкнутыми" до следующей активации входа?
Т.е. можно смело цеплять выходы ArrayII на Modbus-переменные для дальнейшей передачи по Modbus/TCP в скаду? P.S. Активация start_rd по окончании записи изменившейся ячейки - будет корректным решением для обновления состояния выходов? |
![]() |
![]() |
![]() |
#28 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() Называется "Пример использования". Обратите внимание к чему подключен интересующий вас вход. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
#29 |
Senior Member
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 404
Благодарил(а): 29 раз(а)
Поблагодарили:
2 раз(а) в 2 сообщениях
|
![]() |
![]() |
![]() |
![]() |
#30 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 17 350
Благодарил(а): 15 раз(а)
Поблагодарили:
606 раз(а) в 554 сообщениях
|
![]() В примере менюха, которая априори должна иметь актуальные данные на выходах. Т.е. задача, полностью аналогична вашей. PS. Т.е. тупо не нужно его трогать, если вы ещё не поняли. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как связать master/slave в сети SMConnect (решено) | Alex1980 | SMConnect & SMConfig | 11 | 17.09.2019 00:40 |
Не пойму какие адреса опрашивать и как (решено) | Parovoz | Связь с внешним миром | 3 | 26.03.2017 19:22 |
Как правильно подключить реле HD-1025.DD3 | dsboss | Форум Segnetics | 2 | 03.10.2016 18:08 |
Как узнать модификацию контроллера SMH2010 исполнение без корпуса? (решено) | timeonhome | Вопросы о SMH2010 | 6 | 06.10.2015 15:36 |
Элемер EL-4019: как правильно прочитать данные | dima | Связь с внешним миром | 3 | 06.03.2012 16:40 |