|
SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
13.06.2019, 11:32 | #1 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Запись аварийных событий
Добрый день. У меня тут сложилась задачка по отображению аварийных событий, и что-то никак не могу ее решить.
Суть такова: есть четыре байта информации которые характеризуют тип аварии (два старших байта, напр. уровень жидкости, температура и т.д.). Младших два байта характеризуют степень аварии, то есть например цифра 1 - выше верхнего предела, 2 - ниже нижнего предела, 5- предупреждение, 7 - датчик не исправен и т.д. Таким образом у меня есть комбинации примерно на 300 событий. Причем старшие два байта пронумерованы не по порядку, то есть бывают типы аварий которые могут быть обозначены цифрой например 3001, или 4909, а всего типов аварий порядка 100. Вопрос: как мне их отобразить в текстовом виде на TRIM5 ? |
13.06.2019, 11:51 | #2 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили:
161 раз(а) в 153 сообщениях
|
Ответ: Запись аварийных событий
|
13.06.2019, 12:26 | #3 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Запись аварийных событий
Вот правильно вы говорите, нужен какой-то перекодировщик, но что бы его нарисовать, кроме как использовать элемент сравнения значений я пока придумать не могу. Вторая проблема, в SMlogix нет возможности работать со строками, только с числами, и это оказалось большой проблемой для моей задачи.
Поэтому возникает вопрос, кто как решает задачи с выводом аварийных сообщений? |
13.06.2019, 12:46 | #4 |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили:
254 раз(а) в 250 сообщениях
|
Ответ: Запись аварийных событий
По задаче, я так понимаю она вам кажется объемной и хочется ее упростить. Мне это видится как, вам сначала надо собрать дешифратор для одной аварии(у одной аварии несколько состояний=несколько разных аварий.), потом копипаст дешифратора на количество аварий и набивать журнал в смарте. |
13.06.2019, 12:54 | #5 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Запись аварийных событий
Индексное обращение к строкам в SMLogix есть. Проблема в данном случае надумана. Например, вы упоминаете сравнения, как основной элемент раскодирования. Нет проблем, это рабочий вариант. Примерно как тащить волоком тонну кирпичей вместо того, чтобы загрузить их на тележку. В вашем случае макрос HI(long) выделит уровень жидкости или что там у вас, макрос LO(long) выделит код сообщения. Уже минус 65535 сравнений. Далее нужно проанализировать ваши коды сообщений. Если программист был достаточно опытен, то типы сообщений разделены на битовые маски и тогда ни одного сравнения вам вообще не понадобится. Если программер, который придумывал эти сообщения, любит решать задачи в лоб, то мимо 300 сравнений вам не пройти, можно лишь оптимизировать это количество. Что возвращает нас к необходимости анализа всех кодов сообщений. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
13.06.2019, 13:43 | #6 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Запись аварийных событий
Просто вдруг (ну может же такое быть) есть такой блок в SMART-е который мог бы просто сделать какое-то соответствие конкретной цифре - конкретную строку (фразу). В SMARTе есть нечто подобное, если задать тип переменной "перечисление". Одно только проблемно, что они задаются последовательно. Еще пробовал использовать в SMARTе "журнал событий", в SMlogix 1,27 больше 60 событий начинает ловить глюк и просто вылетает. Может в SMlogix 1,28 как-то лучше стало с "журналом событий" я не пробовал, сейчас как раз думаю попробовать..... но событий тогда придется все-равно прописывать под 300 шт. |
13.06.2019, 13:47 | #7 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Запись аварийных событий
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
13.06.2019, 14:10 | #8 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Запись аварийных событий
я вот например встретил такую замечательную программку "FLprog", это тоже FBD программирование но для ARDUINO. Есть конечно там и свои минусы, но один из огромнейших плюсов в том, что на ряду с типами bool, int, long, float так же легко используются блоки с типом char. И там этой проблемы как-бы даже не возникло, просто берешь значение char соответствие из старших байт + char соответствие из младших байт = char итоговая строка. И все просто как день. |
13.06.2019, 14:14 | #9 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Запись аварийных событий
Нудноватая работа, но для 2Gi и более современных контроллеров ненапряжная. А копипаст ускорит процесс. Я бы сделал универсальный макрос с 10-20 входами, который на выходе даёт число - номер сообщения. И далее всё это дело копипастил, складывая выходы этих макросов. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
13.06.2019, 14:44 | #10 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Запись аварийных событий
|
13.06.2019, 17:17 | #11 |
Senior Member
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили:
161 раз(а) в 153 сообщениях
|
Ответ: Запись аварийных событий
задача решается по-индусски: влоб. СМР(int) выход А=В отдаем в журнал событий, там пишем все что надо. первый вариант. второй: тот же компаратор, но выход А=В управляет видимостью текстового блока в смарте третий: .. и т.д. |
17.06.2019, 14:46 | #12 |
Member
Регистрация: Jun 2015
Сообщения: 46
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Запись аварийных событий
Вот итог дешифратора аварий.
Теперь осталось все это в текстовом виде вбить в SMART в экран "ЖУРНАЛ СОБЫТИЙ", и если он от такого количества не загнётся, то ждет меня завтра удача...... Ну а если загнется, то пока не знаю что и делать дальше. |
17.06.2019, 14:57 | #13 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили:
655 раз(а) в 599 сообщениях
|
Ответ: Запись аварийных событий
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
17.06.2019, 16:15 | #14 |
Сотрудник Сегнетикс
Регистрация: Mar 2016
Адрес: SPb
Сообщения: 4 302
Благодарил(а): 0 раз(а)
Поблагодарили:
254 раз(а) в 250 сообщениях
|
Ответ: Запись аварийных событий
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись журнала на внешний носитель | CruZaEd | SMLogix | 10 | 04.07.2019 11:29 |
Журнал событий на SMH2G | evo3 | Вопросы о программировании | 13 | 06.04.2016 10:33 |
Журнал событий | Gbx | Вопросы о Pixel | 3 | 15.01.2016 14:16 |
Не изменяется запись на экране SMArt (ложная проблема) | Миханько Антон | SMArt | 7 | 10.11.2015 17:33 |