201310160810


язык программирования (С) или Язык схемотехники функциональных блоков (Siemens Logo! FBD)?
------------------------------------------------------------------------------------------

    Это были контрамоты, товарищи! Люди, прибывшие в наш мир из другой вселенной, где
время течет навстречу нашему.

    Аркадий и Борис Стругацкие. Понедельник начинается в субботу
    
Можно также прочесть "Язык схемотехники функциональных блоков (Siemens Logo! FBD) или язык программирования (С)?" на этой же страничке.

Программисты безусловно предпочтут для перехода в мир программирования контроллеров язык программирования. Столь же очевидно, что писать транслятор с языка схем в машинный код будут они же (программисты). Все же, известная часть микроконтроллерных устройств (например Siemens Logo!) программируются трансляцией подмножества языка электронных схем (FBD) либо лестничных диаграмм (LAD) в машинный код контроллера. Займемся рисованием и попробуем найти простой способ перехода из С# в FBD.

Вариант  1. Из популярного в императивных языках функционально ориентированного описания модуля, легко перейти к его описанию в стиле языка описания электронных схем SPICE. Затем увидеть графическое представление схемы в KiCAD [1], который способен работать с описаниями схем в SPICE формате.

Пример.

C

  y = a && !b || !a && b;
  
SPICE

  FNOT1  n4  n6
  FNOT2  n3  n5
  FAND1  n3  n6  n7
  FAND2  n4  n5  n8
  FOR1   n7  n8  n7
  R1     VDD n1   3K3
  R2     VDD n2   3K3
  R3     n9  n10  3K3
  K1     n1  n3
  K2     n2  n4
  LED1   VDD n7
  
Схема

  VDD
   x            K1                   FAND1   
   |  R1    n1  ---    n3            +---+    FOR1
   +--\/\/\--x--o o----x-------------+  &| n7 +---+                  VDD
   |        n2  ---    |  n4 +--+ n6 |   +--x-+  1|                   x
   +--\/\/\--x--o o---(---x--+  o--x-+   |    |   |  n9       n10     |
      R2        K2     |  |  +--+    +---+    |   +--x-\/\/\--x--|<|--+
                       |  |  FNOT1   +---+    |   |    R3        //
   R1-R3 3.3KOhm       |  +----------+  &| n8 |   |             vv LED1
                       |     +--+ n5 |   +--x-+   |
                       +-----+  o--x-+   |    +---+ 
                             +--+    +---+
                             FNOT2   FAND2

Полная схема с раздражителем (stimulus) и нагрузкой, нужна для VMLAB.

B Logo! цепочка R1K1 заменяется абстрактным элементом "цифровой вход" I1, R2K2 -> I2, R3LED1 -> Q1 (цифровой выход).

Вариант  2. Можно непосредственно рисовать из C#, одна беда -- OC Windows постепенно отдаляется от оконного интерфейса в пользу Метро (Clearing Up The Confusion: It’s “The New Windows 8 UI” -- Not “Metro UI” [2]). Cистемы Unix же несколько отстают с проектом Mono (C#) от Мicrosoft.

Варианты >2. Можно построить требуемый конвертер связкой Html5/CSS3/Javascript, cделать или найти онлайн конвертер, построить аплет на Java и т.д.


Ссылки

[1]. http://www.kicad-pcb.org/display/KICAD/KiCad+EDA+Software+Suite
[2]. http://techcrunch.com/2012/10/24/clearing-up-the-confusion-its-the-new-windows-8-ui-not-metro-ui/
