Основной функционал класса дописан. Основной функционал бота тоже готов.
Уже, в общем, можно пользоваться.
В любом jabber(xmpp) клиенте в ростер добавляется jid бота, который выполняет команды по чтению/записи переменных по Modbus/TCP. (Можно не добавлять в ростер, а зайти в конфу и работать публично
)
Доступный на текущий момент функционал бота:
- запуск рабочей сесии
- установка IP для связи
- задание имени файла карты переменных
- задание формата файла карты переменных (про форматы ниже)
- чтение текущей конфигурации
Код:
Текущая конфигурация:
Plc_IP = 123.123.123.123
mapfile = Pixel-Standart.map
varformat = Logix
mapdir = resource
Plc_Port = 502
Unit = 1
- чтение одной переменной
- чтение всех переменных
- запись одной переменной
- стоп рабочей сессии
***Ничего никуда устанавливать/настраивать не надо
Ну кроме jabber-клиента.
Карты переменных:
Пока карты пременных считываются из файлов, которые я ручками кладу на сервер.
Как вариант - сделаю возможность загрузки.
Сейчас доступны два формата - "2Gi" и "Logix".
2Gi - формат файла load_files.map из SMH 2Gi
Logix - файл карты переменных создаваемых SMLogix-ом.
Позже добавлю свой формат для самостоятельной подготовки файла карты переменных.
Планирую добавить возможность формировать карту переменных в "интерактивном общении" с ботом и ее сохранение на сервере с привязкой к создавшему.
Можно добавить чтение форматов таких же готовых файлов устройств других производителей, если такие существуют.
-- Функционал бота будет расширяться.
--- Если кому, вдруг, интересно будет попробовать - пишите в личку
Естесственно, работать будет с любым устройством Modbus/TCP, не только с Сегнетиксами
P.S. Идея замутить это всё навеяна этим -
http://forum.segnetics.com/showpost....2&postcount=51
P.P.S Образчик работы
Код:
vis (22:31:55 5/02/2016)
2-конфиг
L-Test (22:31:55 5/02/2016)
Текущая конфигурация:
Plc_IP = хх.ххх.ххх.хх
mapfile = Pixel-Standart.map
varformat = Logix
mapdir = resource
Plc_Port = 502
Unit = 1
vis (23:00:51 5/02/2016)
2-читать SCo_Уставка_t
L-Test (23:00:51 5/02/2016)
SCo_Уставка_t = 30.0
vis (23:01:08 5/02/2016)
2-запись SCo_Уставка_t 25
L-Test (23:01:08 5/02/2016)
Записываю SCo_Уставка_t = 25
L-Test (23:01:11 5/02/2016)
Ошибка записи переменной
vis (23:01:32 5/02/2016)
2-запись SCi_Уставка_t 25
L-Test (23:01:32 5/02/2016)
Записываю SCi_Уставка_t = 25
L-Test (23:01:35 5/02/2016)
Переменная записана успешно
vis (23:01:43 5/02/2016)
2-читать SCo_Уставка_t
L-Test (23:01:43 5/02/2016)
SCo_Уставка_t = 25.0
vis (23:01:52 5/02/2016)
2-читатьвсе
L-Test (23:02:00 5/02/2016)
ATi_R0 = 0
ATi_R1 = 0
ATi_R2 = 0
ATi_R3 = 0
ATi_R4 = 0
ATi_U(р) АВент = 0
ATi_U(р) ВоКал = 0
ATi_U(р) Охл = 0
ATi_U(р) Рек1 = 0
ATi_U(р) Рек2 = 0
ATi_U(р) Увл = 0
ATi_U(р) ЭКал = 0
ATi_Код (CPU) = 0
ATi_Контроль связи = 0
DOUT - ЖПСигнал на открывание = False
DOUT - РаботаЛампа 'Работа' = False
F5 SMH 2G = 0
F6 SMH 2G = 0
Left SMH 2G = 0
SCADA = 791168
SCi_Блокировка = 0
SCi_Дист/Мест = 0
SCi_Пуск = 0
SCi_Резерв_B1 = 0
SCi_Резерв_B2 = 0
SCi_Резерв_B3 = 0
SCi_Резерв_B4 = 0
SCi_Резерв_B5 = 0
...
....
.....