-
引用-添加引用-
HslCommunication.dll
-
ModBus
组件所有的功能类都在HslCommunication.ModBus
命名空间,所以再使用之前先添加
using HslCommunication.ModBus;
using HslCommunication;
- 在使用读写功能之前必须先进行实例化:
private ModbusTcpNet busTcpClient = new ModbusTcpNet("192.168.3.45", 502, 0x01); // 站号1
上面的实例化指定了服务器的IP地址,端口号(一般都是502),以及自己的站号,允许设置为0-255,后面的两个参数有默认值,在实例化的时候可以省略。
private ModbusTcpNet busTcpClient = new ModbusTcpNet("192.168.3.45"); // 端口号502,站号1
4.
模拟器模拟的是西门子PLC 有四种类型
地址以0开头的是可读可写线圈
地址以1开头的是只读线圈
地址以4开头的是可读可写寄存器(string/float/int/ushort/short等都可以放在这里面)
地址以3开头的是只读寄存器
我们读取的时候只看后四位0001,就是1,但是库里面是从0开始读的,所以对应的就要减一
- 读取寄存器的一个值
private void button1_Click(object sender, EventArgs e)
{
bool coil100 = busTcpClient.ReadCoil("0").Content; // 读取线圈1的通断
int int100 = busTcpClient.ReadInt32("0").Content; // 读取寄存器1-2的int值
float float100 = busTcpClient.ReadFloat("0").Content; // 读取寄存器1-2的float值
double double100 = busTcpClient.ReadDouble("0").Content; // 读取寄存器1-3的double值
}
- 读取寄存器的一组值(一组线圈)(一组float值)
private void button3_Click(object sender, EventArgs e)
{
//读取地址为0,长度为3的线圈数量
OperateResult<bool[]> read = busTcpClient.ReadCoil("0", 3);
if (read.IsSuccess)
{
for (int i = 0; i < read.Content.Length; i++)
{
Console.WriteLine(read.Content[i]);
}
}
else
{
MessageBox.Show(read.ToMessageShowString());
}
//读取(一组)寄存器数据
OperateResult<float[]> result = busTcpClient.ReadFloat("0", 4);
if (result.IsSuccess)
{
//Console.WriteLine(result.Content[0]);
//Console.WriteLine(result.Content[1]);
//Console.WriteLine(result.Content[2]);
for (int i = 0; i < result.Content.Length; i++)
{
Console.WriteLine(result.Content[i]);
}
}
else
{
MessageBox.Show(result.ToMessageShowString());
}
}
- 写入一个(线圈)(寄存器)
private void button2_Click(object sender, EventArgs e)
{
busTcpClient.WriteCoil("0", true);// 写入线圈1为通
busTcpClient.Write("0", 123.456);// 写入寄存器1-2为123.456
}
- 批量写入一组(线圈)(寄存器)
private void button9_Click(object sender, EventArgs e)
{
//写入一组线圈
bool[] value = new bool[] { true, true, false, true, false };
busTcpClient.WriteCoil("0", value);
}
private void button10_Click(object sender, EventArgs e)
{
//写入一组寄存器
float[] value = new float[] {1.1F, 1.2F, 1.3F, 1.4F, 1.5F };
busTcpClient.Write("0", value);
}
-