Показано с 1 по 9 из 9

Тема: Примеры HMI для СП270

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,217

    Cool Крестики-нолики

    Пример -не пример, а может просто баловство
    Интерфейс для игры двух игроков, один играет за "Х", второй - за "О".
    Крестики начинают первыми.
    Посмотреть:

    Захват-1.png

    Проект специально сделал без ГМ, используются только стандартные компоненты. Хотя с помощью ГМ можно было все упростить
    Игровое поле - девять индикаторов "пусто-О-Х" в виде динамического текста, для каждого индикатора свой регистр PSW256..PSW264. В этих регистрах хранится информация о клетках игрового поля в виде:
    0 -не занятая клетка, текст "пусто";
    2 -в клетке находится "О";
    8 -в клетке находится "Х".
    Для отображения "О" и "Х" использую шрифт "Marlett". Для этого шрифта символ "r" соответствует "Х", а символ "n" соответствует "О"
    Почему использую числа 2 и 8 объясню ниже.

    Поверх индикаторов расположены функциональные кнопки, невидимые, хотя можно их не скрывать. Каждая кнопка имеет бит разрешения PSB256..PSB264.
    Дополнительно используются два бита очередности хода игроков -PSB265 ход игрока "Х", PSB266 ход игрока "О", пришлось использовать два раздельных бита, т.к. ф.кнопки и ф.области не могут анализировать нулевое состояние управляющих битов, так же нельзя анализировать переход управляющего бита из "1" в "0".
    Индикатор очередности хода(счетчик ходов) и результата игры - динамический текст с регистром управления PSW269.
    Четыре регистра для анализа выигрышной комбинации для "Х" или "О":
    PSW265 -в одной из трех строк;
    PSW266 -в одном из трех столбцов;
    PSW267 -в первой диагонали;
    PSW267 -во второй диагонали.
    При запуске экрана или при нажатии кнопки "Сброс" все биты разрешения кнопок PSB256..PSB264 устанавливаются в "1", PSB265=1, PSB266=0(ход "Х"), клетки игрового поля очищаются (PSW256..PSW264=0), счетчик ходов PSW269=0.
    Теперь игрок "Х", может нажать любую из девяти кнопок, т.к. биты разрешения у кнопок в "1". В конце списка функций при нажатии любой кнопки(Pressing) стоят функции:
    -реверс бит очередности хода игроков (PSB265, PSB266), таким образом последующее нажатие другой кнопки будет обеспечивать ввод в другую клетку противоположного символа.
    -сброс бита разрешения для этой же кнопки, таким образом нажатая кнопка будет скрыта и повторное нажатие на нее будет не возможно.
    При отпускании кнопки(Releasing) происходит инкремент счетчика ходов, соответственно будет меняться надпись на индикаторе очередности ходов. При достижении счетчиком состояния 9, если не было выигрышных комбинаций, на индикаторе очередности хода будет надпись "Ничья" и так как все кнопки уже нажаты, то игра окончена и необходимо нажать кнопку "Сброс".
    Теперь вернемся к списку функций при нажатии любой кнопки(Pressing),
    Захват-1.png
    полу схематично список можно представить так
    1. PSW265=Сумма чисел в клетках в этой строки, за исключением текущей клетки;
    2. PSW266=Сумма чисел в клетках в этом столбце, за исключением текущей клетки;
    3. PSW267=Сумма чисел в клетках на диагонали, за исключением текущей клетки. Только для кнопок на диагоналях и центральной кнопки;
    4. PSW268=Сумма чисел в клетках на второй диагонали, за исключением текущей клетки. Только для центральной кнопки;
    5. Записать в текущую клетку "8", если ход у "Х";
    6. Записать в текущую клетку "2", если ход у "О";

    Примечание. Анализ "если ход у Х и если ход у О" осуществляется с помощью битов разрешения для каждой из функций. Доступ к этим битам -кнопка "Пароль". http://www.owen.ru/forum/showthread....l=1#post100969
    Функции 1, 2, 3 и 4 вычисляют выигрышные комбинации по строкам, столбцам и диагоналям игрового поля. Как это работает. Смотрим на функции 5 и 6. На предыдущих шагах эти функции могли записывать в клетки игрового поля или 2 или 8, или в клетках еще нет "О" и "Х" -значит будет число 0. И так, что мы можем получить в результате суммирования двух ячеек на текущих строке, столбце или диагонали?
    Если в обоих ячейках находились "О", то сумма=4, что соответствует установленному второму биту в результате суммирования.
    Если в обоих ячейках находились "Х", то сумма=16, что соответствует установленному четвертому биту в результате суммирования.
    Если в обоих ячейках нет одинаковых символов, то нет ни второго ни четвертого бита.
    Но если игрок в текущую клетку сейчас ставит "Х", то анализировать надо наличие четвертого бита в сумме чисел соседних клеток, а не второго. И наоборот, если игрок в текущую клетку сейчас ставит "О", то анализировать надо наличие второго бита в сумме чисел соседних клеток, а не четвертого.
    Для этого, в зависимости от, очередности хода выполняются оставшиеся функции при нажатии любой кнопки(Pressing):
    Сбросить бит PSW265.2, если ход у "Х";
    Сбросить бит PSW266.2, если ход у "Х";
    Сбросить бит PSW267.2, если ход у "Х";
    Сбросить бит PSW265.4, если ход у "О";
    Сбросить бит PSW265.4, если ход у "О";
    Сбросить бит PSW265.4, если ход у "О".
    Примечание см.выше.
    Осталось рассказать про фиксацию выигрышных комбинаций. Для этого используются четыре функциональные области для определения выигрыша "Х" и четыре функциональные области для определения выигрыша "О". В каждой из четырех ф.областей одни и те же функции, только запускаются они от разных бит. Это все по тому, что стандартными компонентами нельзя реализовать операцию ИЛИ.
    В группе функций для определения выигрыша "Х" каждая запускается от четвертого бита сумм ячеек по строкам, столбцам и диагоналям.
    Захват-1.png
    Что они делают. Записывают в счетчик очередности ходов "10", что соответствует надписи Выигрыш "Х", биты разрешения для всех кнопок сбрасываются, что исключает возможность нажимать кнопки после завершения игры.
    Аналогично и для группы функций для определения выигрыша "О", только надпись будет другая - Выигрыш "О".
    Вложения Вложения
    Последний раз редактировалось petera; 08.12.2016 в 13:18.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. примеры для программирования
    от ALEX474747 в разделе Помощь Разработчикам
    Ответов: 240
    Последнее сообщение: 15.01.2026, 22:25
  2. СП270 примеры организации связи.
    от Адрей в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 01.09.2014, 15:47
  3. HMI WagoID 1.1 (для Андроид) для Овен ПЛК
    от osv007 в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 10.11.2012, 19:42
  4. примеры для программирования
    от РоманычЪ в разделе ПЛК1хх
    Ответов: 24
    Последнее сообщение: 26.09.2011, 08:27
  5. Примеры работы со СМИ1, ИП320, СП270
    от Kirill в разделе Панели оператора (HMI)
    Ответов: 16
    Последнее сообщение: 21.12.2010, 15:52

Ваши права

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