Envie o comando FINS de C # para PLC

Tento enviarBARBATANA comanda através do UDP do PC (C # .NET) para o módulo Ethernet do PLC (Omron), mas não está recebendo respostas do PLC e não tem idéia de onde posso iniciar a solução de problema

@PLC possui uma lógica de escada muito simples, como segue: SeDM100 tem o valor de#0001, em seguida, dispara na saída101.00. (Aqui, "Trigger" é apenas um nome de símbolo para a área de memóriaD100 e "Saída" é um símbolo para a saída101.00)

Então escrevi um pedaço de C # que executa o comando FINS de "Memory Area Write" que possui o código de comando01 02, seguido do endereço inicial, número de itens a serem gravados e os dados. O código C # deve escrever um valor de #0001 para PLC'sD100 área para ativar em101.00.

[código excluído que não funciona] ..

A saída101.00 não foi acionado, nem recebi nenhuma exceção. Verifiquei o seguinte:

Port, nó e endereço configurados corretamente, conforme confirmado por "Work Online" no CX-Programmer. Também tenho ping em cada IP para garantir que os nós estejam conectadoOUdpClient código @ é válido desde que escrevi um código servidor / cliente muito simples que envia e recebe pacotes com êxitLadder logic não tem nenhum problema. Transferi a escada para o PLC e testei pelo Work Online no modo Monitor e definiD100 um valor manualment

Suspeito que haja erro nofins_cmnd array, mas como visto no meu código, comentei o mais detalhadamente possível sobre cada valor; Eu não posso me encontrar perdendo nada. Suspeito que talvez não esteja analisando o hexadecimal corretamente, mas, novamente, não tenho exceção para me orienta

Não faço ideia de onde e como posso solucionar problemas. Espero que alguém aqui comFINS experiência em programação ou PLC pode me oferecer alguma ajud

[RESPONDA
Obrigado Porge pelo link - que me descobriu o problema. Depois de algumas trilhas, finalmente funcione. Veja abaixo o código de funcionamento.

string SERV_IP_ADDR = "192.168.250.1";
const int FINS_UDP_PORT = 9600;

byte[] sendPacket = new byte[]
{
    // Full UDP packet: 80 00 02 00 00 00 00 05 00 19 01 02 82 00 64 00 00 01 00 01

    // Header
    0x80, //0.(ICF) Display frame information: 1000 0001
    0x00, //1.(RSV) Reserved by system: (hex)00
    0x02, //2.(GCT) Permissible number of gateways: (hex)02
    0x00, //3.(DNA) Destination network address: (hex)00, local network
    0x00, //4.(DA1) Destination node address: (hex)00, local PLC unit
    0x00, //5.(DA2) Destination unit address: (hex)00, PLC
    0x00, //6.(SNA) Source network address: (hex)00, local network
    0x05, //7.(SA1) Source node address: (hex)05, PC's IP is 192.168.250.5
    0x00, //8.(SA2) Source unit address: (hex)00, PC only has one ethernet
    0x19, //9.(SID) Service ID: just give a random number 19

    // Command
    0x01, //10.(MRC) Main request code: 01, memory area write
    0x02, //11.(SRC) Sub-request code: 02, memory area write

    // PLC Memory Area
    0x82, //12.Memory area code (1 byte): 82(DM)

    // Address information
    0x00, //13.Write start address (2 bytes): D100
    0x64, 
    0x00, //15.Bit address (1 byte): Default 0
    0x00, //16.No. of items (2 bytes): only one address which is D100
    0x01,

    // Write Data
    0x00, //18.Data to write (2 bytes): value is 1
    0x01,
};  

UdpClient client = new UdpClient(); //create a UdpClient instance

try
{
    client.Send(sendPacket, sendPacket.Length, SERV_IP_ADDR, FINS_UDP_PORT);
}
catch (SocketException se)
{
    Console.WriteLine(se.ErrorCode + ": " + se.Message);
}

client.Close();

questionAnswers(2)

yourAnswerToTheQuestion