PDA

Просмотр полной версии : Наружнее большое табло



дрю
01.02.2016, 16:04
Ребят добрый день! Дали задание изготовить наружнее большое табло для вывода температуры сушильного барабана. Табло соберу из светодиодных полосок, комутировать буду релейным модулем( он без дела валяеться) на 32 порта, индикатор 3-х разрядный, температуру буду снимать либо с ТРМ 202 либо с модуля аналогового. Набросал для пробы на CFC програмку которая значение температуры (тип INT) разбирает отдельно по разрядам (сотни,десятки, еденицы)22243. После я определю вес каждого разряда и выведу навыход модуля чтобы его там зажечь.Инндикация не ДИНАМИЧИСКАЯ, т.е. у каждого сегмента будет свой порт. Покритикуйте, а то все написаное хоть и нормально работает но както по детски, или предложите идею. Да по цене, готовое табло с 485 стои более22.000р, дешевле на модуле сделать самому под управлением СПК.

capzap
01.02.2016, 16:29
на Яве есть общедоступный пример семисегментного знакоместа, таким образом с модуля на 32 выхода, можно четыре цифры отображать

boolean[][] DIGIT_COMBINATIONS = new boolean[][]{
new boolean[]{true, false, true, true, true, true, true},
new boolean[]{false, false, false, false, true, false, true},
new boolean[]{true, true, true, false, true, true, false},
new boolean[]{true, true, true, false, true, false, true},
new boolean[]{false, true, false, true, true, false, true},
new boolean[]{true, true, true, true, false, false, true},
new boolean[]{true, true, true, true, false, true, true},
new boolean[]{true, false, false, false, true, false, true},
new boolean[]{true, true, true, true, true, true, true},
new boolean[]{true, true, true, true, true, false, true}};

public void showNumber(Integer num) {
if (num < 0 || num > 9) num = 0; // default to 0 for non-valid numbers
for (int i = 0; i < 7; i++) {
polygons[i].setFill(DIGIT_COMBINATIONS[num][i] ? onColor : offColor);
}
}
onColor это включен выход,offColor выключен

дрю
01.02.2016, 17:06
с СИНТАКСИСОМ НЕ ПОМОЖЕТЕ? BOOL LEAN [][] (что озночают двойные скобки?)
дальше в переменную DIGIT COMBINATION выводим состояние сегментов через переменную NEW BOOLEAN
дальше по всей видимости обьявления состояния сегментов для каждой цифры (что озночают [] одинарные скобки?)
if (num<0 || num>0) num=0 с этим все понятно.
а вот дальше ни как.

lara197a
01.02.2016, 17:35
Есть пример работы с семисигментным индикатором для КДС
в книге И. Петрова "Программируемые контроллеры"
Я делал по нему в 2006г
пример во вложении.

дрю
05.02.2016, 11:57
ребят пробую повторить то что написано у петрова и написал вот это22337, а ругаеться вот так 22339, что я делаю не так?

Евгений Кислов
05.02.2016, 12:24
ребят пробую повторить то что написано у петрова и написал вот это22337, а ругаеться вот так 22339, что я делаю не так?

Начальные значения элементов массива заключите в квадратные скобки.

capzap
05.02.2016, 12:25
ребят пробую повторить то что написано у петрова и написал вот это22337, а ругаеться вот так 22339, что я делаю не так?
зделайте массив через ассистент ввода с добавлением предустановленных значений и поймете в чем разница, а так скобки нужны

дрю
05.02.2016, 14:05
В асистенте ввода constant не нашел поэтому написал в разделе VAR, скобки поставил, после компиляции ругаться перестал 22355 но не понимаю что он выводит в процесе работы 22357, откуда берёться цифра 102. Я прошу прощения знаний уровень невелик поэтому пытаюсь научиться.

Евгений Кислов
05.02.2016, 14:17
В асистенте ввода constant не нашел поэтому написал в разделе VAR, скобки поставил, после компиляции ругаться перестал 22355 но не понимаю что он выводит в процесе работы 22357, откуда берёться цифра 102. Я прошу прощения знаний уровень невелик поэтому пытаюсь научиться.

Вы объявляете начальное значение массива в шестнадцатеричной системе счисления, а в CODESYS по умолчанию значения в отладке отображаются в десятичной.

Вы можете сделать так:22359

дрю
05.02.2016, 14:29
Ну вот сейчас я их обьявил как десятичные 22361 значит и значения извлекаемые должны измениться, а ни как 22363 ?

Евгений Кислов
05.02.2016, 15:51
Ну вот сейчас я их обьявил как десятичные 22361 значит и значения извлекаемые должны измениться, а ни как 22363 ?

Рискну предположить, что вы не загрузили новый проект, а сделали Логин с онлайн-изменением.
Загрузите проект - и увидите 10 и 8.

дрю
08.02.2016, 08:05
Евгений вы совершенно правы, спасибо! Я не понял правда как это ,,загрузить проект,, а открыл его на другом компютере и все действительно заработало!