VISU#07. Как реализовать управление пользователями визуализации из кода?
Вопрос: в проекте используется управление пользователями визуализации (User Managment). Для логина/выхода используются кнопки (InputConfiguration - OnMouseClick - Управление пользователями).
А как сделать тоже самое из кода программы?
Комментарий: приведенная ниже информация актуальна только для контроллеров, программируемых в CODESYS V3.5 SP11 Patch 5 или выше.
Ответ: в первую очередь необходимо получить контекст клиента (pstClientData) - см. соответствующий пример.
Зная контекст, вы можете организовать логин или отключение данного клиента из кода программы:
Код:
// dwGroupId - ID группы пользователей (DWORD)
// wstUserName, wstFullName - короткое и полное имя пользователя (WSTRING)
// подразумевается, что эта информация задана в Менеджере визуализации на вкладке Управление пользователями
// но фактически - вы можете залогиниться даже под несуществующим пользователем
VisuUserManagement.g_VisuUserMgmt2.LoginToUserGroup(pstClientData, dwGroupId, wstUserName, wstFullName);
Код:
VisuElems.Visu_FctLogoutUser(pstClientData);
Cм. также пример считывания информации о пользователях визуализации в переменные программы.
Вложений: 2
DEBUG#02. Как проверить проект в эмуляции?
Вопрос: как проверить проект в эмуляции, без подключения к контроллеру?
Ответ: для запуска проекта в режиме эмуляции следует выполнить команду Онлайн - Эмуляция и Онлайн - Логин.
Следует отметить, что режим эмуляции имеет множество ограничений:
- не поддерживается обмен (по любым интерфейсам);
- не поддерживается работа с файлами (из-за этого в частности не будут работать тренды и таблица тревог);
- не поддерживается веб-визуализация.
Альтернативным и более функциональным вариантом, лишенным всех описанных недостатков, является использование виртуального контроллера.
Запустить виртуальный контроллер можно с помощью иконки на панели задач Windows:
Вложение 40729
После этого следует в проекте выбрать выбрать таргет-файл CODESYS Control Win V3 (Device - Обновить устройство) и подключиться к нему (Device - Сканирование сети).
Желательно выбирать версию, соответствующую версию системы исполнения реального ПЛК, на котором впоследствии будет запускаться проект.
Вложение 40730
Следует обратить внимание, что и в режиме эмуляции, и при работе с виртуальным контроллером не поддерживаются:
- функционал таргет-файлов (узлы OwenRTC, Buzzer и т.д.);
- внешние (реализованные в прошивке контроллера) библиотеки - например, CmpSysExec.
Примечание:
1. для одновременного запуска нескольких экземпляров виртуального контроллера следует воспользоваться ярлыком 3S CODESYS - CODESYS Control Win V3 из меню Пуск или ярлыком с ссылкой типа
"D:\Soft\3S CODESYS 3.5 SP11 Patch5\GatewayPLC\CODESYSControlService.exe" -d
2. рабочая директория для виртуального контроллера (для CODESYS V3.5 SP11 и выше):
C:\ProgramData\CODESYS\CODESYSControlWinV3\<иденти фикатор_версии> (например, для 3.5.11.5 идентификатор = 35A42129)
Вложений: 2
COM#07. Modbus TCP - изменение сетевых настроек из кода программы
Вопрос: в приложении настроен обмен по протоколу Modbus TCP через конфигурацию в дереве проекта. Как изменить из кода сетевые настройки?
Ответ:
1. если контроллер работает в режиме Modbus TCP Slave, то достаточно изменить сетевые настройки через узел Network (доступен только в контроллерах СПК) или web-конфигуратор.
2. если контроллер работает в режиме Modbus TCP Master и необходимо менять сетевые настройки опрашиваемых slave-устройств, то следует:
На вкладке Device - Установки ПЛК установить галочку Включить диагностику для устройств.
Вложение 40731
В программе использовать следующий код:
Код:
// новый IP-адрес для слэйва
abyNewSlaveIp: ARRAY [0..3] OF BYTE := [10, 2, 11, 177];
// бит обновления настроек слэйва
xUpdate: BOOL;
// Modbus_TCP_Slave - имя нужного компонента из дерева проекта
Вложение 40732
Modbus_TCP_Slave.xConfirmError := FALSE;
IF xUpdate THEN
// тормозим опрос слэйва
Modbus_TCP_Slave.Enable := FALSE;
// проверяем, что слэйв остановлен
IF Modbus_TCP_Slave.ComState = 0 THEN
// задаем новые настройки
Modbus_TCP_Slave.UpdateCommunicationSettings(ipAddress := abyNewSlaveIp, uiPort := 502);
// включаем слэйв в работу
Modbus_TCP_Slave.xConfirmError := TRUE;
Modbus_TCP_Slave.Enable := TRUE;
xUpdate := FALSE;
END_IF
END_IF
Обратите внимание, что при перезагрузке контроллера слэйв инициализируется с настройками, заданными в компоненте, поэтому следует повторять процедуру при старте программы.
Вложений: 1
COM#08. Как настроить обмен с электросчетчиками Меркурий?
Вопрос: как настроить обмен с электросчетчиками Меркурий?
Ответ: компания ОВЕН разработала библиотеку OwenVendorProtocols для опроса тепло- и электросчетчиков:
https://owen.ru/forum/showthread.php...l=1#post350263
См. пример и видеопример опроса электросчетчика Меркурий 236 с помощью библиотеки.
Вложение 54129
VISU#08. Как использовать кириллицу для логинов/паролей?
Вопрос: хотелось бы в настройках Управления пользователями задавать русскоязычные логины и пароли. Но как их потом вводить в визуализации?
Комментарий: приведенная ниже информация актуальна только для контроллеров, программируемых в CODESYS V3.5 SP14 Patch 3 или выше.
Ответ: это можно сделать с помощью библиотеки OwenVisuDialogs.
Вложений: 3
VISU#09. Как обновить изображение в визуализации с USB- или SD-накопителя?
Вопрос: в проекте используются рецепты. Периодически они меняются, и хотелось бы вместе с этим изменять их пиктограммы без перезаливки программы. В связи с этим вопрос - можно ли обновить в проекте графические файлы с USB- или SD-накопителя?
Ответ: это возможно.
Предположим, в Пул изображений добавлена картинка с именем test.png:
Вложение 41610
Она отображается в визуализации с помощью элемента Изображение. К параметру Динамическое изображение/Версия изображения привяжем переменную типа DWORD:
Вложение 41611
Подготовим USB-накопитель, в корне которого будет находиться новое изображение с названием test.png.
Необходимо заменить старый файл (который находится в памяти контроллера в директории /visu) на новый файл с USB-накопителя.
Для этого можно воспользоваться ФБ Copy из библиотеки CAA File:
Вложение 41672
По переднему фронту переменной xCopyFile старый файл будет перезаписан на новый, после чего инкрементируется переменная версии изображения - это приведет к обновлению изображения в визуализации.
Примечание:
1. Рекомендуется выполнять копирование файла только при определении подключенного накопителя (см. узел Drives в дереве проекта).
2. В случае использования SD-накопителя при вызова ФБ Copy на входе sFileNameSource требуется указать путь /mnt/ufs/media/mmcblk0p1/test.png
3. Для контроллеров СПК1хх (без Ethernet) и СПК207 при вызова ФБ Copy на входе sFileNameDest требуется указать путь /mnt/ufs/root/CoDeSysSP_wrk/visu/test.png
PRG#14. Как выполнить фрагмент кода однократно при старте приложения?
Вопрос: как выполнить фрагмент кода однократно при старте приложения?
Ответ: пример кода:
Код:
PROGRAM PLC_PRG
VAR
xIsPlcStarted: BOOL;
END_VAR
IF NOT(xIsPlcStarted) THEN
// нужные операции
// ...
xIsPlcStarted := TRUE;
END_IF
Вложений: 3
COM#09. Как отключить устройство из опроса при обмене через конфигурацию?
Вопрос: как отключить устройство из опроса при обмене через конфигурацию?
Ответ:
1. В компоненте Device на вкладке Установки ПЛК поставьте галочку Включить диагностику для устройств.
Вложение 42500
2. Для отключения устройства из опроса в программе присвойте переменной <имя_устройства_из_дерева_проекта>.Enable значение FALSE.
Вложение 42515
3. Для возобновления опроса присвойте переменной <имя_устройства_из_дерева_проекта>.Enable значение TRUE.
4. При использовании шаблонов соответствующий канал доступен на вкладке Соотнесение входов-выходов:
Вложение 42498
Вложений: 2
VISU#10. Что делать, если в визуализации происходит "наложение" текстов?
Вопрос: что делать, если в визуализации происходит "наложение" текстов?
Вложение 42501
Ответ: у элементов, в которых наблюдается наложение, параметру Цвета/Нормальное состояние/Цвет заливки/Прозрачность следует присвоить значение 255 (полностью непрозрачный).
Вложение 42502
При использовании аварийного состояния следует выполнить аналогичную процедуру для параметра Цвета/Аварийное состояние/Цвет заливки/Прозрачность.
Вложений: 1
VISU#11. Можно ли изменить картинку "Отсутствует визуализация"?
Вопрос: можно ли изменить картинки "Отсутствует визуализация" и "Отсутствует загрузочное приложение"?
Вложение 42694
Комментарий: начиная с версии прошивки 1.2.0623.1009 это можно сделать в web-конфигураторе. См. информацию здесь.
Комментарий: приведенная ниже информация актуальна только для контроллеров c версией прошивки 1.1.0611.1056.
Ответ: это возможно.
Подключитесь к контроллеру по SSH (см. CODESYS V3.5. FAQ, п. 13.4) и выполните команду mount -o remount,rw / /
После этого подключитесь к контроллеру с помощью WinSCP (см. CODESYS V3.5. FAQ, п. 13.5) и перейдите в директорию /usr/bin/CODESYS.
Вы увидите 4 нужных вам файла (не удаляйте и не редактируйте остальные файлы - это может нарушить нормальную работу контроллера):
- stop_plc.jpg (Отсутствует загрузочное приложение, горизонтальная ориентация дисплея)
- stop_plc_v.jpg (Отсутствует загрузочное приложение, вертикальная ориентация дисплея)
- stop_visu.jpg (Отсутствует визуализация, горизонтальная ориентация дисплея)
- stop_visu_v.jpg (Отсутствует визуализация, вертикальная ориентация дисплея)
Вы можете заменить эти изображения на свои, при этом сохранив названия, формат и разрешение.
После загрузки новых картинок необходимо перезагрузить контроллер командой reboot
При перезагрузке путем выключения и подачи питания файловая система контроллера может быть повреждена, так как в данный момент она еще примонтирована в режиме read-write.
После перезагрузки по команде reboot файловая система опять будет смонтирована в режиме read-only.