Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Проблема с счетчиком

  1. #1

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

    Здравствуйте!
    Уважаемые программисты, подскажите, пожалуйста, почему происходит такой казус:
    Во входном действии программы, на SFC поставил инкремент счетчика «nCall»,
    В вызываемой программе – счетчик количества проходов «Counter».
    При работе оказывается, что счетчик вызовов за один проход добавляет по 1 дважды.
    Таким образом nCall = 2* Counter, хотя, по логике они должны равняться.
    Вопрос: как заставить счетчик работать как положено – за один проход увеличиваться на 1.

    код программы:
    Вложения Вложения

  2. #2

    По умолчанию

    Цитата Сообщение от kuguar Посмотреть сообщение
    Таким образом nCall = 2* Counter, хотя, по логике они должны равняться.
    Здравствуйте.
    Равняться у Вас nCall=Counter не смогут, так как что бы пройти шаг "Wait" (в POU_Sample) как минимум необходимо два раза вызвать программу "POU_Sample". Первый раз программа решит, что можно идти дальше, а второй раз пойдет дальше и быстрее ни как в SFC :-) А в это время переменная POU_Sample.Ok:=True, а также Start:=True!!! Таким образом программа PLC_PRG успевает пару раз про суммировать переменную "nCall". К тому же во время переходов подпрограмма POU_Sample не вызывается.
    P. S. Так писать программы нельзя, надо что-то менять радикально.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  3. #3

    По умолчанию

    Спасибо за ответ!
    Я исходил из того, что входное действие должно выполняться однократно при вхождении в блок (так же как и выходное), а вот в блоке оно зациклено до получения TRUE на условии выхода.
    Но из Ваших слов я понял, что мягко говоря заблуждался,
    а значит подобный вариант многократного вызова исполняемого блока с изменяемыми, в зависимости от номера шага, входными параметрами таким образом организовать неудастся.

    Как же тогда можно организовать "адекватный" счетчик, который при каждом проходе увеличивался на 1.

    P.S. sample.pro просто илюстрация проблемы, а проект требует циклического вызова нескольких блоков (количество вызовов и входные данные варируются).

  4. #4

    По умолчанию

    Обе программы постоянно вызывайте из третей :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  5. #5

    По умолчанию

    Спасибо!
    Не совсем понятно, но поробую реализовать.

  6. #6

    По умолчанию

    На самом деле по хорошему в принципе надо всё переделывать, так получается слишком не однозначно.
    P. S. Посмотрите CASE и IF..Then...Else и конечно не забываем про SFC
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  7. #7

    По умолчанию

    Программа управляет включением / выключением ТЭНов.
    Какие ТЭНы включены и на какой период описанно в массиве структур.
    Поэтому было принято решение перебирать записи массива и в соответствии с значениями управлять ключами.
    Всплыла проблема с счетчиком.
    Как ее обойти через выбор или условные переходы пока не представляю.
    впрочем, как и заставить счетчик работать как положенно.
    Будем эксперементтровать.

  8. #8

    По умолчанию

    Так надо создать еще и "массив выходов" вкл/выкл тэнов, а далее For .... To ... , а из "массива выходов" постоянно значения переносить в ПЛК-конфигурацию (на физические выхода). Вроде подводных валунов нет :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  9. #9

    По умолчанию

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

  10. #10

    По умолчанию Мое виденье

    Взгляни, что я накидал может чем поможет :-) и а5-таки не могу найти где загвозка, может прогу на форум скинуть, тогда народ поможет :-)
    Вложения Вложения
    Последний раз редактировалось Gans; 24.02.2011 в 19:58.
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

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

Ваши права

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