You are on page 1of 4

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Sockets;
using System.Threading;
using System.Net;

namespace TNTDHCN
{
class Program
{
static void Main(string[] args)
{
TcpClient Client_1 = new TcpClient();
Client_1.Connect("192.168.30.100", 502);
NetworkStream stream = Client_1.GetStream();
int Val;
byte[] mg = new byte[12];
byte[] dataR = new byte[9 + 3 * 2];
byte[] dataRe = new byte[9 + 4];
byte[] data = new byte[4];
while (true)
{
mg = ReadReg(1, 17, 40021, 3);
stream.Write(mg, 0, mg.Length);
stream.Read(dataR, 0, dataR.Length);
Console.Clear();
Console.WriteLine("Gia tri MW20: {0}", (dataR[9]*256+dataR[10]))
;
Console.WriteLine("Gia tri MW22: {0}", (dataR[13] * 256 + dataR[
14]));
if ((dataR[13] * 256 + dataR[14]) < (dataR[9] * 256 + dataR[10])
)
{
mg = WriteCoil(1, 17, 2, true);
}
else{
mg = WriteCoil(1, 17, 2, false);
}
stream.Write(mg, 0, mg.Length);
stream.Read(dataR, 0, dataR.Length);
Thread.Sleep(500);
Console.Write("Nhap MW24= ");
string s = Console.ReadLine();
Val = Convert.ToInt16(s);
//Val = Int16.Parse(Console.ReadLine());
mg = WriteReg(1, 17, 40025, Val);
stream.Write(mg, 0, mg.Length);
stream.Read(dataR, 0, dataR.Length);
//
Thread.Sleep(1500);
mg = ReadReg(1, 17, 40035, 2);
stream.Write(mg, 0, mg.Length);
stream.Read(dataRe, 0, dataRe.Length);
data[0] = dataRe[10];
data[1] = dataRe[9];
data[2] = dataRe[12];
data[3] = dataRe[11];
float so = BitConverter.ToSingle(data, 0);
Console.WriteLine("MF34= {0}", so);
//
Console.Write("Nhap so thuc: ");
float giatri;
string ss = Console.ReadLine();
giatri = Convert.ToSingle(ss);
data = BitConverter.GetBytes(giatri);
int low;
int hight;
low = data[1] * 256 + data[0];
hight = data[3] * 256 + data[2];
mg = WriteReg(1, 17, 40041, low);
stream.Write(mg, 0, mg.Length);
stream.Read(dataRe, 0, dataRe.Length);
mg = WriteReg(1, 17, 40042, hight);
stream.Write(mg, 0, mg.Length);
stream.Read(dataRe, 0, dataRe.Length);
Console.ReadKey();
};
}
static byte[] ReadReg(int TransID, byte SID, int Address, int NoReg)
{
byte[] mg = new byte[12];
mg[0] = (byte)(TransID >> 8);
mg[1] = (byte)TransID;
mg[2] = 0x00;
mg[3] = 0x00;
mg[4] = 0x00;
mg[5] = 0x06;
mg[6] = SID;
mg[7] = 0x03;
mg[8] = (byte)((Address - 40001) >> 8);
mg[9] = (byte)(Address - 40001);
mg[10] = (byte)((NoReg) >> 8);
mg[11] = (byte)(NoReg);
return mg;
}
static byte[] WriteReg(int TransID, byte SID, int Address, int Value)
{
byte[] mg = new byte[12];
mg[0] = (byte)(TransID >> 8);
mg[1] = (byte)TransID;
mg[2] = 0x00;
mg[3] = 0x00;
mg[4] = 0x00;
mg[5] = 0x06;
mg[6] = SID;
mg[7] = 0x06;
mg[8] = (byte)((Address - 40001) >> 8);
mg[9] = (byte)(Address - 40001);
mg[10] = (byte)((Value) >> 8);
mg[11] = (byte)(Value);
return mg;
}
static byte[] ReadCoil(int TransID, byte SID, int Address, int NoCoil)
{
byte[] mg = new byte[12];
mg[0] = (byte)(TransID >> 8);
mg[1] = (byte)TransID;
mg[2] = 0x00;
mg[3] = 0x00;
mg[4] = 0x00;
mg[5] = 0x06;
mg[6] = SID;
mg[7] = 0x01;
mg[8] = (byte)((Address - 00001) >> 8);
mg[9] = (byte)(Address - 00001);
mg[10] = (byte)((NoCoil) >> 8);
mg[11] = (byte)(NoCoil);
return mg;
}
// static byte[] WriteCoil(int TransID, byte SlaveID, int Address, bool
Set)
//{
// byte[] datas = new byte[12];
// datas[0] = 0;
// datas[1] = 1;
// datas[2] = 0;
// datas[3] = 0;
// datas[4] = 0;
// datas[5] = 6;
// datas[6] = SlaveID;
// datas[7] = 5;
// datas[8] = (byte)((Address - 1) >> 8);
// datas[9] = (byte)((Address - 1) & 0xFF);
// if (Set) datas[10] = 0xFF;
// else datas[10] = 0;
// datas[11] = 0;
// return datas;
//}
static byte[] WriteCoil(int TransID, byte SID, int Address, bool Value)
{
byte[] mg = new byte[12];
mg[0] = (byte)(TransID >> 8);
mg[1] = (byte)TransID;
mg[2] = 0x00;
mg[3] = 0x00;
mg[4] = 0x00;
mg[5] = 0x06;
mg[6] = SID;
mg[7] = 0x05;
mg[8] = (byte)((Address - 00001) >> 8);
mg[9] = (byte)(Address - 00001);
if (Value) mg[10] = 0xFF;
else mg[10] = 0x00;
// mg[10] = (byte)((Value));
mg[11] = 0x00;
return mg;
}
}
}

You might also like