А блин! СП3xx имелось ввиду ;)
Слейвом сложнее, я так сразу и не помню как.
Вот и посоветуйте человеку: какой там нюанс?
Вид для печати
Ребята, я не понял. Наверное криво формулирую вопрос.
Целостность мне сейчас по-барабану. Это уже вопрос следующего порядка. Хотелось бы чтобы она просто работала.
Мастером так мастером, если надо.
Проблемы следующие.
На ИП320 не нашёл как задавать начальное значение. Мало того. Если я задаю границы для этого значения, ИП почему то в начальный момент даже этого не видит.
То есть условно у меня есть уставка температуры она должна быть в пределах 40-60 градусов. Я запускаю проект и ничего не нажимаю на панели. И в цикле связи с панелью ПЛК забирает из панели 0. Что сразу же затирает моё значение.
Короче вопрос такой. Как мне сделать, чтобы текущее значение отображалось на дисплее?
Или если я панель сделаю мастером, то это автоматом произойдёт?
Ясно, что если бы панель была со своей прогой, я бы это на крайняк руками разрулил.
:)
Спасибо. Уже решил аналогичным способом.
Просто в голове некий... диссонанс ... )))
1. Панель оставил слэйвом.
2. В панеле завёл на один адрес 2 переменные с разными именами. 1 на запись - вторую на чтение... ))
3. В цикле обращения к панели, сделал тоже что и Вы.
Проверил - работает...
Хотя, если задумываться, то нюансы могут быть.
Я у себя, когда работаю, ну например в OPC сервере, я несколько типов операций делаю. В частности групповые операции.
Здесь нет подробного описания, непонятно как формируются запросы к панели. Объединяет ли она их? Чётко ли следует сформированному списку адресов? Мешает ли запись с чтением или сначала идёт чтение, а потом запись?
Но для данного проекта, думаю я его закрою. Сейчас устраню замеченные мной нюансы и пускану.
Для данного объекта рюшек не надо. Я запуск производил сидя в луже на табуретке. Шкаф и стены слегка облезли, трубы поржавели, на голову каплет....
:D
sasav
Как делаю я в случае ненулевых значений первоначальных уставок. Панель мастер, ПЛК слейв. В ПЛК пишу проверку требуемых регистров на ноль. В случае если таки ноль, то присваиваю безопасное значение из допустимого диапазона. Проверка (и присванивание если надо) делается только при старте(включении) ПЛК и на работу остальной программы далее не влияет. Очень удобно при отладке. И выручало на ПЛК110 старой серии, где ретайны сваливались, если в ПЛК помирал аккумулятор.
Здравствуйте!
Совсем недавно начал изучать синтаксис ST и столкнулся с задачей, с которой не могу разобраться.
Нужно посчитать время, когда входная переменная INPUT имеет значение FALSE за сутки и сколько раз она принимала значение FALSE.
То есть: вход INPUT может принимать значение FALSE много раз за сутки, поэтому нужна сумма временных интервалов, когда INPUT имел значение FALSE и количество значений FALSE, которые будут обнуляться в заданное время (например, в 9:00 ежедневно).
Код:VAR
INPUT: BOOL;
Count: UDINT; (*сколько раз она принимала значение FALSE*)
SumTimeF: TIME; (*время, когда входная переменная INPUT имеет значение FALSE за сутки*)
CountOld: UDINT; (*За предыдущие сутки*)
SumTimeOld: TIME; (*За предыдущие сутки*)
F_TR: F_TRIG;
delta: TIME; (*Время цикла ПЛК*)
t1: TIME;
prevScanTime: TIME;
ttt: TIME;
init: BOOL;
TON_24h: TON;
END_VAR
(*Время цикла ПЛК*)
t1:=TIME();
IF NOT init THEN (*Первый цикл*)
prevScanTime:=t1;
init:=TRUE;
Count:= Count + BOOL_TO_INT(NOT INPUT);
END_IF
delta := t1 - prevScanTime;
prevScanTime := t1;
(*-------------------*)
F_TR(CLK:= INPUT);
(*Текущие сутки*)
Count:= Count + BOOL_TO_INT(F_TR.Q);
IF NOT INPUT THEN
SumTimeF:= SumTimeF + delta;
END_IF
TON_24h(IN:= NOT TON_24h.Q , PT:=t#24h);
(*За предыдущие сутки*)
IF TON_24h.Q THEN
CountOld:= Count;
SumTimeOld:= SumTimeF;
Count:= 0;
SumTimeF:= t#0ms;
END_IF
Здравствуйте! Подскажите пожалуйста правильно ли я адресую (с учетом всех необходимых выравниваний) регистры в модбас. ПЛК160 (слейв), OP320 (мастер), из ПЛК считываю переменные модуля Statistic. Заранее спасибо!
Слегка изменил вашу программу. Обратите внимание на переменную temp_m.
Спасибо! А почему надо преобразовать в тип ВОРД? Есть же в режиме слэйв у ПЛК переменная типа ФЛОАТ (Real)? В модуле Statistic переменная температуры тоже REAL?
Показания к сожалению на ОР320 не выводятся, проверить не могу. Пишет на панели "потеря связи". (как после загрузки конфигурации, так и при соединении по RS485 с ПЛК):( Микросхему RS485 и цифровой драйвер к ней пропаял, но не помогло. Что может быть еще?
P.S.Панель рабочая, работает как мастер так и слейв с ПР200 (хотя после загрузки конфигурации тоже пишет "потеря связи").
rts
Да. А перед вывешиванием её в порт для передачи на ОП, она умножается на 10 и преобразуется в ворд.Цитата:
В модуле Statistic переменная температуры тоже REAL
Исходя из задачи. В ОП данный регистр отображает один знак после запятой, смысла гнать туда флоат нет. Поэтому я сделал умножение исходных данных на 10, преобразование в ворд (при нем отбрасывается дробная часть), а в ОП отображение инт с дробной частью в один разряд. Т. е. по факту обратное деление на 10 делается в самой панели.Цитата:
А почему надо преобразовать в тип ВОРД?
---
На счет потери связи ОП-ПЛК: согласующие резисторы на шине стоят? С обоих концов? Можно еще покрутить Framing time в настройках порта ПЛК. Где нибудь до 20-50 мс вместо дефолтного нуля.
Хорошо. Полезная информация буду иметь ввиду.
Согласующих резисторов нет, но до этого и без них потери связи не было. Просто в один момент стала (панель) писать про потерю связи. Но попробую повесить резисторы и проверить. Framing time посмотрю только как доберусь до ПЛК.Цитата:
На счет потери связи ОП-ПЛК: согласующие резисторы на шине стоят? С обоих концов? Можно еще покрутить Framing time в настройках порта ПЛК. Где нибудь до 20-50 мс вместо дефолтного нуля.
Спасибо за помощь, Sulfur. Отпишусь по результатам.
Зачем в настройках проекта эту галку включили?
Вложение 45720
У Вас разве предусмотрены в ПЛК принудительные переходы по экранам панели?
Регистр 3х00 в слейве ПЛК содержит не номера экранов, а "Цикл в микросекундах (0-15 бит)"
Ошибки в адресах
Вложение 45721
и кол. регистров
Вложение 45722
Эх... Пока ни наличие согласующих резисторов, ни изменение параметра Framing time не помогли. Потеря связи и все тут!
petera
поправил по Вашему совету настройки ОП, но к сожалению тоже не помогло. За помощь спасибо.
Но решить в чем проблема пока не удается, хотя все таки думаю, что проблема со стороны ПЛК, раз с ПР работает.
Может есть еще варианты, что может быть?
Да. Раньше же работало и с ПЛК, и с ПР с этим комплектом кабелей. Температуру из модуля Statistics я выводил на ОП320. Все показывало. С ПРкой и сейчас все работает. Просто я не могу понять после какого момента и что могло произойти. В один момент просто сел - и все, потеря связи. Думаю уже может микросхему RS485 поменять и цифровой драйвер? Ну это крайние меры. к тому же не факт что поможет. Сигналы идут дальше на верхнюю плату ПЛК, а там без Э3 не разберешься, что куда!:(
Если имеет место несовпадение опрашиваемых регистров в ОП и ПЛК, то ОП это воспринимает как потерю связи. Т. е. необходимо тщательно проверить соответствие регистров в ПЛК и ОП.
Я конечно перепроверю все еще раз. Но я поправил в ОП все замечания, на которые указал, уважаемый petera. и программу использовал, которую Вы поправили (где преобразование из real в word). и пока проблема с потерей связи с ПЛК не решилась.
Доброе утро!
Прошу Ответить на вот такой вопрос.
Как в Codesys 2.3 на языке CFC задать таймер что бы он считал не миллисекунды, а часы?
Буду очень признателен за советы
Задать таймеру уставку в часах,
TON_24h( PT:=t#24h);
Вложение 45753
!!!topor,
Есть библиотека SysTime
Берем от туда переменную часа и по ее изменению делаем свой каунтерЦитата:
(*Системное время*)
TimeAndDate.Day :=0;
TimeAndDate.DayOfWeek :=0;
TimeAndDate.dwHighMsec :=0;
Millisecond:=TimeAndDate.dwLowMSecs;
TimeAndDate.dwLowMSecs :=0;
TimeAndDate.Milliseconds :=0;
TimeAndDate.Minute :=0;
Second:=TimeAndDate.Second;
TimeAndDate.Second :=0;
TimeAndDate.Hour :=0;
TimeAndDate.Year :=0;
TimeAndDate.Month :=0;
Sys_time.ulHigh :=0;
Sys_time.ulLow :=0;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
Спасибо тебе, добрый человек)
Добрый день!
На сайте для ПЛК 110 [M02] указан размер ROM памяти = 6 МБ (Flash).
Правильно ли я понимаю, что эти 6 МБ - это память программ (то есть код программы в проекте ограничен 6 МБ)?
Просто при загрузке программы 1.5 МБ периодически возникает следующая ошибка:
Вложение 45767
Однако, после попытки повторной записи программа записывается.
Мистер Никто, назовите полностью модель своего ПЛК. Например: ПЛК110-24.30.Р-М[M02]
P.S. ROM - это вообще-то "Память только для чтения". Полагаю там прошивка самого ПЛК.
В плане пользовательской программы есть 2 модификации:
L - искусственно ограничено до 360 байт
M - 100 кБайт
(по последней букве в модели)
Добрый день. Решил для своего диплома выбрать тему "Автоматизации СУ зерносушилки" и реализовать ее в КДС 3.5, но столкнулся со следующим: естественно, у меня нет на руках ничего из аппаратной части, все нужно сделать в режиме эмуляции, отсюда вытекает вопрос: можно ли в кдс3.5 сделать эмуляцию процесса, заменив датчики и ОУ математическими уравнения( скорее всего они будут дифференциальными 1 или 2 порядка)? Если все же нет, то можно ли как-то связать файл MatLaba'а с КДС? Заранее спасибо
МожноЦитата:
можно ли
.....
Можно подробнее узнать как именно это делается? Мб спец. библиотеки или что-то другое, в мануале подобного не находил...
Да все правильно. Спасибо за подсказку.
Всем здравствуйте.
При переносе переменой из локальной в глобальную она перестала определяться и пишет INVALID.16#A8, что это может быть? Тип переменнной Bool.
Вот мой проект. Работаю в режиме эмуляции. Ошибка возникает при открытии клапана смесительной установки. Использую написанные имитаторы для регулирования температуры в объекте, но так как переменная не принимает значение true или false (пишет INVALID.16), имитатор не работает. Помогите, пожалуйста, разобраться, пишу курсовой проект.
Вложение 45821Вложение 45822
Модель ПЛК огласите пожалуйста. Не могу подобрать таргет.
Объявленная в Глобал (НЕ в RETAIN) булева переменная по умолчанию FALSE, излишнее указание.Код:KLvodiSmesitelya: BOOL:=FALSE;
Есть подозрение, что эта переменная объявлена еще и в конфигурации ПЛК на физическом входе. Если это так, то из секции Глобал данное объявление необходимо убрать, т. к. переменные, объявленные в конфигурации уже являются глобальными.
Подключил ПЛК110-30 через Ethernet к роутеру, потом вывел в интернет. Контроллер стал доступен из интернета по фиксированному адресу.
Пингуется, лампочки Эзернета светятся, но подключится Codesys'ом к нему не могу...."произошло отключение".... Как быть?
Заранее спасибо