Как создать функцию на языке ST в Owen Logic

Ғылым және технология

Пример добавления функции на языке ST в программу на Owen Logic. Попутно повествуется, как зашифровать битовую маску в десятичное число и использовать дешифровку для выдачи произвольных команд на дискретные выходы реле ПР103.

Пікірлер: 18

  • @alexberest1982
    @alexberest19823 ай бұрын

    Сделаю несколько дополнений и замечаний. При объяснение функции и функционального блока, все-таки лучше оперировать входная переменная или вход и выходная переменная или выход. Несколько раз было сказано "входная функция", тут лучше было сказать "функция", т.к. там имеет ввиду уже выходное состояние функции. Функция может иметь несколько входов и только один выход. Она при каждом цикле не сохраняет состояние. Пример IF I=2 THEN Q:=true. Если I=2, то выход Q выдаст сигнал, то при следующем цикле если I уже не будет равен 2, а любому другому числу, то Q прекратит сигнал. Функциональный блок же может иметь несколько входов и выходов и сохраняет состояние при следующем цикле. И в примере выше если I=2, то выход Q выдаст сигнал и не снимет сигнал если в следующем I будет равен другим числам. Поэтому или обязательно прописывать оператор ELSE(иначе) и присвоение или другое условие(IF(ELSIF) THEN.

  • @Glukonic
    @Glukonic3 ай бұрын

    Замечательное видео, по поводу задержек Овен сказали что типо ни чего страшного, жёлтые не красные, Но по поводу времени жаль что они не реализовали ПР чисто с транзисторными PNP выходами вместо реле.

  • @alexzhukblog

    @alexzhukblog

    3 ай бұрын

    Да, у них в стандартных макросах желтые линии попадаются. Но это раздражает слегка.

  • @Glukonic

    @Glukonic

    3 ай бұрын

    @@alexzhukblog я просто делал не помню где и мне кретично было быстрота исполнения, а с линией задержки уже поздно сигнал уходил, в версии 1.2 вроде или более старой небыло такой ерунды как жёлтые линии открыл старый проект с совой ещё (это иконка ов тогда была).

  • @izada666
    @izada6663 ай бұрын

    В данном случае. Через if смысла нет делать. Код через if дольше будет испоняться, чем через case. То есть каждый if это шаг программы, который обязан исполнить контроллер, а в case в зависимости от значения происходит в два шага первый шаг это переход на функцию внутри case, а второй это выполнение функции.

  • @darthabbadonyz7904
    @darthabbadonyz79043 ай бұрын

    Здравствуйте, Александр. Программерством лет 15 не занимался (раньше мелкосы в мысыйокселе сочинял), но как увидел - сразу все понятно. Могу не знать особенностей конкретного языка, но логику ухватил чуть ли не за планковское время (10^-43с) 🙂 А начало видео - "ВАЩЕ ЧУМА!!!" - Ну когда еще Черный Электрик тебе зеленым глазом подмигнет? 🙂

  • @darthabbadonyz7904

    @darthabbadonyz7904

    3 ай бұрын

    З.Ы А во времена дедушки DOS'a и наСИльничал и ПАСКудничал и ASMатривался и даже на ВАСИКе сочинял - школьнику все интересно было.

  • @alexzhukblog

    @alexzhukblog

    3 ай бұрын

    На Барсике и я начинал. QBasic )

  • @Glukonic
    @Glukonic3 ай бұрын

    при получении ПР103 я задолбался складывать клемные коннекторы в верном порядке, но потом понял для аналоговых вводов 3 по 5 pin, дискретные вводы и RS 2pin + 5 pin + 3 pin + 5 pin. А на дискретные выводы остальные, затем это меня не устроило и на дискретные выводы я заказал отдельные клеммы целиковые на китайском этом самом.

  • @Glukonic
    @Glukonic3 ай бұрын

    я обычно функциональный блок беру, не помню можно ли в функции применять elsif и другие условия вместо того чтобы после if каждый раз не делать end_if и потом If новое с новым условием.

  • @sbersh

    @sbersh

    3 ай бұрын

    Есть вложеность. Не знаю как она ОЛ, но в кодесис без проблем

  • @Glukonic

    @Glukonic

    3 ай бұрын

    @@sbersh у меня в функциональном блоке ок, а вот функции я пока не создавал.

  • @izada666

    @izada666

    3 ай бұрын

    Для этого есть case, да и else и else if тут присутствует.

  • @_Weyland
    @_Weyland3 ай бұрын

    А в массивы этот язык ST не умеет? Потому что если он умеет в массивы, то проще, вместо кучи сравнений, сразу брать соответствующий элемент из массива.

  • @Glukonic

    @Glukonic

    3 ай бұрын

    в ОВ он не такой полный как в кодесис.

  • @izada666

    @izada666

    3 ай бұрын

    Пока не умеет.

  • @izada666

    @izada666

    3 ай бұрын

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

  • @izada666

    @izada666

    3 ай бұрын

    В пр от Овена нет типа данных массив.

Келесі