MOS - Servidor OPC MODBUS e SCP-HI

O MOS é uma aplicação que cria uma interface OPC servidora compatível com o protocolo OPC DA 2.0. Ele utiliza o MplServer (MCS) para acesso aos equipamentos remotos, permitindo desta forma, que clientes OPC tenham acesso aos equipamentos conectados ao MCS. Esta aplicação é capaz de acessar diversos MCS simultâneamente, assim como o seu acesso através de diversos clientes OPCs também pode ser simultâneo. O servidor OPC da HI Tecnologia é identificado pelo nome HITecnologia.MplServer.DA. Este nome será utilizado por clientes OPCs para acesso ao servidor.

Ícone de interface

O MOS possui um ícone que foi idealizado para fornecer informações de configuração e status operacionais. Quando ativado como uma aplicação windows, o servidor roda em background com um ícone apresentado no taskbar. A figura a seguir define o símbolo utilizado para representar o MOS e identifica os módulos funcionais representados na figura.

../_images/sos_icone.jpg

Acesso aos dados do servidor OPC

Existem duas informações que devem ser conhecidas por um cliente OPC para que ele acesse dados de um Servidor OPC: o nome do servidor e o padrão de endereçamento (ou formato do namespace). O nome registrado do servidor OPC (MOS) da HI Tecnologia, conforme já mencionado anteriormente é HITecnologia.MplServer.DA. Quanto ao padrão de endereçamento do MOS, este é divulgado a partir de algumas informações presentes nos módulos MCS e MOS e é dividido em quatro níveis, possuindo o seguinte formato geral:

Servidor.Driver.Equipamento.Endereço

Exemplo:

Server_1.Driver_1000.DEV255.MW0
obs As configurações do Driver e Equipamento são dependentes do MCS acessado e podem ser definidas com o uso do MON - Monitor remoto do MCS.

Nível 1 - Servidor

Este nível é utilizado para identificar qual o servidor de comunicação (MCS) deve ser utilizado. Este servidor é identificado por um nome definido na etapa de configuração do MOS conforme apresentado na figura a seguir:

../_images/mos_config.jpg

O valor default para este nome é Server_1. Note que o nome especificado deve considerar letras maiuscúlas e minúsculas de forma diferenciada.

Nível 2 - Driver

Este nível é utilizado para identificar qual o driver a ser utilizado pelo MCS especificado. Este driver deve ter sido previamente definido pelo usuário durante o processo de criação dos Drivers do projeto do MCS. O nome de cada driver pode ser definido livremente pelo usuário conforme indicado na figura a seguir:

../_images/mos_drivers.jpg

O valor default do primeiro driver criado no MCS é Driver_1000. Note que o nome especificado deve considerar letras maiuscúlas e minúsculas de forma diferenciada.

Nível 3 - Equipamento

Este nível é utilizado para identificar o equipamento a ser acessado dentro do servidor e driver definidos nos níveis anteriores. O formato deste campo é DEVn onde:

n: especifica o endereço do equipamento a ser acessado. Este valor pode corresponder ao endereço real do equipamento ou a um endereço definido pela aplicação que, através da funcionalidade de remapeamento de endereços do MCS será convertido em um endereço do equipamento.

Nível 4 - Endereço

O último campo do endereçamento de um item OPC especifica o endereço da variável a ser obtida ou alterada.

Formato geral de endereçamento

LLL([MOD(X)])NNNNN(:DDDDD)

Onde:

  • LLL: Origem e tipo do dado (i/o, memoria, etc)
  • MOD: modificador dos dados a serem retornados
  • X: define uma função de ajuste aos dados retornados (depende to tipo de dado)
  • NNNNN: endereço inicial do dado
  • DDDDD: tamanho do vetor a ser retornado

Nota

Itens entre parenteses são opcionais

Padrão de endereçamento
Endereço MODBUS SCP-HI
IX Input Status ou discrete input N/A
MX Coil N/A
IWU e IWS Input register N/A
MWU e MWS Holding register M
MDU e MDS N/A L
MDR N/A D
MBX N/A R
Modificador
Formato Descrição Exemplo MODBUS
DWORD (DW) inteiro 32 bits MW[DW]10:2 4 holding registers a partir do endereço 10 retornando um vetor contendo dois inteiro de 32 bits
LWORD (LW) inteiro 64 bits MW[LW]10:3 12 holding registers a partir do endereço 10 retornando um vetor contendo 3 inteiros de 64 bits
REAL (DR) float 32 bits MW[DR]10:2 4 holding registers a partir do endereço 10 retornando um vetor contendo dois floats de 32 bits
LREAL (LR) float 64 bits MW[LR]10:3 12 holding registers a partir do endereço 10 retornando um vetor contendo 3 floats de 64 bits
STRING (S) string mapeada em caracteres MW[S]12:24 12 holding registers a partir do endereço 12 retornando uma string com 24 caracteres

Ordem dos bytes

Os modificadores da seção anterior podem ser utilizados junto a um número para definir a ordem com que os bytes de cada operando são considerados. A tabela a seguir define para cada tipo de modificador como a ordem dos bytes é modificada:

Ordem dos bytes
Modificador Tamanho do dado Descrição da transformação
DW1 4 bytes B1B2B3B4 passam a ser considerados como B4B3B2B1
DW2 4 bytes B1B2B3B4 passam a ser considerados como B3B4B1B2
DW3 4 bytes B1B2B3B4 passam a ser considerados como B2B1B4B3
DR1 4 bytes B1B2B3B4 passam a ser considerados como B4B3B2B1
DR2 4 bytes B1B2B3B4 passam a ser considerados como B3B4B1B2
DR3 4 bytes B1B2B3B4 passam a ser considerados como B2B1B4B3
LW1 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B8B7B6B5B4B3B2B1
LW2 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B2B1B4B3B6B5B8B7
LW3 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B7B8B5B6B3B4B1B2
LR1 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B8B7B6B5B4B3B2B1
LR2 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B2B1B4B3B6B5B8B7
LR3 8 bytes B1B2B3B4B5B6B7B8 passam a ser considerados como B7B8B5B6B3B4B1B2

A tabela a seguir apresenta os possíveis tipos de dados e respectivos exemplos de utilização:

Endereço
Tipo de dado Endereçamento Exemplo Descrição do exemplo
Bool R MBX23 Contato de endereço 23.
Small Int (inteiro 16 bits com sinal) M MW58 Memória inteira de 16 bits de endereço 58.
Long Int (inteiro 32 bits com sinal) L MD14 Memória inteira de 32 bits de endereço 14.
Float (real 32 bits) D MDR9 Memória real de endereço 9.
Vetor de Bool R MBX5:60 Vetor de contatos iniciando no endereço 5 e com o tamanho 60, ou seja, vetor de contatos entre R5 e R64.
Vetor de Small Int M MW13:10 Vetor de inteiros iniciando no endereço 13 e com o tamanho 10, ou seja, vetor de inteiros entre M13 e M22.
Vetor de Long Int L MD2:5 Vetor de inteiros de 32 bits iniciando no endereço 2 e com o tamanho 5, ou seja, vetor de inteiros entre L2 e L6.
Vetor de Float D MDR0:100 Vetor de floats iniciando no endereço 0 e com o tamanho 100, ou seja, vetor de floats entre D0 e D99.
String (mapeada em M) Mx MW[S]10:20 Vetor de 20 caracteres mapeados a partir da memória M10. Como um inteiro contém informação de 2 caracteres, para 20 caracteres,são utilizados 10 inteiros.
Exemplos de endereçamento de itens nos equipamentos
Endereço OPC Descrição
Server_1.Driver_1000.DEV3.MW0 item associado à variável M0000 do equipamento com endereço de comunicação igual a 3.
Server_1.Driver_1000.DEV15.MDR45:3 item associado às variáveis D0045, D0046 e D0047 do equipamento com endereço de comunicação igual a 15.
MyServer.ABC.DEV32.MD10:2 item associado às variáveis L0010 e L0011 do equipamento com endereço de comunicação igual a 32. O link com o MCS possui o nome MyServer e possui um driver com nome ABC.

Itens locais publicados pela camada servidora OPC

O MOS disponibiliza um conjunto de informações de suporte na forma de itens, que podem ser acessadas pelo cliente OPC para:

  • gerenciar a conexão com o MCS, verificando se o link entre o MOS e o MCS está funcional;
  • gerenciar o estado de conexão com o driver do MCS que se deseja utilizar;
  • gerenciar o estado de conexão com o equipamento a ser acessado;
  • obter informações funcionais e operacionais dos equipamentos acessados.

Itens locais associados ao servidor (Server)

Quando o MOS é ativado, este utiliza as informações de configuração para se conectar com os servidores MCS. Uma vez realizadas estas conexões, o MOS disponibiliza no seu namespace para cada servidor conectado, os itens apresentados na figura a seguir:

../_images/mos_ns_1.jpg

Conforme indicado na figura anterior, o item que representa o servidor (Server_1) possui 4 subitens distintos apresentados na tabela a seguir:

Itens locais do servidor
Item OPC Descrição Default
state Representa o estado do link entre o MOS e o MCS. Os possíveis valores deste campo são strings que estão descritas na tabela de estado do link. connected
stateCode Disponibiliza um código númerico associado ao estado do link entre o MOS e o MCS. Esta informação é identica à do item state, sendo apenas disponibilizada na forma de código numérico no lugar de texto. Consulte a tabela de estado do link para identificar os possíveis valores para este item. 7
driversList disponibiliza um vetor com os nomes de todos os drivers disponíveis no servidor (MCS) conectado. [Driver_1000]
DriverN Representa um driver identificado no MCS para acesso ao equipamento. Este item irá se repetir para cada driver definido no servidor conectado. Como o MCS suporta até 32 drivers distintos, esta lista de itens poderá se estender até este limite. Note que o nome apresentado para este item é o nome do driver que deverá ser utilizado pelo cliente OPC para acesso ao mesmo. Driver_1000

state,stateCode

A tabela a seguir identifica os códigos e textos associados aos itens stateCode e state do servidor.

Estado do link com o servidor MCS
stateCode(Inteiro) state(String) Descrição
0 Idle Link não estabelecido.
2 Error Erro durante conexão.
4 WaitingAConnection Aguardando conexão com o MCS.
7 Connected Conexão estabelecida com sucesso.
8 Access denied Usuário/senha inválidos ou versão incompatível ou categoria do servidor inválida.

DriversList

Este item OPC localizado abaixo do nivel de endereçamento Servidor contém a lista (vetor de strings) com os nomes dos drivers presentes no MCS. O tamanho deste vetor dependerá da quantidade de drivers presentes no projeto que o MCS está executando. A figura a seguir apresenta o acesso do item driversList através do SOClient. O MCS acessado contém 4 drivers de nomes: “Driver_1000”, “Driver_2000”, “Driver_3000” e “Driver_4000”.

../_images/drivers_list.jpg

Itens locais associados ao Driver

No nível Driver do padrão de endereçamento do MOS são publicados os seguintes itens:

../_images/mos_driver.jpg
Itens locais do driver
Item OPC Descrição Default
state Apresenta o texto que representa o estado de instalação do driver no MCS. Os possíveis valores deste campo são strings que estão descritas na tabela de estado do driver installed
stateCode Apresenta o código numérico que representa o estado de instalação do driver no MCS. Os possíveis valores numéricos deste campo estão descritas na tabela de estado do driver 5
DEVn Representa um equipamento acessado por um driver. O valor de n representa o endereço de comunicação do equipamento a ser acessado. Para cada equipamento registrado pelo cliente será criado um item deste tipo. criado sob demanda do cliente OPC

state,stateCode

A tabela a seguir identifica os códigos e textos associados aos itens stateCode e state do driver.

Estado do driver
stateCode(Inteiro) state(String) Descrição
0 Undefined Condição não definida.
1 Not installed Driver não instalado.
2 Installing Driver em processo de instalação.
3 Fail Falha na instalação do driver.
4 Authenticating Driver em processo de autenticação.
5 Installed Driver instalado com sucesso.

Itens locais associados ao Equipamento (Device)

No nível Device do padrão de endereçamento do MOS são publicados os seguintes itens:

../_images/mos_device.jpg
Itens locais do equipamento (Device)
Item OPC Descrição Tipo Acesso
State Apresenta o texto que representa o estado de conexão com o equipamento. Os possíveis valores deste campo são strings que estão descritas na tabela de estado do equipamento Texto Leitura
StateCode Apresenta o código numérico que representa o estado de conexão com o equipamento. Os possíveis valores numéricos deste campo estão descritos na tabela de estado do equipamento Inteiro (16_Bits) Leitura

State, StateCode

Estado de conexão com o equipamento
stateCode(Inteiro) state(String) Descrição
0 Unregistered Não registrado.
1 Connection closed Conexão com o equipamento fechada.
2 Connecting Conexão em andamento.
3 Connection active Conexão com o equipamento estabelecida com sucesso.
4 Connection in fail Falha na conexão com o equipamento.

Configuração do MOS

A configuração do MOS é realizada através do menu apresentado quando o ícone presente no tray icon é selecionado com o botão direito do mouse. Nesta condição, é apresentado o menu presente na figura a seguir:

../_images/popup_mos.jpg

Através deste menu estão disponíveis as seguintes opções de configuração.

Associa servidor de comunicação local

Quando selecionada esta opção é associado um servidor de comunicação MCS para ser ativado automaticamente quando o MOS for ativado. Se houver uma única instalação do MplServer na máquina local, o MCS associado a esta instalação é automaticamente selecionado e associado ao MOS.

Se houverem múltiplas instalações do MplServer na máquina local, ao ser selecionada esta opção será apresentada uma lista com as versões instaladas e as instalações para cada versão, permitindo ao usuário selecionar uma delas para associá-la ao MOS.

Ao selecionar um servidor para o MOS a opção do menu Associa servidor de comunicação local passa a possuir uma marca à esquerda indicando que existe um servidor local para ativação automática associado ao MOS.

obs Este comando quando ativado, não abre o servidor selecionado automaticamente. Esta funcionalidade é executada sempre que o servidor for aberto após a execução deste comando. Quando o MOS é instalado, o MCS da sua instalação é associado ao mesmo para ativação automática.

Remove ativação automática do servidor local

Quando selecionada esta opção é removida da configuração do MOS o servidor MCS para ser ativado automaticamente quando o MOS for ativado. Neste caso quando o MOS for novamente ativado, nenhum servidor de comunicação será aberto automaticamente, cabendo ao usuário do ambiente ativar o MCS na máquina local se o mesmo for necessário para utilização pelo MOS.

Ao selecionar esta opção, o menu Remove ativação automática do servidor local passa a possuir uma marca à esquerda indicando que não existe um servidor local para ativação automática associado ao MOS.

Nota

Este comando quando ativado, não fecha o servidor selecionado anteriormente. A partir da próxima ativação o MOS não mais ativa nenhum servidor de comunicação.

Parâmetros de acesso aos servidores

A configuração de acesso aos servidores do MOS pode ser feita através da interface disponibilizada clicando com o botão direito do mouse sobre o trayIcon que é aberto ao executar a aplicação, e em seguida selecionando a opção “Abre Interface”.

Ao executar este comando, a seguinte tela será apresentada:

../_images/mos_config1.jpg

Nesta interface na aba apresentada que é a de “Lista de Servidores”, é possível selecionar os servidores MCS a serem acessados, visualizar parâmetros de atividade, computador ao qual o servidor MplServer está sendo acessado e porta de acesso do servidor. Além disso, é possível adicionar ou remover servidores a serem acessados. A figura a seguir apresentará a aba de configuração de acesso ao servidor ao qual se deseja conectar. Nesta aba pode-se configurar os parâmetros de acesso através do MOS.

../_images/mos_config2.jpg
obs

Aba de configuração de acesso ao servidor

Para configurar um servidor a ser acessado pelo MOS, deve-se ter o cuidado de selecionar o item desejado na tabela de “Servidores disponíveis” na aba de “Lista de Servidores” para então, a partir deste item, abrir a aba de configuração de acesso servidor.

A tabela a seguir apresenta a descrição dos campos que podem ser configurados para acesso do MOS a um servidor MCS através da aba apresentada na imagem “Configuração de acesso ao servidor”.

Configuração de acesso ao servidor
Propriedade Descrição Default
Nome do servidor Define o nome do servidor a ser acessado. Este nome será usado pelo cliente OPC como o primeiro nível de acesso ao MOS Server_N
Nome do computador Define o nome do computador na rede (Host Name) ou IP ao qual o servidor estará em execução. No caso do IP local, o nome pode ser “localhost” ou o 127.0.0.1 que é o IP da máquina local. localhost
Reabre servidor em (ms) Define o tempo de espera para tentativa de reabertura do MCS a qual esteja acessando caso este termine por alguma razão ou a conexão seja desligada. Se o MCS estiver em outro computador, o MOS apenas tenta reconexão. Se a conexão for localhost, o MOS tenta reabertura do MCS. 15000
Conexão com servidor ativa Checkbox que define se a conexão entre o MOS e o MCS referentes ao servidor em questão será ou não habilitada. Verdadeiro
Porta Define a porta de acesso ao servidor a ser conectado. 4500
Timeout de acesso (ms) Define o tempo máximo de espera de resposta na tentativa de acesso ao servidor. 5000
Usuário Define o nome do usuário a ser utilizado no processo de autenticação com o MCS. vazio
Senha Define o nome da senha a ser utilizada no processo de autenticação com o MCS. vazio
Salva usuário e senha Salva usuário e senha para uma próxima autenticação com o MCS. Habilitado

Definição de itens para criação automática pelo MOS

Alguns clientes OPC não conseguem adicionar os itens na camada servidora OPC(MOS), se eles não existem. Nestes casos devem ser configurados todos os itens OPC que serão acessados pela aplicação cliente em um arquivo do tipo CSV. O arquivo de configuração pode ser encontrado na pasta Projects do MOS com o nome default.csv.

Exemplo de caminho para o arquivo “default.csv” no Win 7:

“C:\Users\Public\Documents\HI_tecnologia\MplServer\1.0\SRV_1\MOS\Projects”.

Cada linha do arquivo de configuração deve possuir cinco informações conforme padrão de endereçamento do MOS. Os campos possuem os seguintes dados:

Campo Descrição
Servidor Servidor de comunicação MCS para o item configurado;
Driver Driver a ser utilizado pelo MCS especificado;
End. Controlador Endereço do equipamento a ser acessado dentro do servidor e driver definidos nos campos anteriores;
Variável Endereço da variável a ser obtida ou alterada.
Tamanho Quantidade de variáveis a serem acessadas a partir do endereço especificado no campo “Variável”. Desta forma, se o valor especificado for maior que 1, o item OPC a ser criado será considerado como um vetor.

Para mais informações sobre o padrão de endereçamento do MOS, acesse o item Acesso ao servidor OPC.

Exemplos de dados de um arquivo default.csv
Servidor Driver End. Controlador Variavel Tamanho
Server_1 Driver_1000 255 MW10 17
Server_1 Driver_1000 255 MDR12 1
Server_1 Driver_1000 255 MBX0 1
Server_1 Driver_1000 255 MDR20 10

MOS - Parâmetros de linha de comando

O MOS possui um conjunto de parâmetros que podem ser informados para a aplicação na sua ativação. Estes parâmetros são denominados “Parâmetros de linha de comando”. Estes parâmetros podem ser passados para o MOS de 2 formas básicas como descrito a seguir.

Ativação do MOS via prompt de comando

Para passar parâmetros para o MOS via prompt de comandos abra uma caixa de comando, digitando a palavra cmd.exe na caixa de diálogo apresentada no menu principal do windows.

Uma vez ativado o prompt de comando, utilizando o comando CD vá para o diretório onde está localizado o aplicativo a ser executado. Uma vez no diretório do aplicativo ative o mesmo especificando o seu nome seguido dos parâmetros de linha de comando desejados conforme apresentado no exemplo a seguir:

mos.exe parm1 parm2 ...
obs Dependendo do tipo de comando a ser executado será necessário que o prompt de comandos seja aberto com privilégio de administrador. Veja a seção Registro do MOS no sistema operacional para mais informações.

Registro do MOS no sistema operacional [ -r ]

Este parâmetro especifica para a aplicação criar uma entrada no registro do windows informando sua localização no computador. Esta chave é criada em “HKEY_LOCAL_MACHINE\Software\Company\Application\V.M" onde:

Path parcial Descrição
HKEY_LOCAL_MACHINE\Software\ Entrada de registro padrão do Windows.
Company\ Especifica o nome do desenvolvedor da aplicação.
Application\ Especifica o nome do pacote de software.
V.M\ Especifica a versão “V” e revisão maior “M” do pacote de software.

Nesta chave é salvo o path completo do arquivo executável principal do pacote.

Para executar este comando, abra um prompt de comando do windows. No caso do Windows Server 2003, 2008 e Windows 7, o prompt de comando deve ser aberto com privilégio de administrador conforme indicado na figura a seguir.

../_images/cmd_parms_prompt_sos.jpg

Uma vez aberta a tela de comandos, vá para o diretório onde está instalado o arquivo MOS.exe e digite:

MOS -r

Após a execução deste comando o MOS é fechado. O resultado do processo de registro é salvo no arquivo de log de MplServer.log. Para verificar o resultado, após executar o comando abra o arquivo MplServer.log e vá para o final do arquivo onde deverá estar registrado o resultado do tratamento do comando.

Remoção do registro do MOS do sistema operacional [ -u ]

Este parâmetro especifica para a aplicação remover a entrada no registro do windows que identifica a localização da aplicação no computador. Esta chave é criada em “HKEY_LOCAL_MACHINE\Software\Company\Application\V.M" através do parâmetro -r.

Para executar este comando, abra um prompt de comando do windows. No caso do Windows Server 2003, 2008 e Windows 7, o prompt de comando deve ser aberto com privilégio de administrador conforme indicado na figura a seguir.

../_images/cmd_parms_prompt_sos.jpg

Uma vez aberta a tela de comandos, vá para o diretório onde está instalado o arquivo MOS.exe e digite:

MOS -u

Após a execução deste comando o MOS é fechado. O resultado do processo de remoção do registro é salvo no arquivo de log de MOS.log. Para verificar o resultado, após executar o comando abra o arquivo MOS.log e vá para o final do arquivo onde deverá estar registrado o resultado do tratamento do comando.

Especificação do servidor de comunicação da máquina local [ -s ]

Quando existe mais de uma instalação do servidor de comunicação (MCS) na máquina local, pode-se especificar qual deles será ativado automaticamente pelo MOS através do parâmetro -s na linha de comando.

Especifique na linha de comando, após o parâmetro -s, a chave de registro da instalação do MCS a ser utilizada para acessar e ativar o servidor. Por exemplo:

MOS -s "Software\HI tecnologia\MplServer\1.0\SRV_1\MCS"

O comando acima especifica que o MOS irá utilizar como servidor de comunicação a instalação com nome SRV_1 do pacote MCS versão 1.0.xx. Este comando força que este seja o servidor a ser utilizado nas chamadas subsequentes do MOS e, quando especificado, fecha o servidor após esta operação. Não deve ser esquecido de especificar o texto entre aspas para que seja considerado um único parâmetro.