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

Тема: Обработка нештатных ситуаций

  1. #1
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    Question Обработка нештатных ситуаций

    Прошу совета в выборе оптимального алгоритма с учетом постепенного увеличения контролируемых параметров.

    Контроллер (ПЛК110) производит мониторинг ряда критических параметров:
    - давление в системе отопления
    - температура в контуре отопления
    - контроль энергоснабжения
    - и ряд других параметров (со временем этих параметров может стать много).


    Требуется:
    При наступлении любого из вышеперечисленных событий (выход за предельные нормы) необходимо отправить СМС с кратким описанием события. Если в течении определенного времени состояние контролируемого параметра не пришло в норму то следует повторить СМС. Для каждого параметра устанавливается индивидуальный период времени между повторными СМСками.

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

    По умолчанию

    А вы с "Create boot project" уже разобрались???

    Эта штука по сложности и по объему будет значительно превосходить основной алгоритм . И это нормально и правильно.

    Надо написать отдельную программу(Alm) ,которая будет следить за параметрами и формировать тексты СМС и формировать периоды выдачи сигнала отправки сформированных СМС . И отдельная ПРГ , управляющая модемом - отправка , получение и обработка СМС.

  3. #3
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Думаю тут нужно создавать массив из структур в которых будут указатели на контролируемые параметры, предельные значения и текст СМС сообщений.
    По массиву бежать в цикле.

    Можно ли через указатель ссылаться на локальную переменную в ином ФБ?

    Если из ФБ я вызову функцию несколько раз (в цикле) с разными параметрами. В функции будет использоваться таймер TON. Как будет работать данная схема? Будет ли отработка TON для каждого вызова своя?

    зы. Я все не могу переключится на особенности программирования ПЛК, вот и возникают такие лузерские вопросы
    Последний раз редактировалось Smith2007; 22.09.2013 в 21:33.

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

    По умолчанию

    Цитата Сообщение от Smith2007 Посмотреть сообщение
    Думаю тут нужно создавать массив из структур в которых будут указатели на контролируемые параметры, предельные значения и текст СМС сообщений.
    По массиву бежать в цикле.

    Можно ли через указатель ссылаться на локальную переменную в ином ФБ?

    зы. Я все не могу переключится на особенности программирования ПЛК, вот и возникают такие лузерские вопросы
    А зачем работать через указатель???
    Надо переключится на особенности программирования !? Вы на чем работали ??? Что-ли при написании программы (в чем угодно) надо лезть "внутрь" DLL???
    У ФБ есть входные , выходные и внутренние переменные ... , короче книги+описаловка + барабан на пузо иначе никак.
    Отображение строки (в панели элемент ASCII индикатор) при наличии аварий - показывает заданное время название аварии по очереди , при отсутствии не показывает ничего .

    (*================================================ =========*)
    Flag_alm:=Alm1 or Alm2 or Alm3 .....or Alm65535;

    if Flag_alm then
    if Step_led_alm=0 then Step_led_alm:=1;end_if
    end_if
    Case Step_led_alm of
    0: Str_alm:='None Alarms';
    Show_led:=false;
    1: if Alm1 then
    Tmr_show_alm(In:=true,Pt:=word_to_time (Time_show_alm*100);
    Str_alm:='Alarm#1';
    Show_led:=true;
    else Step_led_alm:=Step_led_alm+1;
    end_if
    if Tmr_show_alm.Q then Tmr_show_alm(In:=false);Step_led_alm:=Step_led_alm +1;end_if
    2: if Alm2 then
    Tmr_show_alm(In:=true,Pt:=word_to_time (Time_show_alm*100);
    Str_alm:='Alarm#2';
    Show_led:=true;
    else Step_led_alm:=Step_led_alm+1;
    end_if
    if Tmr_show_alm.Q then Tmr_show_alm(In:=false);Step_led_alm:=Step_led_alm +1;end_if
    .
    .
    .
    65535:if Alm65535 then
    Tmr_show_alm(In:=true,Pt:=word_to_time (Time_show_alm*100);
    Str_alm:='Alarm#65535';
    Show_led:=true;
    else Step_led_alm:=0;
    end_if
    if Tmr_show_alm.Q then Tmr_show_alm(In:=false);Step_led_alm:=0;end_if

    End_case

    (*================================================ =====================*)

    Можно и более изысканно ....но нафига козе баян.
    Последний раз редактировалось Sergey666; 22.09.2013 в 21:50.

  5. #5
    Пользователь
    Регистрация
    09.08.2013
    Адрес
    Башкортостан
    Сообщений
    234

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    А зачем работать через указатель???
    Надо переключится на особенности программирования !? Вы на чем работали ??? Что-ли при написании программы (в чем угодно) надо лезть "внутрь" DLL???
    У ФБ есть входные , выходные и внутренние переменные ... , короче книги+описаловка + барабан на пузо иначе никак.
    Отображение строки (в панели элемент ASCII индикатор) при наличии аварий - показывает заданное время название аварии по очереди , при отсутствии не показывает ничего .

    (*================================================ =========*)
    Flag_alm:=Alm1 or Alm2 or Alm3 .....or Alm65535;

    if Flag_alm then
    Моя работа далека от программирования. Это скорее хобби от случая к случаю.
    Я повторю вопросы:
    1. Можно ли через указатель ссылаться на локальную переменную в ином ФБ?
    2. Если из ФБ я вызову функцию несколько раз (в цикле) с разными параметрами. В функции будет использоваться таймер TON. Как будет работать данная схема? Будет ли отработка TON для каждого вызова своя?
    3. Можно ли узнать тип данных по ссылке на указатель?

  6. #6
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    1) пациент скорее мертв,чем жив
    2) ни в коем случае
    3) знает только написавший код

  7. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    1.
    Тут в контрах с Sergey666. Cам также работаю с указателями. О-о-о-чень удобно для написания универсального кода для библиотек, куда и не требуется залезать.
    ФБ - это record с пристегнутым кодом (типа class). Для чтения доступны все поля. Для записи - только IN. Но через указатель доступно все. Классические локальные переменные - в КДС только в FUNCTION.
    2.
    Если TON - локальный, конечно же нет. Но TON в фунцию можно передать как VAR_IN_OUT (вбить руками), а он, в свою очередь, может быть в составе той структуры/ФБ.
    3.
    В КДС нет.Как и везде, где информация о ide типа не содержится внутри структуры. Но инвариант можно сделать самостоятельно. Также нет нормального callback или параметра-функции (хотя кое-что обойти можно)
    Последний раз редактировалось Валенок; 23.09.2013 в 09:24.

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,225

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    1.
    Тут в контрах с Sergey666. Cам также работаю с указателями. О-о-о-чень удобно для написания универсального кода для библиотек, куда и не требуется залезать.
    ФБ - это record с пристегнутым кодом (типа class). Для чтения доступны все поля. Для записи - только IN. Но через указатель доступно все. Классические локальные переменные - в КДС только в FUNCTION.
    2.
    Если TON - локальный, конечно же нет. Но TON в фунцию можно передать как VAR_IN_OUT (вбить руками), а он, в свою очередь, может быть в составе той структуры/ФБ.
    3.
    В КДС нет.Как и везде, где информация о ide типа не содержится внутри структуры. Но инвариант можно сделать самостоятельно. Также нет нормального callback или параметра-функции (хотя кое-что обойти можно)
    1) то что Вы описали, реализовано в виде глобальных переменных и Ваш вариант это как масло маслянное
    2) тут надо внимательно вникнуть, в цикле несколько раз будут работать таймеры, злая собака быстрее покусает, чем можно будет добиться какого то эфффекта от такой реализации

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    1.Почему в глобальных ? В любом месте (кроме функций). Включая кучу (не освобожденную, конечно же).
    2.Именно так я работаю с портом и архиватором. Время цикла - 1-3мс (кроме моментов сбрасывания в файл, до 10мс). Не зачто кусать. Наверно тут недопонимание. Вызывается некоторая функция которая что-то делает с таймером одного фб и выходит. После внешний процесс вызывает эту же функцию с данными другого фб и т.д. Здесь не идет речи о зацикливании.

    Только это делаю не функцией, а action'ом самого фб, но это абсолютно не принципиально, т.к. код фб - это и есть вызов фунции/процедуры с неявной передачей указателя на структуру

    Именно такой подход позволяет кодить задачу не затачивая ее под например архивацию, а при необходимости, запустить параллельно (как бы) архиватор который работает абсолютно независимо.
    Последний раз редактировалось Валенок; 23.09.2013 в 10:01.

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

    По умолчанию

    Валенок! Тут хлопцы не знают как проект загрузочный делать , а туда же "структуры" , "указатели" , вы уверены что товарищи само понятие "ФБ" трактуют адекватно?
    Летчиков сначала на кукурузнике летать учат , а вы сразу на истребитель 5 поколения подсадить хотите.

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

Похожие темы

  1. Обработка исключений
    от const3 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 26.06.2012, 06:43
  2. Ответов: 1
    Последнее сообщение: 19.05.2012, 11:21
  3. плк110+мв110 обработка данных
    от woffka в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 19.02.2010, 16:45

Ваши права

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