1、通讯库介绍
mcprotocol 是一个基于 Node.js 的三菱 PLC MC 协议通信库,具有以下特点:
支持多种三菱 PLC MC 协议的设备,如 FX3U、Q03UDECPU、QJ71E71 等。
支持多种功能码和数据类型,如读取线圈(M)、读取寄存器(D)、写入寄存器(D)、读取扩展寄存器(D*)、读取位寄存器(X/Y)、读取字寄存器(W)等。
支持多种通信方式,如 TCP、UDP、串口等。
代码结构清晰,易于扩展和二次开发。支持 Promise、async/await 等语法糖,提高开发效率。
mcprotocol 的主要功能是实现与三菱 PLC MC 协议设备之间的数据交互,例如读取设备上的某个寄存器的值,并将其传递给 Node.js 应用程序。在使用该库进行开发时,需要先连接到 PLC 设备,然后使用库提供的接口进行数据读写操作。
通讯协议库是一种软件开发工具,用于实现PLC与其他设备之间的通讯功能。三菱PLC通讯协议库是一款专门为三菱PLC开发的通讯协议库,可以实现PLC与上位机、HMI、SCADA系统等设备之间的数据交换和通讯。
三菱PLC通讯协议库具有以下主要功能:
(1)数据读写功能:可以实现对PLC内部数据的读写操作,包括读取PLC内部寄存器的值、写入数据到PLC内部寄存器等。
(2)报警处理功能:可以实时监测PLC的报警信息,并将报警信息传输给上位机或其他设备进行处理。
(3)远程监控功能:可以实现对PLC的远程监控和控制,可以通过上位机或HMI实时查看和操作PLC的运行状态。
(4)数据传输功能:可以实现PLC与其他设备之间的数据传输,包括实时数据传输、历史数据传输等。
2、开干
这节继续使用上节的VS2022的项目,增加一个方法 MCProtocolLibTest(),具体怎么创建项目,见上节的过程。C#上位机与三菱PLC的通信04--MC协议之A-1E报文测试
1、引入通讯库
2、连接PLC
3、启动服务器
4、读取数据
1、读取D100地址开始的2个int类型数据
2、 通过A1E进行D102的双字 DWord(Float) 读取,即读取float类型--4Byte
/// <summary>
/// 第3方通讯库测试
/// </summary>
/// <exception cref="NotImplementedException"></exception>
private static async void MCProtocolLibTest()
{
McProtocolTcp mcProtocolTcp = new McProtocolTcp(
"192.168.1.7", 6000, McFrame.MC1E);
await mcProtocolTcp.Open();
if (mcProtocolTcp.Connected)
{
Console.WriteLine("连接成功!");
Console.WriteLine("读取D100地址开始的2个int类型数据");
var result1 = await mcProtocolTcp.ReadDeviceBlock(PlcDeviceType.D, 100, 2);
for (int i = 0; i < result1.Length; i++)
{
//每2个字节一组
byte[] temp = new byte[2];
temp[0] = result1[i];
temp[1] = result1[++i];
Console.WriteLine(BitConverter.ToInt16(temp, 0));//字节数组转换成int16数据
}
Console.WriteLine("读取D102地址开始的1个float类型数据");
var result2 = await mcProtocolTcp.ReadDeviceBlock(PlcDeviceType.D, 102, 2);
for (int i = 0; i < result1.Length; i++)
{
//每4个字节一组
byte[] temp = new byte[4];
temp[0] = result2[i];
temp[1] = result2[++i];
temp[2] = result2[++i];
temp[3] = result2[++i];
Console.WriteLine(BitConverter.ToSingle(temp, 0));//字节数组转换成float数据
}
}
}