Я пытаюсь отправить команду в ПЛК, который управляет электронными шлюзами через TCP-клиент. Я могу подключиться, но это появляется моя команда не читается от PLC.Отправка CMD на PLC через TCP-клиент
У меня есть следующий код:
private const string STX = "0x02";
private const string ETX = "0x03";
private const string STATUS = "0x30";
private const string OPEN = "0x31";
private const string SUM = STX + ETX;
static void Main(string[] args)
{
var tcpClient = new TcpClient();
tcpClient.Connect("192.168.1.190", 4000);
if (tcpClient.Connected)
{
var networkStream = tcpClient.GetStream();
if (networkStream.CanWrite)
{
var ADDY = "00";
var asciiEncode = new ASCIIEncoding();
byte[] b = asciiEncode.GetBytes(STX + ADDY + OPEN + ETX + SUM);
networkStream.Write(b, 0, b.Length);
byte[] b1 = new byte[100];
var k = networkStream.Read(b1, 0, 100);
for (var i = 0; i < k; i++)
{
Console.WriteLine(Convert.ToChar(b1[i]));
}
}
}
}
STATUS/OPEN являются команды, которые могут быть отправлены. ПЛК поставляется с некоторой документацией, и здесь находится picture. Я полагаю, что мой CMD ошибочен, как мне его исправить? Это мой первый раз, когда я пытаюсь подключиться и отправлять/извлекать команды из ПЛК. Любая помощь приветствуется.
«СУММА: сумма данных ниже 1 байт от STX до ETX». Вы просто добавляете STX и ETX (как строки, которые объединяют их). Контрольная сумма, конечно же, должна быть суммой всех байтов. –