petera, огромное спасибо, но я уже сам макрос написал (ну как написал, переложил вашу функцию под Лоджик :rolleyes::rolleyes:). Практически закончил макрос обратного преобразования (дни недели осталось). Как доделаю выложу на форум.
Вид для печати
petera, огромное спасибо, но я уже сам макрос написал (ну как написал, переложил вашу функцию под Лоджик :rolleyes::rolleyes:). Практически закончил макрос обратного преобразования (дни недели осталось). Как доделаю выложу на форум.
Дни недели здесь не самое сложное
Вложение 26289
Пн - 1, .. Вс - 7
ЗЫ.
Обязательно проверьте свой макрос для третьего месяца.Цитата:
ну как написал, переложил вашу функцию под Лоджик
Из-за того, что в лоджике нет целых переменных со знаком, то для этого фрагмента
(*Вычислить дату с учетом високосных лет*)
IF month > 2 THEN
count := (month - 1) * 30;
IF month > 7 THEN count := count + SHR(month - 3,1);
ELSE count := count + SHR(month - 4,1); END_IF;
..............
Для month=3
При выполнении операции SHR(month - 4,1) в кодесис получим "-1", а в лоджике получим 2147483647 т.к (4294967295/2)=2147483647
Соответственно для месяца=3
в кодесис count + SHR(month - 4,1)=59
а в лоджике получится 2147483707
Пришлось в лоджике добавить проверку месяца на 3 и вычитать явную 1 из count
Вложение 26290
Всем привет!
Не могу сохранить значение суммарного расхода. При перезагрузке значение сбрасывается в 0.
Проект на ПЛК160-АМ + СП307Р по ethernet через свитч. В проекте считается суммарный расход через расходомер. Ни как не получается сохранить это значение, что бы при перезагрузке это суммарное значение сохранялось и дальнейшее суммирование продолжалось с последнего значения...
Сделал в PLC_PRG глобальную переменную RETAIN
Вложение 26292
в которую из экземпляра фб пишется суммарный расход
Вложение 26293
присвоил адрес %QD7.15.0. В конфигурации ПЛК присваиваю эту переменную Float переменной %QD7.15.0 для отправки в панель, но вылетает ошибка "...несколько объявлений с одинаковым идентификатором".
Вложение 26294
Пробовал через UDP, та же ошибка... В принципе не пойму логики сохранения значения переменной. Так же пытался сохранять значение переменной в файл через SysLibFile, но тоже не получилось ...
Пишу логику на CFC. ST на перспективу, сейчас хочу понять основы на понятном мне языке.
Может кто-нибудь на пальцах расскажет как можно решить эту задачу. Читал руководство по codesys, но так и не разобрался.
Понятно что я делаю все не так, но так же читал про аккумулятор, и проблему записи RETAIN,но все же хочу решить задачу программно.
Может нужно в фб делать переменную в которую пишется суммарный расход in-out, у меня просто out. И в фб локальные переменные...
Вложение 26295
Вобщем помогите плиз кто-нибудь.
Зачем вы объявляте переменную по десять раз. Пропишите ее в конфигураторе и все. Панель у вас мастер?
Надеюсь, что панель у Вас мастер? В этом случае в ПЛК ВСЕ переменные в модуле Slave являются
а) - глобальными
б) - retain по умолчанию.
По этому:
1. Выкинуть из глобальных переменных все упоминания о "CO1rashod", оставить ее имя только в конфигурации слейва.
2. "в фб делать переменную в которую пишется суммарный расход in-out"
Тоже вопрос из той серии назрел. Petera, скажите пожалуйста в чем проблема. У меня на установке стоит сп270(мастер) и плк 160(slave). Проблема в том что при отключении питания все параметры, заданные на панели скидываются в ноль. Грешу на аккумулятор, но как подобного избежать, надеясь на худшее и задействовать память сп270. Такая же проблема при глобальном измении кода в ПЛК, приходится перезабивать все параметры.
Начитавшись про батарейку плк160 я сразу написал блок записи для переменных retain в файл (пишу в память плк при изменении, отключении питания и периодически раз в сутки). При включении плк уставки считываются из памяти. Если интересно вечером вам сброшу там ничего сложного.
Смотрим в Моих темах http://www.owen.ru/forum/showthread.php?t=21387 про Старт СП270 и ПЛК с ретайн при включении питания.
Кто не успел, тот опоздал. http://www.owen.ru/forum/showthread....l=1#post219991