private void button_read_bool_Click(object sender, EventArgs e) { // 读取bool变量 if (textBox12.Text == "1") { DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text), textBox3.Text, textBox4); } else { DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text, ushort.Parse(textBox12.Text)), textBox3.Text, textBox4); } }
public void ReadBool( ) { #region ReadBool OmronFinsNet omronFinsNet = new OmronFinsNet("192.168.1.110", 6000); omronFinsNet.SA1 = 10; omronFinsNet.DA1 = 110; // 以下是简单的读取,没有仔细校验的方式 bool X1 = omronFinsNet.ReadBool("D100.1").Content; bool[] X1_10 = omronFinsNet.ReadBool("D100.1", 10).Content; // 如果需要判断是否读取成功 OperateResult <bool> R_X1 = omronFinsNet.ReadBool("D100.1"); if (R_X1.IsSuccess) { // success bool value = R_X1.Content; } else { // failed } OperateResult <bool[]> R_X1_10 = omronFinsNet.ReadBool("D100.1", 10); if (R_X1_10.IsSuccess) { // success bool x1 = R_X1_10.Content[0]; bool x2 = R_X1_10.Content[1]; bool x3 = R_X1_10.Content[2]; bool x4 = R_X1_10.Content[3]; bool x5 = R_X1_10.Content[4]; bool x6 = R_X1_10.Content[5]; bool x7 = R_X1_10.Content[6]; bool x8 = R_X1_10.Content[7]; bool x9 = R_X1_10.Content[8]; bool xa = R_X1_10.Content[9]; } else { // failed } #endregion }
public void ReadExample( ) { #region ReadExample1 OmronFinsNet omronFinsNet = new OmronFinsNet("192.168.1.110", 6000); omronFinsNet.SA1 = 10; omronFinsNet.DA1 = 110; // 此处以D寄存器作为示例 bool D100_7 = omronFinsNet.ReadBool("D100.7").Content; // 读取D100.7是否通断,注意D100.0等同于D100 short short_D100 = omronFinsNet.ReadInt16("D100").Content; // 读取D100组成的字 ushort ushort_D100 = omronFinsNet.ReadUInt16("D100").Content; // 读取D100组成的无符号的值 int int_D100 = omronFinsNet.ReadInt32("D100").Content; // 读取D100-D101组成的有符号的数据 uint uint_D100 = omronFinsNet.ReadUInt32("D100").Content; // 读取D100-D101组成的无符号的值 float float_D100 = omronFinsNet.ReadFloat("D100").Content; // 读取D100-D101组成的单精度值 long long_D100 = omronFinsNet.ReadInt64("D100").Content; // 读取D100-D103组成的大数据值 ulong ulong_D100 = omronFinsNet.ReadUInt64("D100").Content; // 读取D100-D103组成的无符号大数据 double double_D100 = omronFinsNet.ReadDouble("D100").Content; // 读取D100-D103组成的双精度值 string str_D100 = omronFinsNet.ReadString("D100", 5).Content; // 读取D100-D104组成的ASCII字符串数据 // 读取数组 short[] short_D1000_array = omronFinsNet.ReadInt16("D1000", 10).Content; // 读取D1000的short值 ushort[] ushort_D1000_array = omronFinsNet.ReadUInt16("D1000", 10).Content; // 读取D1000的ushort值 int[] int_D1000_array = omronFinsNet.ReadInt32("D1000", 10).Content; // 读取D1000-D1001组成的int数据 uint[] uint_D1000_array = omronFinsNet.ReadUInt32("D1000", 10).Content; // 读取D1000-D1001组成的uint数据 float[] float_D1000_array = omronFinsNet.ReadFloat("D1000", 10).Content; // 读取D1000-D1001组成的float数据 long[] long_D1000_array = omronFinsNet.ReadInt64("D1000", 10).Content; // 读取D1000-D1003组成的long数据 ulong[] ulong_D1000_array = omronFinsNet.ReadUInt64("D1000", 10).Content; // 读取D1000-D1003组成的long数据 double[] double_D1000_array = omronFinsNet.ReadDouble("D1000", 10).Content; // 读取D1000-D1003组成的double数据 #endregion }
public bool Connect() { if (omr != null) { omr.ConnectClose(); omr = null; } omr = new OmronFinsNet(Properties.Settings.Default.PLC_IP, Properties.Settings.Default.PLC_PORT) { SA1 = 0, DA1 = 0 }; Task.Factory.StartNew(() => { while (true) { var op = omr.ConnectServer(); IsConnected = op.IsSuccess; if (!op.IsSuccess) { Events.Publish(new MsgItem { Time = DateTime.Now, Level = "E", Value = op.Message }); } if (IsConnected) { foreach (var v in AM.alarms) { var b = omr.ReadBool(v.Address); if (b.IsSuccess) { if (v.Value != b.Content) { v.Value = b.Content; Events.Publish(v); } } } omr.ConnectClose(); } System.Threading.Thread.Sleep(10); } }); return(IsConnected); }
private void test() { // 读取操作,这里的D100可以替换成C100,A100,W100,H100效果时一样的 bool D100_7 = omronFinsNet.ReadBool("D100.7").Content; // 读取D100.7是否通断,注意D100.0等同于D100 short short_D100 = omronFinsNet.ReadInt16("D100").Content; // 读取D100组成的字 ushort ushort_D100 = omronFinsNet.ReadUInt16("D100").Content; // 读取D100组成的无符号的值 int int_D100 = omronFinsNet.ReadInt32("D100").Content; // 读取D100-D101组成的有符号的数据 uint uint_D100 = omronFinsNet.ReadUInt32("D100").Content; // 读取D100-D101组成的无符号的值 float float_D100 = omronFinsNet.ReadFloat("D100").Content; // 读取D100-D101组成的单精度值 long long_D100 = omronFinsNet.ReadInt64("D100").Content; // 读取D100-D103组成的大数据值 ulong ulong_D100 = omronFinsNet.ReadUInt64("D100").Content; // 读取D100-D103组成的无符号大数据 double double_D100 = omronFinsNet.ReadDouble("D100").Content; // 读取D100-D103组成的双精度值 string str_D100 = omronFinsNet.ReadString("D100", 5).Content; // 读取D100-D104组成的ASCII字符串数据 // 写入操作,这里的D100可以替换成C100,A100,W100,H100效果时一样的 omronFinsNet.Write("D100", (byte)0x33); // 写单个字节 omronFinsNet.Write("D100", (short)12345); // 写双字节有符号 omronFinsNet.Write("D100", (ushort)45678); // 写双字节无符号 omronFinsNet.Write("D100", (uint)3456789123); // 写双字无符号 omronFinsNet.Write("D100", 123.456f); // 写单精度 omronFinsNet.Write("D100", 1234556434534545L); // 写大整数有符号 omronFinsNet.Write("D100", 523434234234343UL); // 写大整数无符号 omronFinsNet.Write("D100", 123.456d); // 写双精度 omronFinsNet.Write("D100", "K123456789"); // 写ASCII字符串 OperateResult <byte[]> read = omronFinsNet.Read("D100", 5); { if (read.IsSuccess) { // 此处需要根据实际的情况来自定义来处理复杂的数据 short D100 = omronFinsNet.ByteTransform.TransInt16(read.Content, 0); short D101 = omronFinsNet.ByteTransform.TransInt16(read.Content, 2); short D102 = omronFinsNet.ByteTransform.TransInt16(read.Content, 4); short D103 = omronFinsNet.ByteTransform.TransInt16(read.Content, 6); short D104 = omronFinsNet.ByteTransform.TransInt16(read.Content, 7); } else { // 发生了异常 // } } }
private void button_read_bool_Click(object sender, EventArgs e) { // 读取bool变量 DemoUtils.ReadResultRender(omronFinsNet.ReadBool(textBox3.Text), textBox3.Text, textBox4); }
/// <summary> /// PLC 数据读取 /// </summary> private void DataReload() { dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += (s, e) => { try { #region 提示Info if (gwcode1.Text.Trim() != string.Empty) { if (entry1.Any()) { remark1.Text = $"漏扫零件:{entry1.First().FCodeRule}"; } } if (gwcode2.Text.Trim() != string.Empty) { if (entry2.Any()) { remark2.Text = $"漏扫零件:{entry2.First().FCodeRule}"; } } if (gwcode3.Text.Trim() != string.Empty) { if (entry3.Any()) { remark3.Text = $"漏扫零件:{entry3.First().FCodeRule}"; } } #endregion #region 获取气检数据 #endregion #region 获取保存信号 -- 放行信号 // OP01 var singal1 = plc.ReadBool(""); if (singal1.IsSuccess) { if (singal1.Content) { if (!saveMark1) { var record1 = new RecordInfo(); record1.FGWID = GwType.OP01; record1.FAssemblyID = assemblyType.FInterID; var bar1 = gwcode1.Text.Trim(); if (bar1 == string.Empty) { remark1.Text = "装配条码为空!"; } else { record1.FBar = bar1; var recordEntry1 = new List <RecordInfoEntry>(); if (barlist1 != null && barlist1.Any()) { barlist1.ForEach(f => { recordEntry1.Add(new RecordInfoEntry(f)); }); } record1.entries = recordEntry1; if (this.SaveData(record1, GwType.OP01)) // true { // write plc ?? gwcode1.Text = ""; barlist1.Clear(); remark1.Text = "保存成功!"; saveMark1 = true; } } } } else { saveMark1 = false; } } // OP40 var singal2 = plc.ReadBool(""); if (singal2.IsSuccess) { if (singal2.Content) { if (!saveMark2) { var record2 = new RecordInfo(); record2.FGWID = GwType.OP40; record2.FAssemblyID = assemblyType.FInterID; var bar2 = gwcode2.Text.Trim(); if (bar2 == string.Empty) { remark2.Text = "装配条码为空!"; } else { record2.FBar = bar2; var recordEntry2 = new List <RecordInfoEntry>(); if (barlist2 != null && barlist2.Any()) { barlist2.ForEach(f => { recordEntry2.Add(new RecordInfoEntry(f)); }); } record2.entries = recordEntry2; if (this.SaveData(record2, GwType.OP40)) // true { // write plc ?? gwcode2.Text = ""; barlist2.Clear(); remark2.Text = "保存成功!"; saveMark2 = true; } } } } else { saveMark2 = false; } } // OP70 var singal3 = plc.ReadBool(""); if (singal3.IsSuccess) { if (singal3.Content) { if (!saveMark3) { var record3 = new RecordInfo(); record3.FGWID = GwType.OP70; record3.FAssemblyID = assemblyType.FInterID; var bar3 = gwcode3.Text.Trim(); if (bar3 == string.Empty) { remark3.Text = "装配条码为空!"; } else { record3.FBar = bar3; record3.FCustBar = custcode.Text.Trim(); //var recordEntry3 = new List<RecordInfoEntry>(); //if (barlist3 != null && barlist3.Any()) //{ // barlist3.ForEach(f => // { // recordEntry3.Add(new RecordInfoEntry(f)); // }); //} //record3.entries = recordEntry3; if (this.SaveData(record3, GwType.OP70)) // true { // write plc ?? gwcode3.Text = ""; barlist3.Clear(); remark3.Text = "保存成功!"; saveMark3 = true; } } } } else { saveMark3 = false; } } // OP80 var singal4 = plc.ReadBool(""); if (singal4.IsSuccess) { if (singal4.Content) { if (!saveMark4) { var record4 = new RecordInfo(); record4.FGWID = GwType.OP80; record4.FAssemblyID = assemblyType.FInterID; var bar4 = gwcode4.Text.Trim(); if (bar4 == string.Empty) { remark4.Text = "客户条码为空!"; } else { record4.FCustBar = bar4; var recordEntry4 = new List <RecordInfoEntry1>(); if (valuelist != null && valuelist.Any()) { valuelist.ForEach(f => { recordEntry4.Add(new RecordInfoEntry1(f)); }); } record4.entries1 = recordEntry4; if (this.SaveData(record4, GwType.OP80)) // true { // write plc ?? gwcode4.Text = ""; valuelist.Clear(); remark4.Text = "保存成功!"; saveMark4 = true; ShowDetail(bar4); } } } } else { saveMark4 = false; } } #endregion remark = true; } catch (Exception ex) { log.Error("------PLC访问出错------"); log.Error(ex.Message); dispatcherTimer.Stop(); remark = false; } }; dispatcherTimer.Interval = TimeSpan.FromMilliseconds(10); dispatcherTimer.Start(); }
public override object ReadTag(Tag tag) { if (tag.AccessType == TagAccessType.Read || tag.AccessType == TagAccessType.ReadWrite) { try { if (tag.TagType == "bool") { var res = PLC.ReadBool(tag.Address); if (res.IsSuccess) { tag.TagValue = res.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } } else if (tag.TagType == "string") { OperateResult <string> res = new OperateResult <string>(); if (tag.Address.Contains("#")) { string[] adds = tag.Address.Split('#'); string address = adds[0]; ushort len = Convert.ToUInt16(adds[1]); res = PLC.ReadString(tag.Address, len); } else { res = PLC.ReadString(tag.Address, 1); } if (res.IsSuccess) { tag.TagValue = res.Content; tag.Quality = Quality.Good; } else { tag.TagValue = null; tag.Quality = Quality.Bad; } } else { OperateResult <byte[]> res = PLC.Read(tag.Address, 1); ConvertUtils.DecodeTagValue(tag, res); } return(tag.TagValue); } catch (Exception ex) { LOG.Error($"Datasource[{SourceName}] read error. Tag[{tag.TagName}] Address[{tag.Address}] Message[{ex.Message}]"); tag.TagValue = null; tag.Quality = Quality.Bad; return(tag.TagValue); } } else { return(null); } }