Показать сообщение отдельно
Старый 13.06.2019, 12:54   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 086
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Запись аварийных событий

Цитата:
Сообщение от vohodonoo Посмотреть сообщение
Вот правильно вы говорите, нужен какой-то перекодировщик, но что бы его нарисовать, кроме как использовать элемент сравнения значений я пока придумать не могу. Вторая проблема, в SMlogix нет возможности работать со строками, только с числами, и это оказалось большой проблемой для моей задачи.
Задача в любом случае вырождается в раскодировку вашего формата, получение индексов строк и вывода этих строк на экран. Причём не важно, на наших контроллерах, на c++ в сервере или в вижл-бейсике в Windows.

Индексное обращение к строкам в SMLogix есть. Проблема в данном случае надумана.



Цитата:
Сообщение от vohodonoo Посмотреть сообщение
Поэтому возникает вопрос, кто как решает задачи с выводом аварийных сообщений?
Обычно мы садимся и рисуем блок-схемы того, что сейчас есть и того, что нужно получить. Далее восполняем отсутствующие элементы и модифицируем не выполняющие нужных функций.

Например, вы упоминаете сравнения, как основной элемент раскодирования. Нет проблем, это рабочий вариант. Примерно как тащить волоком тонну кирпичей вместо того, чтобы загрузить их на тележку.

В вашем случае макрос HI(long) выделит уровень жидкости или что там у вас, макрос LO(long) выделит код сообщения. Уже минус 65535 сравнений.

Далее нужно проанализировать ваши коды сообщений. Если программист был достаточно опытен, то типы сообщений разделены на битовые маски и тогда ни одного сравнения вам вообще не понадобится. Если программер, который придумывал эти сообщения, любит решать задачи в лоб, то мимо 300 сравнений вам не пройти, можно лишь оптимизировать это количество. Что возвращает нас к необходимости анализа всех кодов сообщений.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием