200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯

C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯

时间:2023-03-16 09:28:56

相关推荐

C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯

C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯

使用步骤

1.引入库

项目添加应用HslCommunication.dll和代码代码如下(示例):

dll官方支持网站>

using HslCommunication.Profinet.Siemens;

## 2.定义全局变量,选择PLC类型,设置正确的IP地址代码如下:` public static string PlcIpAddress = "192.168.101.50";public static SiemensPLCS siemensPLCS = SiemensPLCS.S1200;public static SiemensS7Net siemensTcpNet = null;

3.链接PLC

代码如下:

public static bool InitialPLC(){int k = 0;tryAgain:try{.IPAddress address;if (!.IPAddress.TryParse(PublicVariables.PlcIpAddress, out address)){MessageBox.Show("Ip地址输入不正确!");return false;}//SiemensPLCS siemensPLCS = SiemensPLCS.S1200;PublicVariables.siemensTcpNet = new SiemensS7Net(PublicVariables.siemensPLCS);PublicVariables.siemensTcpNet.IpAddress = PublicVariables.PlcIpAddress;OperateResult connect = PublicVariables.siemensTcpNet.ConnectServer();if (!connect.IsSuccess){return false;}return true;}catch (Exception ex){k++;if (k < 4){Thread.Sleep(50);goto tryAgain;}else{return false;}}}

-## 4.数据DB块写入–

/// <summary>/// 统一的数据写入的结果显示/// </summary>/// <param name="result"></param>/// <param name="address"></param>public static void writeResultRender(OperateResult result, string address){//Thread.Sleep(200);if (result.IsSuccess){//MessageBox.Show(DateTime.Now.ToString("[HH:mm:ss] ") + $"[{address}] 写入成功");}else{MessageBox.Show(DateTime.Now.ToString("[HH:mm:ss] ") + $"[{address}] 写入失败{Environment.NewLine}原因:{result.ToMessageShowString()}");}}

##4.1 写入实列如下:

writeResultRender(PublicVariables.siemensTcpNet.Write("DB80.4.6", bool.Parse("true")), "DB80.4.6")

##5 bool类型读取

public OperateResult<bool> ReadBool(string address){return GetBoolResultFromBytes(ReadBitFromPLC(address));}

##6 寄存器批量读取

public override OperateResult<byte[]> Read(string address, ushort length){OperateResult<byte, int, ushort> operateResult = AnalysisAddress(address);if (!operateResult.IsSuccess){return OperateResult.CreateFailedResult<byte[]>(operateResult);}List<byte> list = new List<byte>();ushort num = 0;while (num < length){ushort num2 = (ushort)Math.Min(length - num, 200);OperateResult<byte[]> operateResult2 = Read(new OperateResult<byte, int, ushort>[1] {operateResult }, new ushort[1] {num2 });if (!operateResult2.IsSuccess){return operateResult2;}list.AddRange(operateResult2.Content);num = (ushort)(num + num2);operateResult.Content2 += num2 * 8;}return OperateResult.CreateSuccessResult(list.ToArray());}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了西门子工控机和西门子PLC使用S7协议通讯,而HslCommunication提供了大量工控通讯的方法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。