Страница 33 из 58 ПерваяПервая ... 23313233343543 ... ПоследняяПоследняя
Показано с 321 по 330 из 579

Тема: Создать функцию на ST

  1. #321

    По умолчанию

    Цитата Сообщение от bayk Посмотреть сообщение
    вы как-то странно смотрите на проблему, или никогда не писали больших программ в ОЛ.
    Да, разработчик ОЛ не писал больших программ. Даже не смешно.
    Тролль-наседка, добрый, нежный и ласковый

  2. #322
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    833

    По умолчанию

    Там же было не просто "больших программ", а "больших программ в ОЛ".

    А вообще, спасибо за ОЛ!

  3. #323
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    вызывайте мелкие функции в большой. Макрос - это как раз не про компактность, а ровно наоборот
    Смотря, какой макрос.
    Macros MS Office - изначально - просто возможность записывать и потом нужное количество раз воспроизводить последовательность нажатий клавиш. Позднее расширился до VBA
    Macros С - отдельный, хоть и упрощенный, транслятор.
    Macros ОВЕН - на сегодня, это FBD, причем, полноценное, с вложением. В данном контексте - лучшее. Лучше этого - текст и компилятор (ИМХО)

  4. #324

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    Смотря, какой макрос.
    Macros ОВЕН - на сегодня, это FBD, причем, полноценное, с вложением. В данном контексте - лучшее. Лучше этого - текст и компилятор (ИМХО)
    И чем же хорошо дублирование кода в макросе?
    Тролль-наседка, добрый, нежный и ласковый

  5. #325
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    И чем же хорошо дублирование кода в макросе?
    Вариант 1.
    У вас есть, например, загрузчик и разгрузчик. В каждом из которых - несколько заслонок. Поэтому, макрос заслонка - встраивается по нескольку раз и в загрузчик и разгрузчик. Называется - повторное использование кода - не надо каждую заслонку описывать заново.

    Вариант 2.
    Та же ситуация. Когда смотришь код загрузчика, сразу видишь несколько заслонок, код которых уже посмотрел, и он не захламляет взгляд. Называется - повысить читаемость кода.

    Вариант 3.
    Та же ситуация. Вы допустили ошибку в алгоритме работы заслонки. Меняете в одном месте и уверены, что не пропустите это исправление где-то среди заслонок загрузчика и разгрузчика. Не помню, как это называется )

    Вариант 4.
    Та же ситуация. Вы вычленяете заслонку, с ее состояниями, ошибками, и прочим, в отдельную задачу, которую может сделать другой человек. Называется - декомпозиция задачи.
    Последний раз редактировалось keysansa; 21.01.2022 в 21:23.

  6. #326

    По умолчанию

    Цитата Сообщение от keysansa Посмотреть сообщение
    Вариант 1.
    У вас есть, например, загрузчик и разгрузчик. В каждом из которых - несколько заслонок. Поэтому, макрос заслонка - встраивается по нескольку раз и в загрузчик и разгрузчик. Называется - повторное использование кода - не надо каждую заслонку описывать заново.

    Вариант 2.
    Та же ситуация. Когда смотришь код загрузчика, сразу видишь несколько заслонок, код которых уже посмотрел, и он не захламляет взгляд. Называется - повысить читаемость кода.

    Вариант 3.
    Та же ситуация. Вы допустили ошибку в алгоритме работы заслонки. Меняете в одном месте и уверены, что не пропустите это исправление где-то среди заслонок загрузчика и разгрузчика. Не помню, как это называется )

    Вариант 4.
    Та же ситуация. Вы вычленяете заслонку, с ее состояниями, ошибками, и прочим, в отдельную задачу, которую может сделать другой человек. Называется - декомпозиция задачи.
    Хм. Повторное использование кода это когда один экземпляр кода вызывается из разных мест.
    В случае макросов N экземпляров кода (пусть и одинакового) вызываются каждый раз отдельно. Т.е. программа в N раз больше и несколько медленнее (т.к. Cache Miss чаще возникает).
    Не путаем ФБ/Функции в ST и макросы ОЛ
    Тролль-наседка, добрый, нежный и ласковый

  7. #327
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    833

    По умолчанию

    Тогда надо говорить, что не вызывается каждый раз, а каждый раз один и тот же код прописывается в программе. Правильно?

  8. #328

    По умолчанию

    Цитата Сообщение от Ollema Посмотреть сообщение
    Тогда надо говорить, что не вызывается каждый раз, а каждый раз один и тот же код прописывается в программе. Правильно?
    Правильно, именно так
    Тролль-наседка, добрый, нежный и ласковый

  9. #329
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Хм. Повторное использование кода это когда один экземпляр кода вызывается из разных мест.
    В случае макросов N экземпляров кода (пусть и одинакового) вызываются каждый раз отдельно. Т.е. программа в N раз больше и несколько медленнее (т.к. Cache Miss чаще возникает).
    Не путаем ФБ/Функции в ST и макросы ОЛ
    Не путаем. Код - он бывает и текстовый и исполняемый. Если знакомы с С, это как вызов обычной функции, и вызов той же функции Inline. И в том и в другом случае, есть повторное использование кода. В разных случаях - для разных задач. В случае inline - для быстродействия, в случае обычной функции - для экономии.
    Но изменив код в одном месте - он поменяется при всех вызовах - смотрим снова на все пункты.

    ЗЫ. "Убегание кэша" вам вообще ничем не грозит, так как:
    1. Вы его не получите, так как булева алгебра очень близка к машинному коду = компактна. Даже при использовании строк.
    2. Чем код менее оптимизирован компилятором под размер (меньше переходов, линейный), тем он больше но и быстрее исполняется, так как меньше операций PUSH, POP.
    2. Даже, если, вдруг, каким-то чудом, получите множественную очистку кэша, вас, как программиста автоматики, это не должно волновать. Так как у вас есть отведенное технологическим оборудованием время цикла, например, 10мс. И пока вы из него не выбиваетесь - остальное не важно. Прогармма должна выполнить цикл менее или равно, чем за отведенное время. Если нужны короткие циклы, то для этого придумали ПЛИС (я месяца 3 назад решил поизучать - просто восторге от их быстродействия).
    Последний раз редактировалось keysansa; 24.01.2022 в 14:57.

  10. #330

    По умолчанию

    да, столкнулся с этим. Только беззнаковый тип. или переходи на реал

Страница 33 из 58 ПерваяПервая ... 23313233343543 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 14
    Последнее сообщение: 01.07.2023, 21:30
  2. Ответов: 6
    Последнее сообщение: 22.12.2021, 10:50
  3. Ответов: 3
    Последнее сообщение: 13.09.2021, 13:31
  4. ПЛК160. Чем заменить функцию записи 0x05?
    от FallenDAY в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.08.2017, 13:19
  5. Как написать собственную функцию wait()
    от PavelKazakov в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.07.2009, 12:37

Метки этой темы

Ваши права

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