Vitorgan
26.09.2014, 11:16
Здравствуйте, прошу помощи! Начну по порядку:
1. Подключил устройство через АС4, далее в MasterOPC Universal Modbus Server создал новый коммуникационный узел с настройками: 14514
Настройки взял из документации на прибор ( Wordовский документ в архиве)
2. Добавил устройство и прописал настройки:14515
где адрес - прописал адрес, который забивал в устройстве :008
3.Добавил тег: 14516
Во-первых вопрос: куда мне прописывать скрипт? В Устройство? или Тег?
Со скриптом еще веселее.
Хочется считать с устройства например значение датчиков. В документации описано:14517
Если я не ошибся, то это очень похоже на протокол "DCON".
Просмотрел пример реализации собственных протоколов.
Листинг 1.7 Пример реализации протокола DCON
-- функция,выполняющаяся перед чтением тегов
function OnBeforeReading()
local Addr=server.GetCurrentDeviceAddress(); --считываем адрес устройства
local send={}; --инициализируем таблицу запроса
send[1] = "#"; --оператор типа запроса
send[2] = string.format ("%02X",Addr); --преобразование адреса
--к нужному виду
send[3]="\r"; --добавление символа перевода каретки
local sendmask={"string","string","string"}; --маска запроса
local dest={}; --инициализация таблицы принятых значений
local destmask={"string:1","sdouble:8:7"}; --маска ответа
--дополнительные переменные: ошибка, количество элементов в таблице dest,
--количество принятых байт
local err,len; --объявление переменных - флаг ошибки
--и количество принятых элементов
local n=0; --количество попыток запроса
--запрос к устройству в цикле
repeat
В коде мне требуется поменять в строке send[1] = "#"; решетку на @.
В send[3]="\r"; меняю \r на 02h ( так как в протоколе устройства 3-им в запросе идет команда)
Добавляю send[4]="..."; Что в него прописывать я не понимаю...
Добавляю send[5]="*"; так как <*> - (ASCII – 2Ah)- стоповый байт кадра.
Следовательно маска у меня должна получиться такой:
local sendmask={"string","string","string","string","string"};
В правильном ли направлении я двигаюсь?
Архив на Я.диске https://yadi.sk/d/SUtApWG7bfrxn
1. Подключил устройство через АС4, далее в MasterOPC Universal Modbus Server создал новый коммуникационный узел с настройками: 14514
Настройки взял из документации на прибор ( Wordовский документ в архиве)
2. Добавил устройство и прописал настройки:14515
где адрес - прописал адрес, который забивал в устройстве :008
3.Добавил тег: 14516
Во-первых вопрос: куда мне прописывать скрипт? В Устройство? или Тег?
Со скриптом еще веселее.
Хочется считать с устройства например значение датчиков. В документации описано:14517
Если я не ошибся, то это очень похоже на протокол "DCON".
Просмотрел пример реализации собственных протоколов.
Листинг 1.7 Пример реализации протокола DCON
-- функция,выполняющаяся перед чтением тегов
function OnBeforeReading()
local Addr=server.GetCurrentDeviceAddress(); --считываем адрес устройства
local send={}; --инициализируем таблицу запроса
send[1] = "#"; --оператор типа запроса
send[2] = string.format ("%02X",Addr); --преобразование адреса
--к нужному виду
send[3]="\r"; --добавление символа перевода каретки
local sendmask={"string","string","string"}; --маска запроса
local dest={}; --инициализация таблицы принятых значений
local destmask={"string:1","sdouble:8:7"}; --маска ответа
--дополнительные переменные: ошибка, количество элементов в таблице dest,
--количество принятых байт
local err,len; --объявление переменных - флаг ошибки
--и количество принятых элементов
local n=0; --количество попыток запроса
--запрос к устройству в цикле
repeat
В коде мне требуется поменять в строке send[1] = "#"; решетку на @.
В send[3]="\r"; меняю \r на 02h ( так как в протоколе устройства 3-им в запросе идет команда)
Добавляю send[4]="..."; Что в него прописывать я не понимаю...
Добавляю send[5]="*"; так как <*> - (ASCII – 2Ah)- стоповый байт кадра.
Следовательно маска у меня должна получиться такой:
local sendmask={"string","string","string","string","string"};
В правильном ли направлении я двигаюсь?
Архив на Я.диске https://yadi.sk/d/SUtApWG7bfrxn