Добрый день! Возник следующий вопрос, возможно ли с помощью макроса выводить сообщения на экран панели?
Например:
Mes='Авария в шкафу №....';
PSW[1000]=Mes;
и на экране панели вызвать этот регистр и там покажется заданное сообщение
Добрый день! Возник следующий вопрос, возможно ли с помощью макроса выводить сообщения на экран панели?
Например:
Mes='Авария в шкафу №....';
PSW[1000]=Mes;
и на экране панели вызвать этот регистр и там покажется заданное сообщение
Добрый день.
Да, это возможно.
На примере строки 'Авария в шкафу №1' код макроса будет следующим:
1. Фактически строка занимает 17 однобайтовых символов. Поскольку панель работает с двухбайтовыми регистрами - удобнее все буферы объявлять четными (в данном случае - 18).Код:char mes[18]="\xc0\xe2\xe0\xf0\xe8\xff\x20\xe2\x20\xf8\xea\xe0\xf4\xf3\x20\xb9\x31"; memcpy(&PSW[300], mes, 18);
2. Элементы Текстовый дисплей/Текстовый ввод в панели используют кодировку Win1251
2. В макросах нельзя использовать кириллицу, поэтому используется экранирующие последовательности (https://en.wikipedia.org/wiki/Escape_sequences_in_C)
\x - это спецсимвол, который указывает на то, что следующие два символа надо трактовать как HEX-значение (в качестве которого мы указываем ASCII-код символа)
4. Для перевода кириллической строки в ASCII-коды удобно использовать онлайн-конвертер, например: http://crypt-online.ru/crypts/text2hex/
Но могут быть нюанс - например, конвертер по ссылке неправильно конвертирует символ №.
5. После выполнения макроса записанная строка займет регистры PSW300-308
https://ftp.owen.ru/SP300/99_ForumFi...extDisplay.txp
Последний раз редактировалось Евгений Кислов; 22.07.2021 в 08:59.
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Вместо
memcpy(&PSW[300], mes, 18);
можно использовать стандартную функцию sprintf()
и сразу "печатать" в Текстовый дисплей, например PSW[1000], нужной длины.
Типа
sprintf((char*)&PSW[1000], "My Text");
Поддерживается форматирование. Например печать даты времени (дата и время в регистрах PSW30..PSW35 в двоично-десятичном формате)
sprintf((char*)&PSW[1000], "%4X-%2.2X-%2.2X %2.2X:%2.2X:%2.2X ", PSW[30], PSW[31], PSW[32], PSW[33], PSW[34], PSW[35]);
Захват-100.png
Печатаем в Текстовый дисплей PSW[1000] (десять регистров PSW1000...PSW1009)
Захват-2.png
Результат - строка вида 2021-07-22 13:36:15
Для задачи ТС, с учетом отсутствия кириллицы
int Num;
Num = 10;
sprintf((char*)&PSW[1000], "\xc0\xe2\xe0\xf0\xe8\xff\x20\xe2\x20\xf8\xea\xe0\ xf4\xf3\x20\xb9\x31 %d", Num);
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Возник еще один вопрос, могу ли я в данной панели с помощью инструментов: "цифровой ввода", "текстового дисплея", "текстового ввода", или с помощью макроса обращаться к области авторазмещения?
Т.е. сам туда записывать и брать оттуда значения регистров?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
См. функции Reads и Writes.
Или обертки над ними:
https://owen.ru/uploads/182/example_macromemory_v2.zip
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Если я напишу на языке пользовательскую библиотеку возможно ли ее применение для панели?