-
Thành viên cấp 1
Một ví dụ đơn giản về giao thức Modbus RTU sử dụng C#.
Mình làm một ví dụ đơn giản lập trình giao thức Modbus RTU sử dụng C# để chia sẻ cho anh em tham khảo.
Bạn nào không có thiết bị thì có thể sử dụng phần mềm mô phỏng thiết bị modbus slave có trong phần example (Chạy file ModbusSlaveSetup.exe để cài đặt modbus Slave).
Test theo video phía trên.
Tài liệu mình gửi kèm cũng rất chi tiết. Các bạn có thể bám vào đó để lập trình cho các Function còn lại.
Ở đây mình lấy Function 03 để làm ví dụ đọc 5 thanh ghi từ thiết bị hỗ trợ modbus slave.
Chú ý:
- Ví dụ viết trên Visual C# 2012.
- Cách tính CRC/LRC cho chế độ Modbus RTU/ASCII. Cái này cực kỳ quan trọng cho giao thức ở chế độ RTU/ASCII.
- CRC:
Code:
/// <summary>
/// Calculate Cyclical Redundancy Check
/// </summary>
/// <param name="messageArray">The data used in CRC</param>
/// <param name="CRC">The 2 byte CRC</param>
public static void CRC(byte[] messageArray, ref byte[] CRC)
{
ushort CRCFull = 0xFFFF;
char CRCLSB;
for (int i = 0; i < (messageArray.Length) - 2; i++)
{
CRCFull = (ushort)(CRCFull ^ messageArray[i]);
for (int j = 0; j < 8; j++)
{
CRCLSB = (char)(CRCFull & 0x0001);
CRCFull = (ushort)((CRCFull >> 1) & 0x7FFF);
if (CRCLSB == 1)
CRCFull = (ushort)(CRCFull ^ 0xA001);
}
}
CRC[1] = (byte)((CRCFull >> 8) & 0xFF);
CRC[0] = (byte)(CRCFull & 0xFF);
}
- LRC:
Code:
/// <summary>
/// Calculate Longitudinal Redundancy Check.
/// </summary>
/// <param name="data">The data used in LRC</param>
/// <returns>LRC value</returns>
public static byte LRC(byte[] data)
{
if (data == null)
throw new ArgumentNullException("Tham số truyền vào không tồn tại phần tử nào");
byte lrc = 0;
foreach (byte b in data)
lrc += b;
lrc = (byte)((lrc ^ 0xFF) + 1);
return lrc;
}
Download:
- Example.rar
- Protocol Description.pdf
-
The Following 21 Users Say Thank You to luuhoang For This Useful Post:
anhlv.ddt,anh_hung,cauoc.cdt,daocongdabl,daohihuc,dong_elec,haduy.dh,hienqsb,hoangpooh,hoatudonghoa,[email protected],nghichlan,nguyennhatanh,nguyenutc,qmnguyen,thuynavy,tiendungkct,tinhdonglam,[email protected],tsas.com.vn,tuyenh
Quyền viết bài
- Bạn Không thể gửi Chủ đề mới
- Bạn Không thể Gửi trả lời
- Bạn Không thể Gửi file đính kèm
- Bạn Không thể Sửa bài viết của mình
-
Nội quy - Quy định
Back to Top
Múi giờ GMT +7. Bây giờ là 10:44 AM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu