<< Clique para Mostrar o Sumário >>
Estabelecendo uma Sessão com um EPM Server |
Conforme o esquema apresentado anteriormente, a primeira etapa para se comunicar com um EPM Server é estabelecer uma sessão de comunicação, sessão esta que segue o padrão OPC UA. Seguir o padrão OPC UA significa basicamente uma conexão segura (para tráfego em redes hostis) e ter à disposição mecanismos de consulta e escrita de valores segundo as definições do padrão, ou seja, consultas a dados brutos (valores exatamente como foram armazenados), agregações (máximos, mínimos, médias, tempos em determinados estados, etc.), consulta a anotações em dados históricos de variáveis, etc.
Ao instalar o EPM SDK em Linguagem Python, toda a parte relacionada à troca de informações e dados com um EPM Server via OPC UA já está encapsulada de maneira a tornar a sua utilização o mais simples possível. Desta forma, ao invés de preocupar-se em localizar os nodos do OPC UA para consultar, informe o nome da variável a comunicar e a qual EPM Server esta variável pertence. A partir daí todas as operações passam a ser triviais, apenas informando o nome da variável (já no ambiente Python) e a operação a realizar.
O exemplo a seguir mostra como estabelecer uma sessão com um EPM Server instalado em um computador hipotético remoto com nome EPMSvr01, utilizando o usuário e senha também hipotéticos user01 e pass01.
# nome (ou IP) do computador onde está executando o EPM Server
SrvEntryName = 'EPMSvr01'
# nome do usuário para a sessão
UserAuthName = 'user01'
# senha do usuário
UserAuthPass = 'pass01'
ConnectionArgs = (None, None, SrvEntryName, UserAuthName, UserAuthPass,)
try:
srvConnection = epmcomm.epmConnect(*ConnectionArgs)
print('Succeeded!')
# classe para tratamento de exceções do EPM SDK em Python
except epmsdk.EpmException as ex:
print('Connection error: {}'.format(epmsdk.EpmExceptionCode[ex.Code]))
print('Details: {!r}'.format(ex))
raw_input('Program should stop now!')
exit(1)
Caso não ocorra uma exceção (servidor indisponível, usuário ou senha inválidos, etc.) a variável srvConnection contém o objeto de conexão com o EPM Server para o usuário informado. Esta variável é posteriormente utilizada para consultas e escritas no servidor, bem como para encerrar a sessão explicitamente através da função del do Python passando a sessão como argumento, ou quando sair de seu escopo, liberando a licença EPM Client associada.
Não é obrigatória a utilização do tratamento de exceções para se estabelecer uma sessão com um EPM Server, porém esta é uma boa prática de programação recomendada.
Ao invés de utilizar a saída no console para informar o andamento do processamento, recomenda-se para aplicações maiores a utilização do módulo logging da linguagem Python, que envia para um arquivo de log todas as informações necessárias para posterior análise.
Alternativamente à execução da função del do Python para explicitamente encerrar uma conexão com o EPM Server, pode-se atribuir o valor None à variável que contém a conexão para que esta seja fechada.
Deve-se ter especial atenção à conexão com um EPM Server, uma vez que ao sair do escopo da sua criação ela é automaticamente encerrada, porém esta operação pode não ser instantânea devido aos mecanismos internos do Python de controle de memória alocada.