H9M00

PLC и LD (автоперевод translate.ru + правка вручную)
====================================================

              |    SET        RST        CR1
              |------| |---------|\|---------( )------|
              |           |                           |
              |    CR1    | RS шлепающие звуки (1918) |
              |----| |----                            |

            .. Работая с электрическими машинами важно
               мысленно \"переключить скорости",
               чтобы думать с точки зрения LD[1].

Вещи о которых не стоит забывать:

  0. ВХОДЫ ЛОГИЧЕСКОГО ЭЛЕМЕНТА обычно связываются
     с некоторыми ВЫХОДАМИ других логических элементов в схеме
     (которые являются катушками реле).
     Вот почему один внешний вход (ВХОД В СХЕМУ) может иметь столько
     пар контактов, сколько пожелаете. Полезно считать палец,
     управляющий кнопкой (пакетом контактных пар) -- "внешней катушкой".
     (см. пример D-триггера ниже),

           D          CLK        CR1
      |----| |--------| |--------( )
      |                     |
      |    CR1        CLK   |
      |----| |--------|/|---

  1. Имея дело с лестничными диаграммами
     мы имеем дело с ТОКОМ,
     Имея дело с функциональными блок-схемами,
     мы имеем дело с НАПРЯЖЕНИЕМ.

  2. Есть пять СТАНДАРТНЫХ способов, как программировать PLC:

     a) LD --  лестничные диаграммы, релейно-контактные схемы
     b) FBD -- диаграммы функциональных блоков (дигиталка)
     c) IL  -- список инструкций (прообраз ассемблера)
     d) ST --  структурированный текст (нечто вроде языка \"Паскаль")
     e) SFC -- последовательные функциональные схемы

Цифровая логика и LD
....................

Основные строительные блоки LD диаграммы:

  1. Нормально разомкнутые контакты   ---| |---

  2. Нормально замкнутые контакты     ---|/|---

  3. Катушка реле                     ---( )---

На диаграмме LD блок однозначно идентифицируется его сигнатурой:

  СИГНАТУРА_БЛОКА = НАЗВАНИЕ_БЛОКА + ОБОЗНАЧЕНИЕ_БЛОКА

Вертикальная ЛЕСТНИЦА состоит из поручней и ступенек (проступей). К сожалению, нет никакой логики в переводе фундаментальных терминов на некоторые местные языки. Вот почему мне больше нравится нестандартный \"железнодорожный" сленг:

  rail      рельса     rööbas
  rails     рельсы     rööpad, roopad

  rung      шпала      liiper
  rungs     шпалы      liiprid (kuulub koos rööbaste ja ballastiga
                       raudtee pealisehitise hulka).

Рельсы рисуют вертикально и шпалы горизонтально. Левый рельс под напряжением (HIGH, HOT, VDD), в то время как правый рельс нет (GND, НЕЙТРАЛЬ, VSS)

Основные элементы цифровой схемы*:

  НЕ  -- унарная операция    !
  И   -- бинарная операция  &&
  ИЛИ -- бинарная операция  ||
  D   -- D-триггер, D данные, CLK синхровход:
           если  D && CLK тогда Q=1
           если !D && CLK тогда Q=0

------
*) См. приложение A для более длинного списка элементов цифровых схем.

ВЫХОД (лампа, катушка)
~~~~~~~~~~~~~~~~~~~~~~

Не должно быть последовательно соединенных КАТУШЕК на одной шпале. Часто ЛАМПОЙ на LD является КАТУШКА без контактов. Иногда правый рельс (ЗЕМЛЯ) не показывают, тогда у катушки есть единственный провод связи (слева). Это не позволяет поставить нам две или больше катушки в ряду (Siemens). Также катушка должна быть самым правым элементом на шпале.

ВХОД, стимул:
~~~~~~~~~~~~~

Примечания: У стимула нет входа. Важно знать, как много входов от других стандартных блоков может быть соединено с одним выходом (ограничений может не быть только на бумаге)

# Электроника #

Инвертирующий стимул. Обычно OUT=1, нажмите кнопку для OUT=0.

                      ^^
                     //      ___
  HOT o---/\/\/----|>|---+---o o---o GND
          R1        LED  |   PUSH
                         |
                         +--/\/\/--> OUT
                            R2

Прямой стимул, VMLab, добавлен элемент НЕ

        DISPLAY        ___
  VDD o---( )----+-----o o---------o VSS
                 |
                 |   --
                 |  |  |
                 +--+  o--/\/\/----> OUT
                    |  |
                     --

# LD, Инвертирующий стимул #

     HOT                        GND
      |   IN1              CR1   |
      |---| |--------------(x)---|
      |                          |
      |   CR1                    |
      |---|/|-----..             |
      ..
      |   CR1                    |
      |---|/|------..            |

  INx-||-           \"normally open" push button
  CRx-()-           control relay

НЕ
~~

      CRx
   ---|/|---

  CRx -- элемент НЕ , управляемый катушкой CRx

И
~

      CRx      CRy
   ---| |------| |---

  CRx CRy -- входы элемента И управляемые катушками CRx, CRy.

ИЛИ
~~Ё

         CRx
   ------| |-------
      |       |
      |  CRy  |
       --| |--

  CRx CRy -- входы элемента ИЛИ управляемые катушками CRx, CRy.

D [1]
~~~~~

         D          CLK        CR1
    |----| |--------| |--------( )
    |                     |
    |    CR1        CLK   |
    |----| |--------|/|---

Приложение A. Более длинный список элементов цифровых схем
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Комбинационная логика

    унарные элементы:

      НЕТ
      БУФЕР

    Бинарные элементы:

      И
      И-НЕ
      ИЛИ
      ИЛИ-НЕ
      ИСКЛЮЧАЮЩЕЕ ИЛИ
      ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ
      ЭКВИВАЛЕНТНОСТЬ
      ИМПЛИКАЦИЯ

  Составные:

  + Дешифратор DC, перевод двоичных чисел в одноичные,
    пример: 101 = IIIII
  + Шифратор CD, перевод одноичных чисел в двоичные,
    пример: IIIIII = 110
  + Мультиплексор MUX, параллельные данные в последовательные
    DMX демультиплексор, последовательные данные в параллельные

  Операции:

    ADD сумматор, X + Y, S сумма, C перенос.
    SUB вычитатель, X - Y, D разность, B заем.
    CMP Компаратор, > больше, >= больше или равнo,
                    < меньше, <= меньше или равно,
                     == равно, != не равно

  Память

    D   -- D-триггер, D данные, CLK синхровход:
    RS  -- RS-триггер: S установить в 1, R сбросить в 0,
           Q прямой выход !Q инвертированный выход
    JK  -- JK-триггер, J установить в 1, K установить в 0,
           Q прямой выход !Q инвертированный выход
    T   -- T-триггер: T счет,
           Q прямой выход !Q инвертированный выход

    REG -- Регистр: линейка триггеров D с соединенными входами CLK
    CNT -- Счетчик: последовательно соединенные T триггеры
           с логикой сброса
    RAM    ОЗУ, Запоминающее устройство с произвольным доступом
    ROM    ПЗУ, память только для чтения


Приложение B. Операции, составленные из основных операций
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  https://en.wikipedia.org/wiki/Boolean_algebra#Secondary_operations

Первую операцию, x -> y, называют импликацией (от слова implicate впутать, IF x THEN y). Если x=1  то x->y=y. Если x=0 то значение y может быть проигнорировано, однако, операция должна возвратить некоторое логическое значение и есть только два выбора. Tаким образом, возвращаемое значение является тем, которое будет иметь меньшие последствия (entile*), а именно, 1.

------
*) she is able -- она может
   enable      -- позволять
   tile        -- хвост
   entile      -- привести за собой хвост?
------

Вторую операцию, x (+) y, называют исключающим или (часто сокращаемый как XOR, ^^ в языке Си). Из поведения обычного ИЛИ исключается возможность* x И y .

------
*) В IL нет выражений содержащих операции, только функции. Это избавляет нас от необходимости понимать разницу между префиксными, инфиксными и постфиксными выражениями:

   x  y  OR AND(x,y) XOR(x,y) EQ(x,y) IMP(x,y)
   0  0  0  0        0        1       1
   0  1  1  0        1        0       1
   1  0  1  0        1        0       0
   1  1  1  1        0        1       1
------

С точки зрения модульной арифметики, это сложение по модулю 2 в котором 1 + 1 = 0.

Третья операция эквивалентность или Булево равенство: x == y, верно в том случае, когда x и y имеют одинаковое значенiие. Реализация эквивалентности через сложение по модулю 2 это x (+) y (+) 1.

   x  y  XOR(x,y) XOR(XOR(x,y),1)
   0  0  0        1
   0  1  1        0
   1  0  1        0
   1  1  0        1

Ссылки
~~~~~~

  1. PLC: программирование методов и приложений,
     Джон Р. Хэкуорт и Фредерик Д. Хэкуорт младший

  1. Проект OpenPLC
     http://www.openplcproject.com/

  2. Джеймс Маквхинни, последовательные функциональные схемы для всех
     http://www.plcdev.com/sequential_function_charts_all

  3. Метод узловых потенциалов
     https://www.khanacademy.org/science/electrical-engineering
           /ee-circuit-analysis-topic/ee-dc-circuit-analysis/a
           /ee-node-voltage-method

  5. Operations Composed From The Basic Operations
     https://en.wikipedia.org/wiki/Boolean_algebra#Secondary_operations

  6. Петров И.В., Программируемые контроллеры. Стандартные языки
     и приемы прикладного проектирования, 2004
     https://www.lit62.ru/data/book/1/a2
           /1a2d26d6e6a8e8c278eb7a0057d9773b.pdf
