Валенок, огромное спасибо. Сейчас буду испытывать. Только не понял одну строчку
Цитата:
OUT:=OUT and 255; //чтоб муть не гнать
Вид для печати
Валенок, огромное спасибо. Сейчас буду испытывать. Только не понял одну строчку
Цитата:
OUT:=OUT and 255; //чтоб муть не гнать
Выходов - восемь.
Валенок. Проверил Ваш вариант. Работает отлично. Запись работает без ошибок. Чтение - 1 ошибка. Причем таймеры я еще никакие не устанавливал. Еще раз СПАСИБО!
Понял, это чтобы обнулить лишние биты.Цитата:
Выходов - восемь.
Да. Ошибка была в самом начале.
Rs.dL=0 - это, как я понял, задержка ответа?
Вероятно после setting'а требуется некоторая пауза. Но суть не в этом. Работа при любом уровне помех. Главное чтоб непрерывная череда помех не превышала t.out в МДВВ и устраивающий Вас период контроля связи. Обычно 1-3сек - за глаза для обоих.
..
connect(in:=false,pt:=период_контроля); //tof
case
..
if r3.complete then
connect(in:=C connectoм - очепятка.
после complete
connect(in:=r3.exception = 0 );
..
Rs.dL - задержка ответа в МДВВ. Не нужна.
То есть открываем порт. Пауза 1сек. Потом чтение с интервалом 1-3 сек.Цитата:
Валенок
Вероятно после setting'а требуется некоторая пауза. Но суть не в этом. Работа при любом уровне помех. Главное чтоб непрерывная череда помех не превышала t.out в МДВВ и устраивающий Вас период контроля связи. Обычно 1-3сек - за глаза для обоих.
Под контролем связи Вы что имели в виду, период опроса входов? Контроль связи осуществяестя в процессе чтения, если нет ошибок, то связь есть. Если есть помехи увеличиваем таймаут в приборе (сейчас там стоит 60 сек. надо ли больше?). Я правильно понял?
Уточнение по коду. После того, как завершился процесс чтения подаем сигнал на таймер connect. В следующем цикле перед case убираем сигнал с таймера, время пошло. Далее пока connect.Q=TRUE чтение не разрешаем. Так?Цитата:
..
connect(in:=false,pt:=период_контроля); //tof
case
..
if r3.complete then
connect(in:=true);
..
Пауза если и нужна 1-2мс.
Зачем такое редкое чтение ?
TOF !Цитата:
В следующем цикле перед case убираем сигнал с таймера,
Связь есть пока хоть один ок в течении контрольного времени (или предельного кол-ва непрерывных ошибок)Цитата:
если нет ошибок, то связь есть.
Чесно говоря я t.out и больше 3сек никогда не ставил - это под 3 сотни запросов.Цитата:
Если есть помехи увеличиваем таймаут в приборе (сейчас там стоит 60 сек. надо ли больше?)
Модуль статистики имеет переменную, которая указывает на статус питания ПЛК. Если анализировать эту переменную, можно произвести запись в лог об отключении питания.
Как лучше определить состояние, когда ПЛК стартанул? (после подачи питания или просто рестарт пользователем)
Код:VAR
init:bool:=true;
...
END_VAR
----
в самом начале программы:
IF init THEN
...
Делаем что надо при старте
...
init:=FALSE;
END_IF
Здравствуйте! Вопрос вроде бы простой но что то не соображу. Имеется счетчик CTU переменная его состояния CV-типа WORD выведена на визуализацию кдс но в самом счетчике она меняется в десятичной системе а в визуализации в шестнадцатиричной, что не очень приятно мягко сказать пользователю, все мои попытки преобразовать пока безуспешны.. sos my diar frend!
Вопрос практикам:
Есть ли какая принципиальная разница в способе подключения МХ110 к ПЛК110: ModBus/Owen?
to alex55 Посмотрите в документации CoDeSys_Visu_V23_RU.pdf стр.20. Там есть таблица символов формата вывода. В визуализации в категории Text укажите %u
Потрясающая компетентность и оперативность , я все буквы перепробовал а u как то не заметил. Спасибо большое amn
Вопрос практикам:
1. Есть ли какая принципиальная разница в способе подключения МХ110 к ПЛК110: ModBus/Owen?
2. При подключении МВ110-8А по протоколу Овен
https://lh6.googleusercontent.com/-J...wen-Master.jpg
Что за переменная %QW7.2.0: WORD; (* Circular time *) [CHANEL (Q)] ?
http://www.owen.ru/forum/showthread....l=1#post121016
Для Вас этот же документ, только дополнительно пункт 3.4.5. Переменные протокола ОВЕН
Добрый день! Возникло желание основную программу PLC_PRG писать на ST/ а небольшие программки на LD, создаю переменные для перехода из из главного POU PLC_PRG в дополнительную программу и при изменении значения переменной в главной программе жду его изменения в дополнительной, пока не получается и описания не нашел.Помогите словом или примером,пожалуйста, уважаемые знатоки..
Спасибо,разобрался сам, все получилось переменные получаю и в дополнительных проектах и возвращаю в главный PLC_PRG.
Если вы не используете функционал ФБ то можно просто объявить переменные глобальными и не передавать их туда сюда. А вызов подпрограммы на LD будет тогда просто Pou1(); где Pou1 имя подпрограммы и т.д.
RV9WFJ Спасибо за этот ньюанс..
Как в CoDeSys v2 переменным присвоить статус энергонезависимых?
Объявляйте их, как Retain.
Спасибо за помощь
подскажите как воспользоваться переходом в CFC? если честно слабо представляю для чего он нужен, объясните кто знает. Когда компилирую проект пишет ошибку что МЕТКА НЕ ОПРЕДЕЛЕНА
Раньше задавал данный вопрос, но ответы не подходят под задачу. (импорт проекты из CFC в ST)
Нужно готовую программу в CFC превратить в программу на ST, чтобы понять, как все работает, куда все расставляется и т.д.
Для CFC важно расположение элементов программы, слева направо и сверху вниз. Переписывать программу на ST поэлементно не представляется возможным. Толку от того, что я каждый элемент либо могу сразу на языке ST посмотреть никакого. Важно правильное их расположение в тексте программы. При импортировании в новый проект на ST программы на CFC ни к чему не приводит, она все равно на CFC ипортируется.
Можно ли в CodeSYS это как-то сделать ? именно всю программу ?
capzap только совершенно не понимаю, как это сделать. Проект - Перевод на другой язык. Выбор Целевого языка - пусто. нечего выбирать, ни FBD ни IL
Или как-то иначе это все делается ?
Блин, это перевод коментариев на другие языки.... а не то, что я думал...
когда ПОУ не открыто, в дереве жмете правой кнопкой т выбираете конвертацию, предоставляется выбор в какой язык сохранить
capzap, спасибо, попробую. Посмотрю, возможно поможет перенести именно всю программу в ST...
В ST почему-то не дает сконвертировать.
Потому что это задача крайне нетривиальная. В ST ручками, или искать в интернете какие-либо сторонние утилиты.
Мне кажется, чтобы понять как все работает проще рассказать словами. В ST программа выполняется сверху вниз. Если вы изучили CFC, то у вас не будет проблем освоить ST. Надо просто не забывать, что вы можете хоть 150 раз в разных местах присваивать одной переменной разные значения, но на выходе всегда будет последнее присвоенное значение. Ну и основное отличие при программировании на ST это использование в основном операторов IF... и CASE..., что очень удобно. Также важно на первых порах не запутаться с таймерами. Я обычно представлял, как это будет выглядеть на CFC, а потом переводил на ST.
А если при этом указанная переменная ещё и опрашивается SCADA, то непредсказуемость "весёлых цифирок" приятно развлекут тех.персонал, т.к. опрос извне и исполнение программы в ПЛК происходят абсолютно асинхронно.
Если к этим показаниям в SCADA ещё и алармы прикручены...
Это будет просто праздник какой-то!
amn в CFC программа выполняется не только сверху вниз, но в принципе последовательно слева направо и сверху вниз. Можно растянуть так, что тоже получится сверху вниз. Но основное не это, а то, что там линиями идут обратные связи например снизу вверх. При этом нет R или S флагов на выходах, но связь будет работать.
CFC я не изучал, я его просто понимаю, так как вся схема перед глазами. Сложности были на нем сделать цикл, но по крайней мере простой цикл на нем тоже реализовывается.
А вот как эти обратные связи будут выглядеть в ST пока даже не представляю.
Собсвенно больше надо для изучения ST, так как не программер я, а больше по электронным схемам. Но прекрасно понимаю, что у ST в некоторых вещах возможностей больше.