Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25

Тема: Как программировать вложенные SFC

  1. #1

    По умолчанию Как программировать вложенные SFC

    Как программировать вложенные SFC программы?
    Т.е. в основной SFC программе шаги состоят из своих программ на SFC.
    У меня либо не рабоет, либо флаги размножаются.
    Есть к кого нибудь пример?


    Вроде разобрался сам.
    Вопрос разработчикам:
    У меня получился SFC стандартный sfc шаг с входным и выходным действием (E и Х).
    Компилятор этого не заметил, программа работает некорректно - это плохо.
    Последний раз редактировалось Антон; 30.01.2008 в 08:38.

  2. #2

    По умолчанию

    В чем проблема - в шаге могут быть и три действия одновременно (выход, выход, выполнение)?

  3. #3

    По умолчанию Пример вложенного SFC

    При запуске проекта в контроллере, контроллер начинает один раз в минуту выключать реле. Я так понимаю проблема с вложенными SFC в блоке INIT.

    И ДАЖЕ В РЕЖИМЕ СТОП!!!!!


    После запуска один маркер остается в самом блоке INIT (при этом шаги внутри INIT не выполняются) , а другой маркер идет дальше.
    Если после шага INIT поставить переход TRUE, то один маркер остается внутри INIT на шаге pink1, а другой продолжает свое движение.
    Можно писать программы с вложенными SFC? КАК?
    Если нет то как переделать проект, т.к. убрать модуль INIT и вставить новый среда не позволяет.
    Теперь весь проект переписывать, что-бы небыло вложений?

    Проект прилагается.
    Вложения Вложения
    Последний раз редактировалось Антон; 31.01.2008 в 09:26.

  4. #4

    По умолчанию

    Цитата Сообщение от Антон Посмотреть сообщение
    При запуске проекта в контроллере, контроллер начинает один раз в минуту выключать реле. Я так понимаю проблема с вложенными SFC в блоке INIT.

    И ДАЖЕ В РЕЖИМЕ СТОП!!!!!


    После запуска один маркер остается в самом блоке INIT (при этом шаги внутри INIT не выполняются) , а другой маркер идет дальше.
    Если после шага INIT поставить переход TRUE, то один маркер остается внутри INIT на шаге pink1, а другой продолжает свое движение.
    Можно писать программы с вложенными SFC? КАК?
    Если нет то как переделать проект, т.к. убрать модуль INIT и вставить новый среда не позволяет.
    Теперь весь проект переписывать, что-бы небыло вложений?

    Проект прилагается.
    Настойчиво рекомендую убрать из Init все. Он должен быть пустой. Для очистки инит используйте контекстное меню - Clear Action Transition. Вложенные SFC писать можно, но нужно понимать как они работают. Иначе говоря - SFC POU вызывает action в моменты получения маркера на состояние. Соотвественно вход- 1 раз, выход- 1 раз и Выполнение - пока нет выхода в след состояние. Если есть выход, то вложенная SFC перестает выполняться, но ее выполнение начнется с того же состояния в котором она находилась. Для сброса SFC POU используйте SFCInit - входную переменную (или SFCReset). Подробно см справку по SFC

    Н_е и_с_п_о_л_ь_з_у_й_т_е стандартные SFC action и Codesys action в одном проекте.

    Насчет щелканья реле - где щелкает - на МВУ или на ПЛК??? Если на МВУ посмотрите что последний раз было записано ШИМ.

  5. #5

    По умолчанию

    Прочитал и мне чуть плохо не стало.
    Разработчикам нужно сделать документ "Отличия работы в CoDeSys v.2.3.8.1 от того что написано в документе "Руководство пользователя
    по программированию ПЛК в CoDeSys 2.3" в следующем виде:
    Стр. документа, абзац такой-то, читать так-то.

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Настойчиво рекомендую убрать из Init все. Он должен быть пустой.
    Сделаю, хотя этого нет в руководстве.
    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Вложенные SFC писать можно, но нужно понимать как они работают. Иначе говоря - SFC POU вызывает action в моменты получения маркера на состояние. Соотвественно вход- 1 раз, выход- 1 раз и Выполнение - пока нет выхода в след состояние. Если есть выход, то вложенная SFC перестает выполняться, но ее выполнение начнется с того же состояния в котором она находилась.
    Как сделать чтобы вложенная SFC выполнялась до конца, а затем шаг (в котором эта SFC записана) передавал маркер дальше?
    Я уже по разному комбинировал, не получается.
    В комплекте с CoDeSys нет ни одного примера с вложенными SFC.
    Пример плз.


    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Н_е и_с_п_о_л_ь_з_у_й_т_е стандартные SFC action и Codesys action в одном проекте.
    Codesys action это вы имеете ввиду упрощенный SFC шаг?
    А почему?
    Ведь шаг INIT - это упрощенный шаг, а если дальше добавить стандартный, то уже получится смесь разных шагов.
    Опять же в документации написано что можно использовать.
    Кстати. Если в стандартный шаг добавить входное и выходное действие (E и Х) то какой шаг получится?

    Тогда лучше полностью переходить на стандартные шаги и действия на SFC?
    Если действие написано на SFC, то после своего выполнения маркер оно не куда не передает? Чем его нужно заканчивать?

    Цитата Сообщение от Малышев Олег Посмотреть сообщение
    Насчет щелканья реле - где щелкает - на МВУ или на ПЛК??? Если на МВУ посмотрите что последний раз было записано ШИМ.
    В ПЛК реле первого канала.
    Запусьтите проект ради интереса. МВУ и МВА можно не подключать, панель тоже по идее не должна влиять.
    Это ошибки компилятора ввиду вышеприведенных ограничений?
    Последний раз редактировалось Антон; 31.01.2008 в 11:28.

  6. #6

    По умолчанию

    Цитата Сообщение от Антон Посмотреть сообщение
    Прочитал и мне чуть плохо не стало.
    Разработчикам нужно сделать документ "Отличия работы в CoDeSys v.2.3.8.1 от того что написано в документе "Руководство пользователя
    по программированию ПЛК в CoDeSys 2.3" в следующем виде:
    Стр. документа, абзац такой-то, читать так-то.
    Руководства порой отличаются от жизни... Понятно, что ядро CoDeSys в ПЛК мы не меняли...
    [QUOTE=Антон;6945]

    Сделаю, хотя этого нет в руководстве.

    Как сделать чтобы вложенная SFC выполнялась до конца, а затем шаг (в котором эта SFC записана) передавал маркер дальше?
    Цитата Сообщение от Антон Посмотреть сообщение

    Я уже по разному комбинировал, не получается.
    В комплекте с CoDeSys нет ни одного примера с вложенными SFC.
    Пример плз.
    Пример приложен.

    Цитата Сообщение от Антон Посмотреть сообщение
    Codesys action это вы имеете ввиду упрощенный SFC шаг?
    А почему?
    Ведь шаг INIT - это упрощенный шаг, а если дальше добавить стандартный, то уже получится смесь разных шагов.
    Извините - не так выразился - не используйте IEC steps одновременно с упрощенными.

    Шаги и действия - это разные вещи.
    Цитата Сообщение от Антон Посмотреть сообщение

    Опять же в документации написано что можно использовать.
    Кстати. Если в стандартный шаг добавить входное и выходное действие (E и Х) то какой шаг получится?

    Тогда лучше полностью переходить на стандартные шаги и действия на SFC?
    Если действие написано на SFC, то после своего выполнения маркер оно не куда не передает? Чем его нужно заканчивать?


    В ПЛК реле первого канала.
    Запусьтите проект ради интереса. МВУ и МВА можно не подключать, панель тоже по идее не должна влиять.
    Это ошибки компилятора ввиду вышеприведенных ограничений?
    PLC Browser ->PLCInfo
    Вложения Вложения
    • Тип файла: rar tsе.rar (2.7 Кб, Просмотров: 22)

  7. #7

    По умолчанию Щелкает реле

    Вот пример программы.
    При работе выкл реле первого канала с периодичностью 5 секунд.
    Что это за мистическое время?
    А оказывается это период архивации.
    При удалении файла реле перестает щелкать.
    Видимо возникает переполнение.


    P.S. Архиватор почему-то работает в режиме полного стирания-записи файла, а не в режиме сдвига.

    Быстро дорабатываете модуль архивации иначе меня уволят и я буду проситься к вам на работу тестировщиком
    Вложения Вложения
    • Тип файла: rar test3.rar (36.3 Кб, Просмотров: 20)
    Последний раз редактировалось Антон; 31.01.2008 в 14:11.

  8. #8

    По умолчанию

    За пример спасибо. Посмотрю.

    PLC Browser ->PLCInfo[/QUOTE]


    PLCInfo
    PLC model MODEL PLC 150
    Binary VERSION 2.02.8
    Need Target version 2.02
    Compiled: 12:56:39 Nov 23 2007
    MAC 67:77:01:03:0C:47
    IP 172.16.2.249
    GATE 10.0.6.1
    MASK 255.255.255.0
    Licence limited to 360 bytes
    Current DAC
    PIC version is 09
    Последний раз редактировалось Антон; 31.01.2008 в 14:19.

  9. #9

    По умолчанию

    Уважаемый Антон!
    Посмотрел Ваши проекты...
    У вас 3 проблемы:
    1. Программа внутри цикла ПЛК выполняется 4 мс при выставленном цикле ПЛК в 1 мс. В результате на внутренние нужды ПЛК остаётся чрезвычайно мало времени и происходит подтормаживание при всех операция. Необходимо оптимизировать Ваше приложение и разбить работу на более маленькие части с использованием Task Manager.
    2. В проекте 3 архиватора, запись в каждом осуществляется в текстовом режиме, причем размер файлов во всех 3-х выставлен в 32 тысячи записей (а каждая запись - не менее 30 байт примерно). Т.о. суммарный размер файлов архиватора ~3 МБайт + размер проекта ПЛК, что в сумме превосходит весь размер диска.
    3. Для работы в режиме архиватора со сдвигом, для сдвига модуль архиватора требует размер свободного ОЗУ = 1/2 размера сдвигаемого файла, т.е. 512 кБайт - столько в ПЛК не осталось, в результате архиватор переходит в запасной режим и работает стирая старый файл.
    К тому-же, если модулю архивации придётся записать 512 кБайт во Flash, то это вызовет задержку, т.к. размер очереди кэша на запись составляет чуть более 30 кБайт, а при её переполнении запись начинает производится непосредственно во Flash, а не кэшируется и не производится в фоновом режиме.

    Рекомендации:
    1. Прооптимизировать программу.
    2. Использовать Task Manager (Welcome на наш семинар)
    3. Уменьшить размер файлов в архиваторе.

  10. #10

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Уважаемый Антон!
    Посмотрел Ваши проекты...
    У вас 3 проблемы:
    1. Программа внутри цикла ПЛК выполняется 4 мс при выставленном цикле ПЛК в 1 мс. В результате на внутренние нужды ПЛК остаётся чрезвычайно мало времени и происходит подтормаживание при всех операция. Необходимо оптимизировать Ваше приложение и разбить работу на более маленькие части с использованием Task Manager.
    Раньше у меня было время цикла 40 мс (связано с джитером аналогового выхода) и были те-же проблемы (зависания обмена с МВА).
    Мне надоели тормоза при отладке и я задал 1 мс.

    А если задать 0 мс?
    Сколько нужно задать чтобы не было никаких проблем?

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    2. В проекте 3 архиватора, запись в каждом осуществляется в текстовом режиме, причем размер файлов во всех 3-х выставлен в 32 тысячи записей (а каждая запись - не менее 30 байт примерно). Т.о. суммарный размер файлов архиватора ~3 МБайт + размер проекта ПЛК, что в сумме превосходит весь размер диска.
    Проблемы начинаются при размерах файлов около 200 кб.
    Я пробовал делать в архиве по времени 100 записей, проблема не исчезала (зависания обмена с МВА).
    Более того: через несколько перезаписей архива в него начали писаться одни нули. СОВЕТУЮ проверить этот факт.
    При зависании обмена с МВА я стер архивный файл. И через примерно одну минуту связь с МВА восстановилась.

    А в приведенном проекте файл тоже был примерно 200 кб, когда начало щелкать реле. После стирания файла реле перестало щелкать.

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    3. Для работы в режиме архиватора со сдвигом, для сдвига модуль архиватора требует размер свободного ОЗУ = 1/2 размера сдвигаемого файла, т.е. 512 кБайт - столько в ПЛК не осталось, в результате архиватор переходит в запасной режим и работает стирая старый файл.
    К тому-же, если модулю архивации придётся записать 512 кБайт во Flash, то это вызовет задержку, т.к. размер очереди кэша на запись составляет чуть более 30 кБайт, а при её переполнении запись начинает производится непосредственно во Flash, а не кэшируется и не производится в фоновом режиме.
    Очень интересно. В паспорте на ПЛК написано что ОЗУ составляет 8 Мб.
    Хотите сказать что проект в 80кб использует более 7 Мб ОЗУ ?
    Как это можно посмотреть?
    И опять таки даже при задании 32000 записей при глюках файлы состовляли не более 300 кб каждый. Самый длинный был 4600 строк.

    Рекомендации:
    1. Прооптимизировать программу.

    Зачем? И так проблем хватает. Мне и 100 мс вполне достаточно, но хочется быстрой отладки/загрузки.

    2. Использовать Task Manager (Welcome на наш семинар)

    Лучше уж вы к нам (Пока нет возможности)

    3. Уменьшить размер файлов в архиваторе.

    Куда уж меньше. (см. выше)

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

Ваши права

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