|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
16.01.2014, 14:20 | #1 |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Не понимаю, как работает схема
При включении питания на первом ^D-триггере появляется логическая единица почему ???
|
16.01.2014, 14:55 | #2 |
Новичок
Регистрация: Oct 2013
Сообщения: 14
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Ошибка ^D-триггера
Осмелюсь предположить, что у вас проскакивает сигнал на вход ^. Значение температуры (наверняка проходит через ПИД-регулятор), дергается резко вверх, в связи с чем запоминается триггером, а потом выравнивается. Не судите строго, я новенький, могу глупость сказать.
|
16.01.2014, 15:45 | #3 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Ошибка ^D-триггера
Триггрер защёлкивается по событию Уставка больше или равна Температуре.
В представленной вами схеме на обоих входах нули. Ноль равен нулю, триггер защёлкивается. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
16.01.2014, 21:25 | #4 | |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Ошибка ^D-триггера
Цитата:
Выкладываю полную схему... правда не оптимизированную... Уже есть планы, но нет времени. Ну не в этом суть, главное работает, но есть эта проблемка. Этот проблемный макрос находится в макросе "пастеризация"=>"контроль нагрева" Температура пастеризации 64 градуса, на момент включения темп 30-35 гр резких скачков нет... Может только с внутреннего источника контролера |
|
17.01.2014, 10:41 | #5 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Ошибка ^D-триггера
Я лишь повторю то, что написал: в момент включения контроллера выполняется уравнение "Температура">="Уставка".
В вашем случае всё банально. Вы не ждёте готовности памяти выдать уставку. Поэтому сразу после включения контроллера уставка равна нулю. 35 >= 0, всё работает правильно. Это описано в справке: Цитата:
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
17.01.2014, 11:18 | #6 |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Не понимаю, как работает схема
Семен-Семеныч!!!!!
Необходимо банально подождать какоето время и усё?!?! Или зашить макрос готовности |
17.01.2014, 12:14 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Угумс.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
21.03.2014, 19:02 | #8 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
|
21.03.2014, 19:40 | #9 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Не понимаю, как работает схема
|
22.03.2014, 15:24 | #10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Убрать NOT и триггер покажет факт окончания инициализации именно этой ячейки.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
22.03.2014, 17:59 | #11 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
|
22.03.2014, 18:00 | #12 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
|
23.03.2014, 14:05 | #13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Конструкторские программы ведь как-то работают. А там именно задержка от объёма используемой памяти.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
24.03.2014, 19:07 | #14 |
Senior Member
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 056
Благодарил(а): 20 раз(а)
Поблагодарили:
22 раз(а) в 22 сообщениях
|
Ответ: Не понимаю, как работает схема
|
14.10.2014, 19:57 | #15 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
|
15.10.2014, 10:02 | #16 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Первая фраза вашего сообщения немного противоречит второй, а вторая, если понять её буквально, вообще не касается блоков памяти. Поэтому отвечу раздельно на первую и на вторую в двух частях. Всего три ответа.
Нет. Если вы таким прозрачным образом намекаете, что ваш алгоритм не успевает дождаться инициализации, то введите в программу сигнал готовности по примеру программ Конструктора. Можно даже банально отсчитать нужное время счётчиком CTU(16) и снять с него сигнал разрешения работы алгоритма. Переменным никогда ничего самостоятельно не присваивается, это может сделать только Modbus-мастер У блоков памяти есть выход готовности значения. Когда этот выход становится равен единице, вы можете использовать это значение в программе. Для простоты можете проверять этот флаг у самого последнего блока памяти, он все равно инициализируется в самом конце. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.10.2014, 19:15 | #17 |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
|
17.11.2014, 19:11 | #18 | |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
Ещё вопрос, см. картинку 2, как поймать 1.#QNAN? |
|
18.11.2014, 10:38 | #19 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
2) Ловить нужно ноль в делителе, а не qnan Ну и последнее - обе картинки, извините, пример неграмотного подхода. Сигнал готовности должен влиять на определяющий алгоритм, на его выходные данные. Например, в макросе расписания всё построено так, что нули на выходах ни к чему не приведут. В проекте Конструктора всё построено так, что аварии не фиксируются, а сами макросы вполне себе пробегают в первые пару секунд все 8 кругов ада. Ну и пусть пробегают. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
18.11.2014, 20:23 | #20 | |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
2)А кто написал вот это (см. картинку Деление)? Здесь инструкция по поиску qnan. Или уже исправили? Тогда откуда скачать обновлённую справку? 3)Приведите, пожалуйста, пример грамотного проекта, состоящего из одной ячейки памяти и задержки. Критерий грамотности - первое же (а равно и последующее) чтение из ячейки памяти должно возвращать не нуль, а то, что в ячейке этой записано. Почему я вцепился в задержку? Потому, что сейчас я вынужден каждую ячейку памяти обвязывать дополнительными блоками для предотвращения деления на нуль. Надеюсь обойтись одной задержкой на всю используемую память, но не представляю, куда засунуть эту задержку. |
|
19.11.2014, 11:21 | #21 | |||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
Цитата:
Цитата:
На этот раз был некорректен сам вопрос. Мои ответы отвечают на ваши слова, но не на то, что вы на самом деле хотите спросить. Спросите нормально, чтобы я не гадал, что же именно вам нужно и я вам обязательно помогу. Засовывать её нужно в алгоритм. Алгоритм вы не показываете. Но спрашиваете, что там дорабатывать. Патовая ситуация для меня. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|||
19.11.2014, 19:33 | #22 | ||
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
Цитата:
Мне нужно, чтобы при чтении памяти SMLogix возвращал не нуль, а то, что в памяти записано. Прошу привести простейший пример, в котором при первом чтении памяти читается не нуль, а содержимое памяти. Очень надеюсь на Вашу помощь. |
||
21.11.2014, 10:26 | #23 | ||||
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 183
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
Вам нужно не "предотвратить чтение нуля из памяти", а получить действительно значение. Ноль тоже может быть действительным значением, записанным в память. До получения действительного значения у вас всё равно будет ноль, но только уже недействительный ноль. Цитата:
Цитата:
Просчитайте алгоритм чуть дальше, чем на один шаг и вы поймёте, что бесполезно тратите своё время. Цитата:
Покажите ваш алгоритм и я скажу, что нужно делать. Куда-то же ваше число уходит, правильно? Куда оно уходит? __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
||||
21.11.2014, 19:50 | #24 | |
Senior Member
Регистрация: Jan 2012
Адрес: Саратов
Сообщения: 179
Благодарил(а): 1 раз(а)
Поблагодарили:
3 раз(а) в 3 сообщениях
|
Ответ: Не понимаю, как работает схема
Цитата:
"При чтении памяти всегда возвращается то, что в ней записано. Но пока память не готова, SMLogix возвращает нуль и разработчик должен это учитывать." Я понял, как работает схема, и благодарен Вам за терпение и помощь. |
|