Через while например, условие цикла true, а тело цикла это описанные две паузы и включение/выключение
Вид для печати
Если делать бесконечный цикл, то встроенный в контроллер сторожевой таймер воспринимает это как зависание программы и просто сбрасывает контроллер по истечении заданного в конфигурации максимального времени цикла ПЛК, а сама программа по сути не работает (даже неправильно).
Если бы можно было как-то вручную задать фиксированное время цикла ПЛК, например 10 с, то тогда этот принцип, указанный Петровым, можно было бы легко продемонстрировать.:confused:
непонимаю сути Ваших претензий к ИгорюВы же сами его процитировали и именно по этому такой код работать не будет, потому что плк перезагрузится, а если убрать цикл, то выход останется всегда в ФАЛЬШ по тому что в реальные выхода, будет подаваться последнее записаное значение переменной, причем не важно что во время цикла она была постоянно ИСТИНА, а в последней строчке кода программы присвоили ей ФАЛЬШ, вот это значение и уйдет в физический выход или в модбас переменнуюЦитата:
она содержит бесконечный цикл
По поводу вручную задать фиксированный цикл, кто мешает, перейдите в менеджер задач и сконфигурируйте свою задачу
В приведённом тексте выбраны не самые удачные формулировки, и оттого разница между моделями программирования ускользает от читателя-новичка. На самом деле, если правильно написать подобную программу-мигалку, скажем, на SFC, то она будет полностью соответствовать тому описанию:
http://images.devs-on.net/Image/XCyL...led100Pain.png
На месте автора я бы взял другой пример. Например, запись текущего времени в переменную и актуализация этого значения:Или с миганием:Код:// ПК:
while (true)
{
cur_time := TIME();
Sleep(20);
}
(* ПЛК *)
cur_time := TIME();
И отсюда можно плясать о том, почему для ПЛК программа получается такой короткой. Это должно заставить думать иначе.Код:out := TIME() MOD 1000 > 500; (* опа фанкшен стайл 8-] *)
Конфигурировал, сброс произойдет в любом случае. Смысл в том, что в рамках этого одного цикла значения переменных даже один раз не успевают установится т.к. сторожевой таймер делает сброс раньше.
Спасибо за красивый привильный пример, но увы он правильный :)
Потому что описание правильное, говорю же. Из него вообще никак не следует, что реализованная по этому алгоритму программа для ПЛК работать не будет. Она будет. С таким описанием алгоритма получается, что автор книги сделал ложный вывод и на этот ложный вывод вы хотите за уши притянуть пример неправильной программы с паузами в потоке исполнения. Такую неправильную для ПЛК программу написать очень легко, но не по этому описанию, а по его частному случаю.Цитата:
увы он правильный
[QUOTE=nb1979;100348]Конфигурировал, сброс произойдет в любом случае. Смысл в том, что в рамках этого одного цикла значения переменных даже один раз не успевают установится т.к. сторожевой таймер делает сброс раньше.
Вы что ребенок индиго, Вы в состоянии отследить изменения в единицы микросекунд., что так говорите
Уберите цикл и поставте счетчик после каждого изменения состояния и увидите что за цикл переменные меняются
ЗЫ в плк нет многозадачности в плане выполнения параллельно инструкций процессора, поэтому когда выполняется бесконечный цикл, контроллер не отправит в КДС свои значения, поэтому Вы в режиме онлайн не увидите ни каких изменений до сброса плк
ЗЫЫ если хотите все же увидеть эффект переключения, тогда программу надо поменять от прямых присваиваний в следующее flag:= NOT flag; и так нечетное количество раз, тогда возможно по окончанию цикла можно будет увидеть измененное состояние
Здравствуйте!
Столкнулся с проблемой. Периодически, при внесении изменений в конфигурацию, перестают работать соединения по MODBUS TCP SLAVE и MODBUS RS485 MASTER. При этом если всё вернуть как было - соединение не восстанавливается. MODBUS TCP SLAVE лечится удалением/добавлением TCP[VAR]. MODBUS RS485 MASTER не лечится даже при полном удалении ветки. Сброс и холодный сброс не помогают. Соединение с CoDeSys проходит нормально.
ПЛК-110-30-220 + МВА8 (по RS-485)
Подскажите пожалуйста в чём может быть дело и можно ли как-то ещё дистанционно решить проблему?
И не забывайте после внесения изменений очищать все, и перекомпилировать все.
Попробую конечно, но проблема в том что всё это установлено далеко и ездить на объект перезапускать вручную каждый раз возможности нет. А самое главное непонятны причины по которым это происходит.
Кстати, может кто-нибудь подскажет. Заводской сброс сотрёт сетевые настройки (ip, gateway и т.п.)?
Меню (по моему) проект. Команда очистить все.
Вы меня простите, не хочу никого учить, но мне кажется не совсем правильным менять конфигурацию ПЛК на работающем объекте. Причем удаленном...
IP и Gateway не сбросятся. Сбросится программа и во Flash (вместе с конфигурационными файлами ModBus и пр) и из ОЗУ.
Спасибо попробую
Полностью с Вами согласен. Просто я меньше месяца как приобрёл данный контроллер. Осваиваю...
Т.е. по идее если сделать заводской сброс и залить всё по новой, то это может помочь в моём случае?
Увы. Ни полная очистка ни заводской сброс не помогают
Ну тогда, как ни банально, самое правильное - выложить проекты. И мастеров и слейвов. (Секретный код - можно снести)
Настройки самого МВА8 ?
(и шаблоны - не очень. Лучше уж UMD)
PS
Осторожненько - диод RS на МВА8 молчит ?
пару дней назад всё работало нормально
Диод не вижу, контроллер с модулем на удалёнке. Печалит то, что нет активности на RS-485 - последняя ошибка 0 всегда и адрес не меняется. Но больше всего ставит в тупик периодическое пропадание TCP. Там параметров кроме порта, который я никогда не менял, вообще нет. Тем более непонятно, что связь то с контроллером из CoDeSys работает.
Кстати, не знаю имеет ли это значение, но я не совсем правильно написал. у меня не МВА8, а МВ110-224.8А на 220В (на сайте кстати такого нет, как он мне достался ума не приложу :) ).
Ошибка 0. Адрес не меняется - так какой адрес-то ? 16 ?Цитата:
последняя ошибка 0 всегда и адрес не меняется
МВ110-8А - таже МВА8. Так его проект будет ?
В 99.999% - чего-то упустили. Варианты банальные.
1.МВ - удален. И выключен. :)
2.Неправильно подключены АB/Перебита витая пара.
3.Не снята перемычка на МВ/Не перезагружен МВ после перенастройки
4.Какая-то цифирка но совпадает в настройках портов и протоколов ПЛК-МВ/Что-то с адресами регистров напутано.
5.Пытаемся (утрирую до абсурда) опрашивать стопицот регистров каждые 10мс на ASCii при 9600
6.С каким-то фанатичным упрямством используем AT% для области обмена (хотя средства КДС позволяет просто забыть про них) - и после манипуляций в конфигурации забываем поправить адреса. Пялимся после пуска на энти переменные, не видим изменений или в них чушь.
Думаю что где-то 4..5. Ну точно не 6 :)
Добавлю. Сталкивался с тем, что иногда при изменении параметров опроса слейва мой ПЛК110 переставал опрашивать всю периферию. Причем это лечилось только заводским сбросом и передергиванием питания. Без выключения ПЛК ничего не заводилось.
Может быть есть смысл приспособить 1 из выходов под самосброс по питанию через реле?
Цитата:
последняя ошибка 0 всегда и адрес не меняется.
А проблема-то в чем ?Цитата:
Да 16
LastError = 0
LastAddres= 16 ?
Не начинается. Факт.
Делаем с нуля пустой проект. 1 мастер. UMD. Читать 1 регистр с МВА8. (Любой 0..47).
Получится ?
Заводской сброс перед заливкой.
http://www.owen.ru/forum/showthread.php?t=13580 отсуда пробовали какой нибудь пример взять за основу
ЗЫ или этот http://kipshop.ru/Primeri/DevicesOwe...dbus%20RTU.zip
Сегодня попробую перезапустить по питанию, а там видно будет. Если поможет и будет стабильно работать (сбои происходят только после загрузки обновлённой программы), то видимо поставлю реле на сброс питания. Через библиотеки конечно не очень бы хотелось, хотя видимо придётся.
А вот интересно, обработчик конфигурации прошит в ПЛК или грузится вместе с программой?
P.S. Какие файлы должны остаться на ПЛК после заводского сброса? Или иными словами: какие файлы нельзя удалять?
Явно что-то с портом. Совет Аmko #1558 есть смысл попробывать.
Думаю что Николаев Андрей может начать распросы про версии прошивки/таржеты ?
А power status в statistic'е - синий ?
Тупая проверка порта.
У вас 110-30. 2xRS-485. Заведите сам на себя. На RS-1 мастер, RS-2 слейв. Попробуйте самое простое 8/N/1, RTU, всякие фрамтаймы - 0. Один регистр в слейве. Один в мастере.
))))) Даже не предполагал такого гимора с штатными мастерами. Хихикаю.
На любителя (типо меня). Не зависящая от каких-то таржетов, версий прошивок, модели плк вещь. Как стал использовать - сетевые проблемы стали воспоминаниями.Цитата:
попробуйте тогда через библиотеки, а не через конфигуратор, думаю Валенок поддержит такое предложение
Приехал, вижу индикатор обмена мигает??? Попробовал подключиться - исходники не читаются, хотя я на 100%уверен, что в последний раз заливал их. Дальше - больше. Залил старую версию программы, которая осталась на другом компьютере. И чудо!!! Всё заработало даже без сброса питания!
С одной стороны это замечательно, а с другой - ставит меня в ещё больший тупик. Раз индикатор обмена на МВ8А мигал - значит обмен был. Хотя его как бы не было. Что же получается, я с разных компов залил разные программы, которые как-то параллельно работали? В CoDeSys вроде всё одинаково устанавливал. Попробовать переустановить CDS на том компе с которого проблемная прога грузилась?
З.Ы. Опять же, днём пробовал залить пустую прогу (только мастер) с чисто установленного CDS. Непонятно...
З.З.Ы. А TCP slave всёравно отваливается...