PDA

Просмотр полной версии : Нужна помощь



Maxsvell
18.04.2015, 17:32
Всем доброго времени суток!
Вопрос в следующем: модернизирую пластавтомат Д3134 500. Родную стойку откинул на мусорку, входа и выхода прикрутил к ПЛК 110-60М(MASTER) + СП270(Slave).Программу написал на яз.CFC что было доступно для моих мозгов.
У Пластавтомата 4 режима работы(наладка,ручной,полуавтомат,автомат).На каждый режим была написана своя программа и отлажена по отдельности.
Вся сложность этого станка, заключается в том, что эл. магниты которые управляют вкл. гидр.насосов.(22 шт), в каждой индивидуальной программе повторяются по несколько раз и с разным алгоритмом включения.
Как собрать воедино все отдельные написанные программы алгоритма вкл. эл. магнитов, чтобы при вызове той или иной программы, чтобы они(эл. магниты) не видели состояния вкл.или откл. магнитов в других программах.
Все в куче в одной прграмме они образуют хаос!
Уже вторую неделю бьюсь с решением данной проблемы и результату ноль.Подскажите пожалуйста в какую сторону мне двигаться, если на этот случай имеется решение!
Буду признателен за любую мысль,подсказку,решение.

Василий Кашуба
18.04.2015, 18:37
Всем доброго времени суток!
Вопрос в следующем: модернизирую пластавтомат Д3134 500. Родную стойку откинул на мусорку, входа и выхода прикрутил к ПЛК 110-60М(MASTER) + СП270(Slave).Программу написал на яз.CFC что было доступно для моих мозгов.
У Пластавтомата 4 режима работы(наладка,ручной,полуавтомат,автомат).На каждый режим была написана своя программа и отлажена по отдельности.
Вся сложность этого станка, заключается в том, что эл. магниты которые управляют вкл. гидр.насосов.(22 шт), в каждой индивидуальной программе повторяются по несколько раз и с разным алгоритмом включения.
Как собрать воедино все отдельные написанные программы алгоритма вкл. эл. магнитов, чтобы при вызове той или иной программы, чтобы они(эл. магниты) не видели состояния вкл.или откл. магнитов в других программах.
Все в куче в одной прграмме они образуют хаос!
Уже вторую неделю бьюсь с решением данной проблемы и результату ноль.Подскажите пожалуйста в какую сторону мне двигаться, если на этот случай имеется решение!
Буду признателен за любую мысль,подсказку,решение.
Чтобы вам могли помочь, вам нужно показать ваш проект, ясновидящих и экстрасенсов на форуме не видел.

Maxsvell
18.04.2015, 18:44
Чуть позже выложу проект.

Maxsvell
18.04.2015, 18:56
Вот сам проект частями(правда без 4-ой части),она в редактировании.177971779817799

zendo057
18.04.2015, 19:07
Cамый простой вариант разбить на подпрограммы и каждую подпрограмму вызывать в отдельности,остальные останутся не активными. Помоему такая программа в ЛД да еще с комментами была бы читабельней. На пример

Maxsvell
18.04.2015, 19:45
С языком ЛД я не друж. можно как нибудь пример на CFC? поподробней что да как?

zendo057
18.04.2015, 20:16
С языком ЛД я не друж. можно как нибудь пример на CFC? поподробней что да как? Дык конвертните в FBD.

Maxsvell
18.04.2015, 20:19
А каким образом разбивать на подпрограммы?

lara197a
18.04.2015, 20:25
В каждой программе выход обозначьте как к примеру:
Out1_n
Out1_r
Out1_pa
Out1_a

Потом напишите программу с обработкой выходов(или сразу в PLC_PRG):
Out1:=Out1_n OR Out1_r OR Out1_pa OR Out1_a;

Ну и для верности пропишите положение выключателя:
Out1_n AND Naladka.....

zendo057
18.04.2015, 20:30
А каким образом разбивать на подпрограммы? Подпрограммы это отдельные PRG в примере с лева.А лучше в разделе ПРИМЕРЫ И ПОЛЕЗНОСТИ поищите на форуме.

Maxsvell
18.04.2015, 20:30
В каждой программе выход обозначьте как к примеру:
Out1_n
Out1_r
Out1_pa
Out1_a

Потом напишите программу с обработкой выходов(или сразу в PLC_PRG):
Out1:=Out1_n OR Out1_r OR Out1_pa OR Out1_a;

Ну и для верности пропишите положение выключателя:
Out1_n AND Naladka.....

Спасибо большое! А это все прописывать на каком языке?CFC?
В поле где сама программа(схема) все программы запаковывать в макросы?

Maxsvell
18.04.2015, 20:35
Подпрограммы это отдельные PRG в примере с лева.А лучше в разделе ПРИМЕРЫ И ПОЛЕЗНОСТИ поищите на форуме.

Хорошо!объязательно поищу. Отдельные PRG должны быть с разными именами? Например PRG_Naladka.PRG_Rucnoy.....?

zendo057
18.04.2015, 20:44
Хорошо!объязательно поищу. Отдельные PRG должны быть с разными именами? Например PRG_Naladka.PRG_Rucnoy.....?

Ну а вы как думаете? В одной семье дети с одинаковыми именами не бывают.

Валенок
18.04.2015, 20:47
Бывают. Мучаются только сильно

lara197a
18.04.2015, 23:08
На любом языке написать можно.
Простейшие операторы
присваивание и AND.
Смотрите справку КДС.

Василий Кашуба
18.04.2015, 23:08
С языком ЛД я не друж. можно как нибудь пример на CFC? поподробней что да как?
А что же вы в своём проекте ни одного комментария не сделали. Какие сигналы на входах, какие на выходах и для чего они нужны?

Maxsvell
19.04.2015, 03:26
А что же вы в своём проекте ни одного комментария не сделали. Какие сигналы на входах, какие на выходах и для чего они нужны?

Если делать комментарии на входах и выходах,думаю там вообще черт ногу сломает, места не так уж и много.Все комментарии на бумагах.Циклограмма на руках, при работе сразу видно что куда идет и что делает.Когда закончу весь мой первый проект, могу выложить с фотографиями самой работы и рассказом что и как делалось.Если вам конечно будет интересно))В интернете один раз как то попался мне рассказ про станок подобный и все больше я ни чего не слышал и не видел.

lara197a
19.04.2015, 10:25
Пишите емайл в личку, скину программу с литейного станка.
В основном на LD.
разберетесь.

Василий Кашуба
19.04.2015, 16:12
Если делать комментарии на входах и выходах,думаю там вообще черт ногу сломает, места не так уж и много.Все комментарии на бумагах.Циклограмма на руках, при работе сразу видно что куда идет и что делает.Когда закончу весь мой первый проект, могу выложить с фотографиями самой работы и рассказом что и как делалось.Если вам конечно будет интересно))В интернете один раз как то попался мне рассказ про станок подобный и все больше я ни чего не слышал и не видел.
Так комментарии пишут в основном при объявлении переменной. Имя переменной, её тип, если нужно присваивают начальное значение, а далее комментарии для чего эта переменная нужна.

Maxsvell
19.04.2015, 16:33
Так комментарии пишут в основном при объявлении переменной. Имя переменной, её тип, если нужно присваивают начальное значение, а далее комментарии для чего эта переменная нужна.

Я же и говорю вам, что вся сложность и заключается в том что когда я присваиваю имя переменной ну и плюс комментарии для чего и что делает эта переменная, то в следующей программе она т.е. эл магнит который управляет вкл. насоса будет выполнять другую функцию- т.е. например в одной программе эл магнит вкл. движение вперед прессформы, а в следующей программе этот же зл. магнит вкл. подвод сопла.Вот я и говорю вам - для чего писать комменты в каждой программе, если в следующей программе те же магниты выполняют др. роль?

Валенок
19.04.2015, 17:13
Ну не пишите комменты. Вас что - заставляют ?

Алексей Александрович
20.04.2015, 05:44
Я же и говорю вам, что вся сложность и заключается в том что когда я присваиваю имя переменной ну и плюс комментарии для чего и что делает эта переменная, то в следующей программе она т.е. эл магнит который управляет вкл. насоса будет выполнять другую функцию- т.е. например в одной программе эл магнит вкл. движение вперед прессформы, а в следующей программе этот же зл. магнит вкл. подвод сопла.Вот я и говорю вам - для чего писать комменты в каждой программе, если в следующей программе те же магниты выполняют др. роль?
Честно сказать ничего не понял. У Вас что выходы внешней схемой переключаются на управление разными приборами?

Maxsvell
20.04.2015, 07:39
У меня выходы включают или откл. эл.магниты насосов, а те в свою очередь при разной совокупности включенных насосов уже идут на исполнения движения той или иной части станка.В зависимости алгоритма работы.

Василий Кашуба
20.04.2015, 09:31
У меня выходы включают или откл. эл.магниты насосов, а те в свою очередь при разной совокупности включенных насосов уже идут на исполнения движения той или иной части станка.В зависимости алгоритма работы.
Так номера насосов и клапанов, подключённых к выходам ПЛК и входные датчики, меняются или не меняются?

Maxsvell
20.04.2015, 14:59
Нет не меняются.

Валенок
20.04.2015, 16:01
Вам нужно - комментируете. Вам ненужно - не комментируете . Чего обсуждаем-то ?

Maxsvell
20.04.2015, 17:43
Вопрос не в комментариях! вопрос в объединении 4-х разных программ в одну, с последующим вызовом каждой программ по отдельности.

Валенок
20.04.2015, 21:21
Ну объедините - проблема-то в чем ?

Алексей Александрович
21.04.2015, 06:33
Вариантов реализации ветвления море. Например такой (быстренько набросал)

17834

Слева ваши программы. А биты выбора режима дело схемотехники вашего станка.

petera
21.04.2015, 09:34
Вариантов реализации ветвления море. Например такой (быстренько набросал)

17834

Слева ваши программы. А биты выбора режима дело схемотехники вашего станка.
Ну и наворотили.
Тоже самое, но значительно понятней и нагляднее будет при использовании входов "EN"
17835
Только вот незадача:(
Топик-стартер, на сколько я понял, в каждой программе использует сразу глобальные переменные - выходы ПЛК. А это в корне не верно! Множественная запись выходов не есть гуд.
Во первых при отладке фиг найдешь почему какой-нибудь клапан включен, если он должен быть выключенным или наоборот.
Во вторых при указанных способах вызова отдельных программ ситуация, описанная в "Во первых" гарантирована! Т.е. если в наладке включили клапан, а потом перевели установку в автомат, то клапан может так и остаться во включенном состоянии.
Короче нельзя в каждой программе сразу управлять выходами ПЛК, в программах должны быть локальные переменные-выходы, которые в свою очередь должны в основной программе в зависимости от режима работы должны управлять выходами ПЛК.

Алексей Александрович
21.04.2015, 09:48
Ну и наворотили.
Да что первое в голову пришло то и наворотил за 5 мин. Ваша программа красивее не спорю. А как он там будет разбираться с глобальными переменными ........ Пусть учится.

Алексей Александрович
21.04.2015, 10:01
Можно упростить задачу. По фронту (спаду) любого бита режима обнулять (или приводить в исходное) выходы управления

Maxsvell
21.04.2015, 15:28
Да что первое в голову пришло то и наворотил за 5 мин. Ваша программа красивее не спорю. А как он там будет разбираться с глобальными переменными ........ Пусть учится.

Вот я и прошу помощи у вас, что бы меня "пнули" )) куда надо.Подсказки короче мне нужны......)))

Алексей Александрович
21.04.2015, 16:04
Вот я и прошу помощи у вас, что бы меня "пнули" )) куда надо.Подсказки короче мне нужны......)))
Ну алгоритм уже показали. Что еще? Программу написать? А не кажется уже слишком?

Maxsvell
21.04.2015, 16:13
Ну алгоритм уже показали. Что еще? Программу написать? А не кажется уже слишком?

Я и не прошу и не хочу что бы за меня программу написали! Я спрашивал про "локальные переменные-выходы, которые в свою очередь должны в основной программе в зависимости от режима работы должны управлять выходами ПЛК."

Алексей Александрович
21.04.2015, 16:57
Можно упростить задачу. По фронту (спаду) любого бита режима обнулять (или приводить в исходное) выходы управления
Попробуйте сначала это. Не получится тогда переделывайте программы

Maxsvell
21.04.2015, 17:10
Спасибо за совет))) Разбираюсь с глобальными и локальными переменными.Кое что уже стало проясняться.Хочу научиться писать программы сразу красиво и как положено)

Алексей Александрович
21.04.2015, 19:04
Не обольщайтесь. Я 30 лет программирую то микроконтроллеры то сейчас ПЛК. И до сих пор учусь.

Maxsvell
21.04.2015, 19:13
Попробуйте сначала это. Не получится тогда переделывайте программы

"Переделывать программы" вы имели ввиду про локальные входы-выходы?

Алексей Александрович
21.04.2015, 19:24
Можно упростить задачу. По фронту (спаду) любого бита режима обнулять (или приводить в исходное) выходы управления
Я имел в виду это. А уж потом переделывать

Maxsvell
21.04.2015, 19:35
Вот как то так получилось. Или я что то опять не то написал???17846

Maxsvell
21.04.2015, 19:41
Или правильней так? 17848

Алексей Александрович
22.04.2015, 05:42
Последний более правильный в плане выбора какая программа будет выполнятся. Только проверяйте на то что у вас не две и более 1 в выборе (как я понимаю это 4 позиционный переключатель выбора режима и он может сломаться а это уже авария) иначе у вас будут запускаться две программы в подряд и к чему это приведет.......... В плане глобальных и локальных без комментариев в вашей программе трудно разобраться. Суть моего предложения вам в том что когда переключается выбор режима то 1 появляется на другом входе плк. И тогда вырабатывается импульс который вызывает программу которая записывает в выходы управления исходное состояние (например 0)

Maxsvell
22.04.2015, 06:09
Вы все правильно поняли, это 4-х позиционный переключатель. Давайте рассуждать дальше. Если в главной программе при выборе одного режима, сделать запреты на другие 3 режима, путем простейших логических операторов. Поможет ли это?
И еще один вопрос: в последней программе "BIT_NALADKA" и "BIT_RUCHNOY" - это же обыкновенные входа? или во вкладке ресурсы с ними надо что то делать?

Алексей Александрович
22.04.2015, 06:42
Если в главной программе при выборе одного режима, сделать запреты на другие 3 режима, путем простейших логических операторов.Поможет ли это?
Так вы это и делаете. В зависимости от бита режима выполняется только одна программа остальные игнорируются


И еще один вопрос: в последней программе "BIT_NALADKA" и "BIT_RUCHNOY" - это же обыкновенные входа? или во вкладке ресурсы с ними надо что то делать?
На них приходит сигнал с переключателя режима и делать с ними ничего не надо.

Maxsvell
22.04.2015, 07:08
Теперь понятней стало)))Спасибо! Разъясните мне пожалуйста, какая разница между входами где название входа" D1" и названием "BIT_NALADKA"? В первом варианте я обозначил вход " D1", потому что такой вход прописан в плк и в соответствующей программе, а во втором варианте этот же вход переименовал в "BIT_NALADKA". Только каким образом там( во втором варианте) будет 1, если этот вход в конфигурации плк я не прописывал? входов на плк больше не осталось, все уже занято.

Алексей Александрович
22.04.2015, 07:43
Разници ни какой. Называйте как хотите. Главное что в конфигурации и программах совпадали.

Только каким образом там( во втором варианте) будет 1, если этот вход в конфигурации плк я не прописывал?
Так пропишите. Вместо D1 "BIT_NALADKA"

Maxsvell
22.04.2015, 07:49
У меня в программе "NALADKA" вход "D1" выполняет свою функцию, а если его переименовать в конфигурации плк для главной программы, то он "потеряется" в функциональном блоке.Или не потеряется?

Алексей Александрович
22.04.2015, 07:58
вход "D1" выполняет свою функцию

Или не потеряется?
Да откуда я знаю!!!!!!!?????? Я же не писал эту программу. Вам виднее. Пока.

Василий Кашуба
22.04.2015, 08:21
У меня в программе "NALADKA" вход "D1" выполняет свою функцию, а если его переименовать в конфигурации плк для главной программы, то он "потеряется" в функциональном блоке.Или не потеряется?
Вам же сказали, что в конфигураторе и в схеме имена должны совпадать.

zendo057
22.04.2015, 20:46
В вашем лесу никто наверное кроме вас не разберется.В ФБ исользуйте war_in,war_out,а в основной программе уже приклеивайте war_global,тогда в осн програме будет видно и понятно где какой вход или выход,а так полная каша.При запуске станка вы просто голову сломаете. В содесис может все быть здорово,а вот на станке ?

Maxsvell
22.04.2015, 20:46
Да откуда я знаю!!!!!!!?????? Я же не писал эту программу. Вам виднее. Пока.

Спасибо за помощь!

Алексей Александрович
23.04.2015, 05:45
Последний совет. При такой "структуре" написания программ (и это не про комментарии и в не том что кто то со стороны должен разобраться что вы написали) вы через какое то время сами не поймете логику работы программы. Это только сейчас вы думаете что все понятно и ясно. 1. Нельзя писать такие огромные логические блоки. Сами намучаетесь просматривать что откуда и куда и откуда ноги растут. 2. Если покопаться то выяснится что некоторые логические структуры выполняющие одни и те же действия у вас плодятся как тараканы.
Покопайтесь в различных примерах на овене. Посмотрите.