ЖУРНАЛ «СТА» №4/2007

Тогда потребный период опроса, а значит, и период ис- полнения прикладной программы, составит: 0,82/0,70 = 1,18 ≈ 2 мс (округляем до «верхнего» целого, потому что оценка потребного времени менее 2 мс). Создадим проект в среде CoDeSys для платформы Fastwel I/O System и добавим в конфигурацию контроллера CPM703 описания модулей с соблюдением указанного выше порядка: OM751, DIM718, DIM716, DIM716, AIM726, AIM726, AIM726, AIM726, AIM728, AIM728, AIM728, AIM728. Установим значение параметра CPM703 ModbusTCP Coupler–SampleRate равным 2 мс. В конфигурации модуля DIM718 для параметра Mode вы- берем значение Use PWM, в результате чего после загрузки конфигурации в контроллер и перезапуска 3й и 4й каналы модуля будут переведены в режим формирования ШИМпо- следовательностей с характеристиками, определяемыми длительностями полуволн, которые задаются прикладной программой на его логических выходах firstHalfDutyState0: secondHalfDutyState0 и firstHalfDutyState1: secondHalfDutyState1. Программа для оценки времени реакции среды исполне- ния на изменение сигнала на входном канале модуля дис- кретного ввода будет выглядеть так: PROGRAM PLC_PRG VAR (* Длительность полуволн ШИМпоследовательности на третьем канале DIM718 в единицах, кратных 50 мкс *) pwmTime : WORD; (* Признак обнаружения перепада на входе второго модуля DIM716 *) toggleSensed : BOOL := FALSE; END_VAR VAR_INPUT (* Первый бит содержит логическое состояние на первом дискретном входе модуля DIM716 *) din_byte AT%IB57 : BYTE; END_VAR VAR_OUTPUT (* Ссылка на 7й, начиная с 1, выходной канал DIM718 *) dout1 AT%QX2.14 : BOOL := FALSE; (* Ссылка на логический канал формирования первой полуволны на 3м, начиная с 1, выходном канале DIM718 *) dout0_pwm_first AT %QW3 : WORD; (* Ссылка на логический канал формирования второй полуволны на 3м, начиная с 1, выходном канале DIM718 *) dout0_pwm_second AT %QW4 : WORD; END_VAR (* Программа начинается здесь *) (* Задаваемая длительность полуволны испытательного сигнала: T = 200 × 0,05 = 10 мс *) pwmTime := 200; (* Записываем значения длительности первой и второй полуволн *) dout0_pwm_first := pwmTime; dout0_pwm_second := pwmTime; (* Определяем факт перепада и текущее логическое состояние на 1м входе второго модуля DIM716 *) toggleSensed := ((din_byte AND 1) <> 0); (* Выводим текущее логическое состояние в 7й, начиная с 1, выходной канал модуля DIM718 *) dout1 := toggleSensed; END_PROGRAM Соберём описанную конфигурацию контроллера. Подклю- чим выход блока питания с выходным напряжением 24 В к клеммам питания контроллера, а также к контактам с марки- ровкой «1» (+24 В) и «2» (Общий) модуля OM751. Далее со- единим контакт с маркировкой «2» модуля DIM718 с контак- том «1» второго модуля DIM716 и первым каналом осцилло- скопа. Второй канал осциллоскопа подключим к контакту с маркировкой «4» модуля DIM718. Включим блок питания и загрузим предварительно скомпилированную программу в контроллер, после чего выполним команду OnlineLogout в среде разработки CoDeSys, чтобы взаимодействие между сре- дой разработки и контроллером не влияло на измерение. На индикаторе осциллоскопа появится осциллограмма, аналогичная представленной на рис. 18. При этом запазды- вание фронтов сигнала, формируемого программой в ответ на перепады испытательного сигнала, относительно фрон- тов испытательного сигнала будет периодически изменять- ся от 4 с небольшим до 5,5 мс. Проанализируем полученный результат. Для этого зафик- сируем осциллоскопом циклограммы исполнения приклад- ной программы и обмена с модулями по внутренней шине. Способ подключения щупов осциллоскопа к контроллеру иллюстрирует рис. 19. Общий провод одного из щупов мо- жет быть подключён ко второму или третьему сверху кон- такту под пластмассовой крышкой на передней панели кон- троллера. Самый верхний контакт под крышкой позволяет увидеть импульсы, передние фронты которых соответству- ют началу ввода данных в программу, а задние – окончание вывода. Высокий уровень между фронтами удерживается в течение времени исполнения программы. Совмещённые циклограммы с дополнительными пояснениями представ- лены на рис. 20. На рис. 20 рассмотрена наихудшая ситуация, когда изме- нение входного испытательного сигнала происходит в мо- мент окончания получения модулями группового запроса. Как только модуль получил корректный пакет группового запроса, он меняет местами буфер, в котором находятся ра- нее зафиксированные входные данные, с коммуникацион- ным буфером и приступает к формированию своей части це- почечного ответа. Если перепад входного сигнала про- изошёл в момент обслуживания модулем очередного группо- вого запроса, то фактически данный перепад попадёт в ком- муникационный буфер и будет передан мастеру FBUS толь- ко при обслуживании следующего группового запроса, что и обозначено на рисунке. А это означает, что программа «уви- дит» перепад испытательного сигнала во время выполнения второго цикла с момента его реального происхождения. Да- лее, перед началом следующего цикла программы произой- дет очередной обмен с модулями вводавывода, и выходной сигнал, сформированный программой в ответ на обнаруже- ние перепада испытательного сигнала, поступит модулю дискретного вывода, который после небольшой задержки актуализирует его на соответствующем дискретного выходе. Таким образом, параметр «Время реакции прикладной программы на изменение состояния на канале дискретного ввода», определённый в документации, значение которого в предельном случае равно двум периодам исполнения про- граммы, представляет максимальный интервал времени, по истечении которого программа обнаружит фронт сигнала на дискретном входе модуля. Если под временем реакции сис- темы подразумевать интервал времени, выделенный на рис. 20 пунктирными линиями, то его предельное значение составляет два периода исполнения программы плюс время, которое понадобится потратить на один обмен со всеми мо- дулями, подключёнными к внутренней шине контроллера, плюс время задержки выдачи, специфичное для каждого модуля. АППА РАТ НЫ Е С Р Е Д С Т В А / П Р ОМЫШЛ Е ННЫ Е КОН Т Р ОЛЛ Е Р Ы 57 СТА 4/2007 www.cta.ru

RkJQdWJsaXNoZXIy MTQ4NjUy