Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: Нужен совет!

  1. #11
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    а в чем тогда разница FB и PRG?
    PRG — самостоятельный элемент, FB — шаблон самостоятельного элемента. Соответственно PRG можно вызвать, а FB — нельзя (вызывается экземпляр, созданный по шаблону).

  2. #12

    По умолчанию

    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    как ни странно, но да, выполняется... а в чем тогда разница FB и PRG?
    У FB есть локальные переменные VAR_INPUT, VAR_OUTPUT, VAR, а у PRG только VAR.
    Последний раз редактировалось Вольд; 27.09.2014 в 12:54.

  3. #13

    По умолчанию

    Если модуль имеет тип PRG - то после выполнения будет прерван цикл ПЛК, и часть кода, размещенная после модуля не будет выполняться никогда.
    И откуда такой несусветный бред? блок PRG выполнился, и далее управление снова передаётся в PLC_PRG, к первой команде после блока. Иначе не было бы особого смысла в подпрограммах.

    У FB есть локальные переменные VAR_INPUT, VAR_OUTPUT, VAR, а у PRG только VAR.
    Ничто не мешает в PRG создать VAR_INPUT, VAR_OUTPUT, часто так делаю.
    Последний раз редактировалось Boris_K; 27.09.2014 в 19:34.

  4. #14
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    а в чем тогда разница FB и PRG?
    Вставлю свои 5 копеек в интересное обсуждение. На сколько я понимаю PRG - это глобальный элемент и может использоваться в задачах. Его не надо описывать в разделе переменных, а FB напоминает мне описание типа структуры, только с кодом (хотя можно и без него), для его использования надо создать соответствующую переменную.

  5. #15

    По умолчанию

    Вставлю свои 5 копеек в интересное обсуждение.
    А чем это оно интересное? Это азы языка, поддерживающего ООП, без них далеко не "уедешь".

  6. #16
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Просто на этом форуме многие учатся азам, а в документации не всегда таким мелочам уделяется внимание.

  7. #17
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,711

    По умолчанию

    Что , понижение IQ глобальное , или память подзафрагментировалась?!
    И не лузеры вроде-бы :
    ВОЛЬД - У PRG Легко могут быть переменные var_input and var_output.
    Функциональный блок или функция вызывается с присвоением входных переменных и выходных , при этом функциональный блок отличается от функции тем , что у него может быть выхдных переменных более 1й . Программа вызывается просто по имени.
    Но! В ST можно ВСЕ вызвать просто по имени и оно выполнится , но как ... одному процессору ведомо .
    В приложенном проекте каша какая-то , должна быть ИЕРАРХИЯ , а там ... как будто кто-то специально извратился , чтобы все запутать .
    Кстати программу по идее в ST можно вызвать даже из функционального блока и это выполнится , но .... результат выполнения программы (ЛЮБОЙ) тот , что соответствует логике процессора и не всегда соответствует желанию (хотению , думке и тд) программиста.
    -------------------------------
    функциональный блок или функция (зависит от функционала) применяются для вызова ЭКЗЕМПЛЯРА КОДА с различными присвоенными входными значениями в СКАНЕ программы . Типа TON или аналогичными .
    НО !
    Все , что написано корректно с точки зрения компилятора БУДЕТ ВЫПОЛНЕНО !!! Единственное условие выхода из Экземпляра программы или функционального блока или функции - оператор RETURN !
    --------------------------------
    Интересно сам Афтар логическую цепочку приложенной программы просекает ?
    Я особо не разгребал , но в примерах открытие-запись-закрытие выполняется в одном цикле , какого ... разбивать процесс оператоом CASE ??? И !!! делать это в экземпляре ФБ !!!
    Есть инструмент хороший TRACE с его помощью можно проследить что и когда реально происходит .
    --------------------------------
    Сегодня , или нет уже вчера День города КРАСНОДАР . 220 с каким-то лет , более чем государствам некоторым , например США.
    Последний раз редактировалось Sergey666; 28.09.2014 в 02:05.

  8. #18
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Это утверждение не соответствует действительности! Не пишите глупости.
    Такое краткое замечание вызвало такую длинную полемику
    Цитата Сообщение от Дмитрий Артюховский Посмотреть сообщение
    как ни странно, но да, выполняется... а в чем тогда разница FB и PRG?
    Хотя бы иногда нужно пользоваться справкой.
    2.png 1.png

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    ....................................
    1) Но! В ST можно ВСЕ вызвать просто по имени и оно выполнится , но как ... одному процессору ведомо .
    .................................................. ......
    2) В приложенном проекте каша какая-то , должна быть ИЕРАРХИЯ , а там ... как будто кто-то специально извратился , чтобы все запутать .
    .................................................. ......
    1) Кстати программу по идее в ST можно вызвать даже из функционального блока и это выполнится
    .................................................. .....
    2) Интересно сам Афтар логическую цепочку приложенной программы просекает ?
    .................................................. .....
    3) Я особо не разгребал , но в примерах открытие-запись-закрытие выполняется в одном цикле , какого ... разбивать процесс оператоом CASE ??? И !!! делать это в экземпляре ФБ !!!
    .................................................. ....
    1) Не только в ST
    2) Полностью согласен. А часть кода вообще лишняя.
    Например
    3.png
    3)"открытие-запись-закрытие выполняется в одном цикле" Не верное утверждение, каждое условие CASE будет выполняться в разные циклы ПЛК.
    "И !!! делать это в экземпляре ФБ !!!" нет там никаких экземпляров ФБ
    4.png
    Хотя ненужно было использовать CASE внутри одного шага программы на SFC, но по другой причине. Ведь каждое условие CASE эквивалентно отдельному шагу SFC. Можно было операции открытие-запись-закрытие файла и открытие-чтение-закрытие файла сделать отдельными шагами SFC.

    Как ни странно, но если разрешать в проекте работать только "Read_Tools_Gidropushitel" или только "Write_Tools_Gidropushitel", то операции чтения из файла и запись в файл работают корректно.
    А не работает программа по тому, что "сам Афтар логическую цепочку приложенной программы НЕ просекает". И согласно ошибке,имеющейся в логике программы, при попытке записать в файл по команде с панели, одновременно будут работать обе подпрограммы - "Write_Tools_Gidropushitel" и "Read_Tools_Gidropushitel".

    ЗЫ. Не смотря на то, что каждое условие CASE будет выполняться в разные циклы ПЛК, в коде есть ошибка. В результате которой закрытие файла будет происходить сразу после записи в файл или чтения из файла, в одном и том же цикле ПЛК (в одном и том же условии CASE)
    5.png
    Последний раз редактировалось petera; 28.09.2014 в 13:06.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #19
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от BSA Посмотреть сообщение
    Вложение 14506 сам код второго бубна нет с первым допрыгался
    таргет v2.10 плк 110-60 все перекапал собаку не нашел руки опускаются ума не преложу
    Бубны в сторону.
    И так, что нужно изменить в программе, что бы файлы и писались и читались
    1. В коде HMI(PRG) нужно сделать такие изменения
    1.png
    Теперь в принципе все должно работать, по крайней мере в PLCWinNT сразу начинает работать(у меня нет возможности проверить в ПЛК110).
    Но лучше продолжить изменения в проекте.
    2. С учетом этого замечания
    Не смотря на то, что каждое условие CASE будет выполняться в разные циклы ПЛК, в коде есть ошибка. В результате которой закрытие файла будет происходить сразу после записи в файл или чтения из файла, в одном и том же цикле ПЛК (в одном и том же условии CASE)
    В код действия для Step1 программы Read_Tools_Gidropushitel нужно внести изменения
    3.png

    А в код действия для Step1 программы Write_Tools_Gidropushitel нужно внести такие изменения
    4.png

    3. У автора почему-то не предусмотрено чтение сохраненной информации из файла после старта ПЛК . Тогда к чему все эти "нелепые телодвижения" с сохранением настроек в файл?
    Исправить этот недостаток очень просто. Нужно добавить начальное значение переменной "State_Read_Tools_Gidropushitel"
    2.png
    Это разрешит однократное чтение настроек из файла и передачу сохраненных значение в панель при старте ПЛК.

    В SFC программах "Read_Tools_Gidropushitel" и "Write_Tools_Gidropushitel" есть много несуразностей, которые требуют отдельного обсуждения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #20

    По умолчанию

    Не сочтите за невежество попробую оправдаться по поводу кода
    - Объявленные переменные но отсутствующие в коде - просто части кода не имеющие отношения к проблеме были удалены чтобы не загружать лишним видимо обрывки остались конкретно переменная Count
    - Cоunt_prg=100 потому что чтобы исключить заход в шаг Step2_Re.... когда начинались танцы с бубном в этом шаге читались настройки из файла при Cоunt_prg=1 при старте
    Хотя ненужно было использовать CASE внутри одного шага программы на SFC, но по другой причине. Ведь каждое условие CASE эквивалентно отдельному шагу SFC. Можно было операции открытие-запись-закрытие файла и открытие-чтение-закрытие файла сделать отдельными шагами SFC.
    -Просто хотел сделать меньшее количество шагов
    По поводу чтения- записи литература, говорит автора не вспомню: чтение, открыл- прочитал -закрыл лучше разделять на несколько циклов
    запись: открыл-записал-закрыл то же несколько циклов поэтому СASE
    "Read_Tools_Gidropushitel" "Write_Tools_Gidropushitel" вызываются вместе но одновременно не находятся в шагах записи и чтения вернее наверное не должны находится.
    Не смотря на то, что каждое условие CASE будет выполняться в разные циклы ПЛК, в коде есть ошибка. В результате которой закрытие файла будет происходить сразу после записи в файл или чтения из файла, в одном и том же цикле ПЛК (в одном и том же условии CASE)
    Вот где собака зарыта.
    Видимо когда копировал часть кода с другой программы для плк 100 что то за парил - спешка нужно при ловле блох.
    Да еще и опыта маловато пробелы в мат части начинаешь просто иной раз загоняться и начинают терзать сомнения
    а сомнения от не знания поэтому Оооогромное человеческое СПАСИБО!! всем тем кто подсказывает нам с какой стороны легче грызть гранит науки!!
    Как доберусь до компа сразу возьмусь за исправления с учетом замечаний еще раз большое спасибо всем откликнувшимся
    Последний раз редактировалось BSA; 06.10.2014 в 22:42.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Нужен совет в ST.
    от _Александр_ в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 18.08.2011, 16:31
  2. Нужен совет
    от salutt в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 17.08.2011, 23:05
  3. нужен совет
    от тимик в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 11.10.2010, 08:42
  4. нужен совет!
    от japanN в разделе Подбор Оборудования
    Ответов: 6
    Последнее сообщение: 28.11.2009, 09:11
  5. Нужен совет.
    от Слава К в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 27.03.2009, 19:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •