Fudz в разделе примеров программ ищите пример нестандартного протокола, там будет все описано
Fudz в разделе примеров программ ищите пример нестандартного протокола, там будет все описано
Отвечу, как неопытный специалист, с оговоркой что все сказанное- IMHO, основанное на прочитанном в документации и на собственном понимании того, как что происходит. то есть могу быть неправ, если так - буду рад, если меня поправят.
Итак, если не применять специальных средств, то разницы быстрых и не быстрых входов вы не почувствуете. Ибо, в своей пограмме, которая выполняется циклично, вы имеете дело не с физическими входами и выходами, а с их отображением в памяти. В цикле контроллера кроме вашей программы выполняется еще кое какая малозаметная но важная работа - перед выполнением программы читается и отображается в памяти состояние входов, после исполнения программы - отбражение выходов передается на физические выходы. Также еще происходит обмен с внешними устройствами по разным интерфейсам.
Так вот, если в момент исполнения вашей программы (а этот процесс занимает какое-то конкретное время) проскочил короткий импульс по входу (появился и исчез), то он скорее всего останется незаметным для ваших программных счетчиков и таймеров.
Но не все так плохо, потому что о нас позаботились. В конфигурации контролеера можно применить спецсредства - а именно заменить режим работы быстрых входов на: - либо счетчик - либо энкодер - либо на прямое управление по прерыванию высокочастотного таймера.
Если выбираете счетчик, то соответственно, в своей программе читаете его значение, которое за нас уже сосчитали в фоновом режиме, не пропуская короткие импульсы (вот здесь характеристики длительности нужно смотреть в РЭ) То есть нам в программе считать импульсы уже не надо. Примерно также с энкодерами, только там используются сразу два входа на один энкодер. Что касается прямого управления по прерыванию от таймера - то частота таймера указана, стало быть несложно подсчитать какие импульсы можно отлавливать, ну а сама обработка - в этом случае предложена нам, на наш вкус и опыт. Как это делается, описанов отдельном документе, который я не читал, по сему больше мне добавить нечего.
вот как-то так.
Опять таки без практического опыта:
Скажу так - не факт, что уловит. Всё будет зависеть от состояния входа в тот момент, когда исполнительная система контроллера фиксирует состояние входов перед исполнением программы. В моем понимании входы быстрые и небыстрые различаются схемотехнически, но воспользоваться преимуществами быстрых входов можно только путем замещения элемента в конфигурации.
На мой взгляд, уверенно, без пропусков, программно можно считать импульсы, если их длительность больше длительности цикла ПЛК. Тогда все относительно понятно и прогнозируемо.
Поройте поиском насчет пропуска импульсов, здесь много было на эту тему.
А может вы о вашей задаче напишите подробнее... может и решение найдётся. А вааще поройте в сторону обработки прерываний, я к сожалению пока до этого не дошёл...Знаю как это делается на других ПЛК и время реакции на вызов подпрограммы исчисляется в микросекундах (да даже меньше, главное подпрограмму не раздувать)))
Здравствуйте. Прошу помощи.
Начинаю изучение ПЛК 100. Задача связать его с ТРМ 133 и скадой. С трм считываю и записываю один параметр. Есть несколько вопросов.
1. ПО индексации. Есть, например, параметр sp.lu. Из вашего примера проекта взял индекс 8 и прочитал значение уставки ночь. Уставку день можно считать индексом 2. На запись индекс 0 и 2 соответственно. В каком документе можно почитать о индексах? ( В этом Список сгенерирован автоматически программой-конфигуратором (Дата и время сборки программы Nov 9 2009 14:15:20)
Thursday, June 03, 2010
есть просто sp.lu и подпись, что индексы меняются от 0 до 8).
2. В документе выше сказано, что sp.lu это число с плавающей точкой и дипазон значений -9999 .. 9999. Почему в примере берется подмодуль unsigned (беззнаковый) variable?
3. Насколько важно прошиваться последней прошивкой для моей задачи? (использование овен мастер rs-485 и модбас слейв tcp).
4. Также вопрос об адресации. По какому адресу считать 8 входов (командой чтения байта) без преобразования их в байт программно?
5. В теме http://www.owen.ru/forum/showthread....E0%FE%F9%E5%E9 выкладывали пример для преобразования типов данных. (Цитата "Там хитрый формат передачи данных.
Посмотрите пример. Там есть ФБ pkp_convert. Поставьте его в ваш проект, подайте на вход полученное от ТРМ138 значение. Думаю, на выходе получите то, что вам надо.") Как скопировать функциональный блок pkp_convert из того примера в мой проект в виде cfc для наглядности? Пока только сконвертировал в IL и скопировал текстом. Но ни в примере ни в моем проекте преобразование не происходит в режиме эмуляции. Не могу понять почему. Да и в примере обмена PLC100-K.L + TRM133 в эмуляции не просиходит конвертации. "Старт" нажимал.
Рассматриваю ваш пример PLC100-K.L + TRM133 как пособие по опросу. А пример http://owen.ru/forum/attachment.php?...6&d=1226063169 как пособие по конвертации. Хотя конвертация есть и в первом примере. Ее я реализовал. Но непонятно почему при задании уставки выше 40 градусов в ТРМ пишутся совсем другие значения (вместо 41 - 0, вместо 42 - 1, вместо 50 - 9 и т.д.).
скада модбас tcp поддерживает.
Мой проект во вложении.
Нужно уловить импульс в 1 мс периодом 10 мс с аппаратного генератора. От импульса в программе должен запуститься таймер активирующий другие таймеры для сдвига этого импульса на различные интервалы времени и для управления длительностью этого импульса. 1 цикл в рамках периода 10 мс.
Не подскажет кто-нибудь кнопка F1 на панели PCL110-32 с фиксацией или без?
Без фиксации