简单介绍:
项目上需要与多家公司做接口对接。我们提供接口的有,其他公司提供的接口也有。所有的接口全部对接完了,遇到一个非常棘手的问题,需要获取甲方船厂设备上的状态,就给了一个文档,文档上写了IP、端口、协议、一些地址,没有API文档,拿到手上一面懵逼,这怎么玩儿。。。。
文档如下:
百度百科:
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
看上去好像跟Socket差不多,本身又不是工业领域出身的,大概知道是一种工业领域通用的一套通信标准,下面直接上DEMO示例
第一步:下载类库
使用的类库已上传百度云盘:
链接:https://pan.baidu.com/s/1JtaGC0r17jjnQPMhkMKRJg
提取码:wagl
第二步:引入类库
第三步:引入命名空间
1 using HslCommunication.ModBus; 2 using HslCommunication;
第四步:初始化对象
1 初始化方式一、 2 private ModBusTcpClient busTcpClient = new ModBusTcpClient("192.168.1.195", 502, 0xFF); // ip、端口、站号(默认为0xFF) 3 4 初始化方式二、 5 private ModBusTcpClient busTcpClient = new ModBusTcpClient("192.168.1.195"); // 端口号502,站号0
第五步:开启连接
1 开启连接: 2 busTcpClient.ConnectServer(); 3 4 关闭连接: 5 busTcpClient.ConnectClose( );
第六步:读写操作
1 private void userButton30_Click(object sender, EventArgs e) 2 { 3 // 读取操作 4 bool coil100 = busTcpClient.ReadCoil("100").Content; // 读取线圈100的通断 5 short short100 = busTcpClient.ReadInt16("100").Content; // 读取寄存器100的short值 6 ushort ushort100 = busTcpClient.ReadUInt16("100").Content; // 读取寄存器100的ushort值 7 int int100 = busTcpClient.ReadInt32("100").Content; // 读取寄存器100-101的int值 8 uint uint100 = busTcpCli