Просмотр полной версии : вызов программ
вопрос спецам.
в программе три режима, три программы которые вызываются следующим образом как показано на скрине. одна программа написана Fbd и две Sfc. при вызове одной из Sfc программы сначала она работает, потом если перевести в другой режим и снова обратится к ней она начинает работать с того шага на котором была остановлена, а не с первого, при этом плк начинает жутко тормозить и на панели оператора (сенсорная панель сп270) появляется сообщение типа нет связи. как сделать что бы при повторном обращении к Sfc программе она начинала работать с первого шага а не с того где остановилась. и почему плк периодически притормаживает именно с этой программой, не только когда произвести выше указанные манипуляции, а просто после включения через какое то время и работе в одном режиме.
на каком плк это сделано и прошивка?
плк 110 32м, прошивка фиг знает
Николаев Андрей
02.12.2010, 11:30
Уважаемый Woffka - это не бага - это как раз нормальный режим работы программы на языке SFC. Рекомендую по подробнее почитать о данном языке - не всегда он самый удобный, особенно для подпрограмм. Для сброса программы есть флаги, но точно не помню - надо в документации глянуть...
Sfc решил использовать так как в работе необходима четкая последовательность работы исполнительных механизмов и легче всего это исполнить на Sfc как я думаю, и это меньше загружает плк, так как в определенный момент времени выполняется только один "кадр". или я не прав?
ручной режим выполнил в Fbd, ну это ясно, что бы в момент времени работала вся программа.
lara197a
02.12.2010, 19:56
вы при начале выполнения действия выставляйте флаг, при окончании - сбрасывайте его.
по фронту этого флага(маркера) переходите к следующему шагу.
почитал мануал и форум. решил использовать SFCInit. как делал показано на скрине, почему выходит ошибка при компиляции, что не так? вроде всё правильно делал.
Александр Приходько
06.12.2010, 10:16
все верно. инициализация.
в программе или в фб есть своя локальная память. поэтому данные программные модули имеют возможность сохранять те, либо иные состояния.
если у вас большая программа, а фб или программ в вашем проекте много, и каждую программу или фб при вызове необходимо выполнять в исходном виде, то без инициализации ни как, это касается любого языка программирования.
Читал в мануале про инициализацию, не понял:confused: , может ткнете носом что именно и как надо сделать?:o
Александр Приходько
06.12.2010, 11:48
Читал в мануале про инициализацию, не понял:confused: , может ткнете носом что именно и как надо сделать?:o
Вариантов много.
Как правило делается дополнительный вход в ФБ, под назватием Start или еще как нибудь.
При подаче сигнала на данный блок определяется фронт сигнала, по фронту высталяете все переменные блока в исходные значения. Соответственно, если сигнал на входе данного блока сохраняется, то блок выполняется, если нет, то блок не выполняется.
В случае SFC данная функция реализуется в виде инициализации шага.
Всего то надо было прописать в SFC программе в поле объявления переменных
VAR_INPUT
SFCInit: BOOL;
END_VAR
ни где про это не написано, пока сам допер столько перечитал, ужс. хотя есть в этом огромный плюс, много чего полезного узнал. лан всем пасиб. всё вроде работает
Вопрос про тормоза всё таки открыт. заметил вот что, если в конфигурации задач задачи выстроить как на скрине №1, то ПЛК тормозит очень сильно, иногда перезагружается, как на втором скрине тормоза проявляются изредка, но всё же присутствуют, прикладываю проект, может кто скажет в чем дело.:confused:
заливаю в ПЛК другие старые программы, всё работает на УРА
ПЛК110-32
Вопросик такой ещё. прописываю вместо SFCInit SFCReset, запускаю программу, после сброса SFCReset программа работает с какой то периодичностью, например один из выходов четко прописан как TRUE, а он стоит "моргает" с периодом примерно в пол секунды, с шага на шаг переходит всё нормально, но вот выходы "моргают"
Александр Приходько
13.12.2010, 11:08
Вопросик такой ещё. прописываю вместо SFCInit SFCReset, запускаю программу, после сброса SFCReset программа работает с какой то периодичностью, например один из выходов четко прописан как TRUE, а он стоит "моргает" с периодом примерно в пол секунды, с шага на шаг переходит всё нормально, но вот выходы "моргают"
Отлаживайте программу по шагам. Скорее проблема в не корректности кода. Осталось найти где именно.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot