PDA

Просмотр полной версии : MULTI-PROTOCOL MASTEROPC SERVER



oleg1821
03.06.2016, 06:43
Проблема с MULTI-PROTOCOL MASTEROPC SERVER, подлючил к нему плагин OPC DA opc и к нему подключил opc сервер логика, переменные опрашиваются, а с удаленного ПК с masterscada 3.7 не удается загрузить узлы, при отключении опроса Opc выдается ошибка division by zero и только через диспетчер задач можно выгрузить сервер.

SCADAMaster
03.06.2016, 08:46
Вы уже задавали этот вопрос дважды по электронной почте - мы вам ответили.

oleg1821
23.09.2016, 11:27
А скрипты исключили из этого OPC сервера? Бывают очень полезны.

SCADAMaster
23.09.2016, 11:37
Нет, они в виде отдельного плагина Script.

ordmun
17.04.2018, 06:38
Добрый день, написал скрипт для опроса прибора контроля термоподвесок элеватора.
function OnRead()
local send={}; --массив отправляемых чисел
table.insert(send,0x02);
table.insert(send,0x47);
table.insert(send,0x53);
table.insert(send,0x54);
table.insert(send,0x41);
table.insert(send,0x04);
local sendmask={"byte","byte","byte","byte","byte","byte"}; --маска отправляемого запроса
local dest={}; --массив полученных чисел
local destmask={"byte","byte","byte","byte","byte","byte","byte","byte","byte","byte"}; --маска принимаемого запроса
local err,len;
err,dest,len=server.SendAndReceiveDataByMask(0,6,s endmask,send,destmask,200);
local F=dest[7];
server.WriteCurrentTag(F,OPC_QUALITY_GOOD );
end
При запуске запрос уходит:
36669
Ответа нет.
Делаю запрос через Terminal2:
36670
Ответ есть. Что не правильно делаю?

SCADAMaster
17.04.2018, 08:03
Скорость, четность, стоп-биты правильные?

ordmun
17.04.2018, 08:20
Настройки
36672
36673
36673
При запуске в системных сообщениях пишет Порт уже открыт. Это важно? Обычно вроде должен писать порт 5 открыт.

SCADAMaster
17.04.2018, 08:53
Да, это значит что порт уже занят.
Вы терминал свой закрыли?

ordmun
17.04.2018, 13:04
Да терминал закрываю. В диспетчере устройств отключаю-включаю преобразователь 232-usb и все равно пишет порт уже открыт.

SCADAMaster
17.04.2018, 13:17
Компьютер пробовали перезагружать?

Пришлите лог обмена с устройством. Для этого в свойствах сервера включите запись журнала и всех его событий, размер лога задайте равным 10000. Запустите режим исполнения и воспроизведите ошибку. Лог пишется в папку:
c:\ProgramData\InSAT\Multi-Protocol MasterOPC Server\SERVERLOGS\
Лог заархивируйте и вышлите нам, также пришлите вашу конфигурацию ОРС сервера.

ordmun
17.04.2018, 14:15
Да компьютер перегружал, как и само устройство. На какую почту отправить?

SCADAMaster
17.04.2018, 15:32
support(собка)insat.ru

Алекс123
31.10.2018, 11:15
Как правильно написать скрипт для записи значения в Tag без запроса. значения передаю через TErminal v 1.9

SCADAMaster
31.10.2018, 11:25
Не совсем понятно, что именно вам нужно сделать?
Опишите задачу подробнее

Алекс123
31.10.2018, 11:58
Имеется считыватель который передает пакет данных . работает по RS 485. он не опрашиваемый просто посылает пакет данных после считывания информации с карточки. так вот мне нужно этот пакет данных записывать в tag. Но пока просто научиться бы записывать в tag данный отправляемые через terminal.

Алекс123
31.10.2018, 12:16
[QUOTE=SCADAMaster;291290]Не совсем понятно, что именно вам нужно сделать?
Опишите задачу подробнее[/QUOT
Передаваемое значение через терминал приходил в SCRIPT. 39542
Как мне это значение записать с помощью скрипта в Tag

SCADAMaster
31.10.2018, 12:28
Добавляете узел типа COM - Master. Добавляете устройство. Период опроса поставьте 100 мс.
Затем с помощью функции server.SendAndReceiveData или server.SendAndReceiveDataByMask настроенных только на прием, ловите пакеты, и анализируете. Лучше размещать такой код в скрипте устройства и обращаться к тегу потом.
Примерно так:

function OnBeforeReading()
--удержание сигнала "Есть данные"
if N>=0 then
N=N+1;
if N>delay then
N=-1;
--сброс сигнала по окончанию удержания
server.WriteTagByRelativeName("ЕстьДанные",false,OPC_QUALITY_GOOD );
end;
end;
--получаем данные из порта
local err,len;
err,deststring,len = server.SendAndReceiveData("",0,250)
--если ошибки нет, и есть данные
if err==false then
server.WriteTagByRelativeName("Значение",deststring,OPC_QUALITY_GOOD );
server.WriteTagByRelativeName("ЕстьДанные",true,OPC_QUALITY_GOOD );
N=0;
end
end;

Алекс123
31.10.2018, 14:42
39543
39544
39545
Данные приходят но ни куда не записываются. Какой тип переменных лучше использовать? и не понял что за Сom master.
Создавал такой
39546

SCADAMaster
31.10.2018, 15:01
Не COM-Slave, а COM-Master

SCADAMaster
13.11.2018, 07:38
А в чем вопрос?
Но вообще конечно код вызывает сомнения. Почему то включена контрольная сумма Modbus, маска и данные запроса не прописаны, но количество передаваемых элементов - 1...