Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 19 из 19

Тема: Как создать макрос?

  1. #11
    Пользователь
    Регистрация
    10.04.2010
    Адрес
    Алтайский край,г.Рубцовск
    Сообщений
    963

    По умолчанию

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

  2. #12

    По умолчанию

    Здравствуйте, VaBo.
    Цитата Сообщение от VaBo Посмотреть сообщение
    Освоить хотя бы на базовом уровне CDS (с перспективой на будущее) и поднять на этом совсем немного денег
    Или вы об алгоритме?
    Для освоения на базовом уровне CDS Вам необходимо разобраться с: функциями, функциональными блоками и подпрограммами. В чем их отличия и особенности + освоить как минимум ST, SFC, CFC или FBD (мой выбор).

    P. S. а макросы это для фанатиков CFC, я этим языком не пользуюсь по этому в первый раз от Вас и услышал - спасибо Вам за это :-)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  3. #13
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    Не все так запущено - на ASM и С для микроконтоллеров я писАл лет 13 (с 99 года). Со школы знаком с цифровой схемотехникой - FBD не проблема (тем более часто использую FBD с контр. другого производителя). На ST - TraceMoud - тоже лет 6.
    Проблемы только с узнаванием тонкостей CDS. Вот сейчас соображаю - есть ли способ сказать мастеру, чтобы постоянно не "долбился" в слейв, если тот не отвечает. Например, как в Лектусе сделано - несколько раз не ответил - ушел в "запас" с периодической проверкой.

    Есть способ?
    Последний раз редактировалось VaBo; 10.12.2016 в 11:52.

  4. #14

    По умолчанию

    Да есть)

    Для конфигуратора такая возможность выглядит так:
    В каждом мастере есть параметр Byte (*Start/Stop*). Если в программе постоянно присваивать значение 254 - то данный мастер опрашивать слейва не будет. Если перестать присваивать 254 или присвоить 255, то мастер продолжит опрос слейва.

    Так же тут есть параметры (*Last Error*) и (*Last Adress*) с их помощью можно идентифицировать нештатные ситуации.
    Изображения Изображения
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  5. #15
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    Спасибо, интересно...

    Но таким образом я торможу весь мастер, а нужно затормозить только один юниверсал девайс, остальные ведь работают?

    Как узнать, что только что произошло событие обмена по модбас и в переменных состояния появились обновленные данные?

    И еще дилетанский вопрос - каким образом в CDS принято разделять задачи (по внешним событиям, по периодам выполнения)?
    В микроконтроллерах, например, приходилось бить задачи на отдельные функции, создавать в глобальной зацикленной ветке счетчики-таймеры и флаги для задач (там же флаги от прерываний) и вызывать нужные ф-ии, при этом сбрасывая флаги.
    Есть ли в CDS более продвинутый способ? Перемалывать все подряд с циклом 1 мС как-то не хочется.
    Последний раз редактировалось VaBo; 10.12.2016 в 20:54.

  6. #16

    По умолчанию

    У каждого "утеверсал модбас девайс" есть аналогичный параметр см. вложение работает аналогично.
    Изображения Изображения
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  7. #17

    По умолчанию

    Цитата Сообщение от VaBo Посмотреть сообщение
    Как узнать, что только что произошло событие обмена по модбас и в переменных состояния появились обновленные данные?
    Ну так есть же "Ласт еррор", если ошибок нет значит данные актуальны.
    Цитата Сообщение от VaBo Посмотреть сообщение
    И еще дилетанский вопрос - каким образом в CDS принято разделять задачи (по внешним событиям, по периодам выполнения)?
    Можно реализовать как захочете, вот как нравиться так и делайте. Как-то стандартных подходов нет - каждый делает в соответствии со своим опытом и навыками.

    В ПЛК_ПРГ всю программу делю на глобальный задачи (создаю отдельные подпрограммы) например:
    1. Контур отопления.
    2. Контур горячего водоснабжения.
    3. Контур теплоносителя для системы вентиляции.

    Дальше в данные программы реализую на SFC например:

    1. Инициализация/проверка на достоверность переменных. и Ждем команды "пуск".
    2. Пуск гидравлики.
    3. Пуск регуляторов температуры.

    После прихода команды "Стоп":
    4. выключить насосы.
    5. Закрыть регулирующий клапан.
    6. Перейти в начало программы и ждать команды "пуск".

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

    Например: позиционирование в начальное положение исполнительных механизмов для станка ЧПУ необходимо и при включении станка и при сбросе аварии и при завершении цикла. Таким образом 100% это должна быть отдельная подпрограмма с входом "старт позиционирования" и выходом "все отпозиционированно", количество входных входных переменных может быть и больше, но не меньше.
    После команды "старт позиционирования" ждем подтверждения, что все отпозиционированно и идем дальше работать)
    Автоматизация Диспетчеризация Сервис
    e-mail: ads-kaluga@mail.ru

  8. #18
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    У каждого "утеверсал модбас девайс" есть аналогичный параметр см. вложение работает аналогично.
    А где вы взяли описание этих переменных - документацию вроде перешерстил, - не нашел...
    И с ласт еррор мне непонятно следующее: обмен по сети идет асинхронно от основной задачи, а поллить эту переменную я могу только в самой задаче. Тогда большая вероятность что я либо пропущу ЛАСТ ЕРРОР, либо (небольшая вероятность) что я увижу ЛАСТ ЕРРОР, но при считывании адреса считаю уже следующий (валидный). Или при ошибке обмен останавливается до её сброса?

  9. #19
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    Цитата Сообщение от Gans Посмотреть сообщение
    И еще дилетанский вопрос - каким образом в CDS принято разделять задачи (по внешним событиям, по периодам выполнения)?
    Можно реализовать как захочете, вот как нравиться так и делайте. Как-то стандартных подходов нет - каждый делает в соответствии со своим опытом и навыками.
    Вроде нашел в мануале то, про что спрашивал - "конфигуратор задач", единственное - оперировать может только ПРОГРАММАМИ.
    Не пользовались?

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Логарифм макрос
    от Ukeru в разделе Программируемые реле
    Ответов: 84
    Последнее сообщение: 13.06.2016, 22:12
  2. Макрос внутри макроса ?
    от iman в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 03.10.2015, 20:49
  3. Макрос побитного вывода сигнатуры (beeper)
    от tigdin в разделе Программируемые реле
    Ответов: 25
    Последнее сообщение: 12.04.2015, 20:35
  4. Макрос в макросе
    от АлексPetr в разделе Программируемые реле
    Ответов: 4
    Последнее сообщение: 28.01.2015, 21:16
  5. Макрос
    от CEkip в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.04.2012, 21:54

Ваши права

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