Comandos no Protocolo IEC 870-5-101 e 104 Escravo

<< Clique para Mostrar o Sumário >>

 

Comandos no Protocolo IEC 870-5-101 e 104 Escravo

Tag Bloco de tratamento de comandos de seleção ou execução nos protocolos IEC 870-5-101 e 104 Escravo

Opção

Descrição

Protocolos

IEC 870-5-101 Escravo Não-Balanceado, IEC 870-5-101 Escravo Balanceado e IEC 870-5-104 Escravo

Parâmetros Numéricos

B1: Número da estação, B2: 4 (quatro, leitura de dados da memória cache), B3: ASDU (de 45 a 51 e de 58 a 64, consulte a tabela a seguir) e B4: Endereço do objeto

Parâmetros no formato String

Não disponível

Tamanho do Bloco

Quatro Elementos

Escrita

Envia para o Mestre a resposta do comando Select ou Execute

Leitura

Recebe os comandos Select ou Execute enviados pelo Mestre

 

O significados dos valores possíveis para o parâmetro B3 (ASDUs) estão descritos na tabela a seguir.

Valores possíveis para ASDUs

Valor

Nome

Descrição

45

C_SC_NA_1

Single command

46

C_DC_NA_1

Double command

47

C_RC_NA_1

Regulating step command

48

C_SE_NA_1

Set point command, normalized value

49

C_SE_NB_1

Set point command, scaled value

50

C_SE_NC_1

Set point command, short floating point number

51

C_BO_NA_1

Bitstream of 32 bits

58

C_SC_TA_1

Single command with 7-octet timestamp

59

C_DC_TA_1

Double command with 7-octet timestamp

60

C_RC_TA_1

Regulating step command with 7-octet timestamp

61

C_SE_TA_1

Set point command, normalized value with 7-octet timestamp

62

C_SE_TB_1

Set point command, scaled value with 7-octet timestamp

63

C_SE_TC_1

Set point command, short floating point number with 7-octet timestamp

64

C_BO_TA_1

Bitstream of 32 bits with 7-octet timestamp

 

Quando um Driver recebe um dos comandos descritos anteriormente, este Tag Bloco recebe um bloco com informações sobre o comando. No evento OnRead deste Tag Bloco, a aplicação deve tratar a informação recebida, alterando os Elementos de Bloco necessários e escrevendo o bloco de volta para o Driver. Desta forma o Driver pode enviar uma resposta ao Mestre. Os Elementos deste Tag Bloco são os seguintes:

Elemento 0: Valor do comando, dependendo do tipo de comando

Elemento 1: Cause of Transmission, 6: Activate ou 8: Deactivate

Elemento 2: 1: Select ou 0: Execute

Elemento 3: Quality of Command, 0: Undefined, 1: Short pulse duration, 2: Long duration pulse ou 3: Persistent output

 

Quando uma indicação de comando de ativação é recebida, ou seja, o Elemento 1 (um) igual a 6 (seis), a aplicação deve responder imediatamente com um comando ACTCON (Activation Confirmation) positivo se o comando pode prosseguir, ou seja, o Elemento 1 (um) igual a 7 (sete), ou um comando ACTCON negativo se o comando não pode prosseguir, ou seja, o Elemento 1 (um) igual a 135.

Se um comando ACTCON positivo é enviado, a aplicação deve então verificar o Elemento 2 (dois, Select ou Execute) e executar a ação apropriada.

Se um comando Execute é requisitado, a aplicação deve executar o comando e, depois de terminado, enviar um comando ACTTERM (Activation Termination) para indicar que o comando foi executado, ou seja, o Elemento 1 (um) igual a 10.

O exemplo a seguir contém um evento OnRead para este Tag Bloco.

' CMDIndication é um Tag Bloco de tamanho 4
' Os parâmetros deste Tag são os seguintes
' AdviseType     = 0 (AlwaysInAdvise)
' AllowRead      = True
' AllowWrite     = False
' B1             = <endereço da estação>
' B2             = 4
' B3             = 45 a 51, 58 a 64
' B4             = <endereço do ponto de comando>
' EnableDeadband = False
' Size           = 4
 
Sub CMDIndication_OnRead()
  Dim CMD, SE, COT, QU
  CMD = Item(1).Value ' Valor do comando
  COT = Item(2).Value ' COT
  SE  = Item(3).Value ' 1=Select, 0=Execute
  QU  = Item(4).Value ' Quality of command
 
  Select Case COT
    Case 6
      ' ACT(6) deve ser respondido com ACTCON(7)
      WriteEx Array(CMD, 7, SE, QU), TimeStamp
      If SE = 0 Then
        ' Execute aqui o comando, provavelmente
        ' uma escrita em outro Driver
        ' Envia um ACTTERM(10)
        WriteEx Array(CMD, 10, SE, QU), TimeStamp
      End If
    Case 8
      ' DEACT(8) deve ser respondido com DEACTCON(9)
      WriteEx Array(CMD, 9, SE, QU), TimeStamp
  End Select
End Sub

Esta página foi útil?