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

2024 ж. 24 Ақп.
3 923 Рет қаралды

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

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

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

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

    @Glukonic@Glukonic2 ай бұрын
    • Да, у них в стандартных макросах желтые линии попадаются. Но это раздражает слегка.

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

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

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

      @darthabbadonyz7904@darthabbadonyz79042 ай бұрын
    • На Барсике и я начинал. QBasic )

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

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

    @Glukonic@Glukonic2 ай бұрын
    • Есть вложеность. Не знаю как она ОЛ, но в кодесис без проблем

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

      @Glukonic@Glukonic2 ай бұрын
    • Для этого есть case, да и else и else if тут присутствует.

      @izada666@izada6662 ай бұрын
    • @@GlukonicУ функций тот же функционал кроме возможности хранить статические данные.

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

    @_Weyland@_Weyland2 ай бұрын
    • в ОВ он не такой полный как в кодесис.

      @Glukonic@Glukonic2 ай бұрын
    • Пока не умеет.

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

      @izada666@izada6662 ай бұрын
    • В пр от Овена нет типа данных массив.

      @izada666@izada6662 ай бұрын
KZhead