public PLCRwMCPro(EnumPlcCata plcEnum, int db1Len, int db2Len) { this.plcCata = plcEnum; constantByte[0] = 0x50; //副标题 constantByte[1] = 0x00; constantByte[2] = 0x00; //网络编号 constantByte[3] = 0xFF; //PC编号 constantByte[4] = 0xFF; //请求目标模块IO编号 constantByte[5] = 0x03; constantByte[6] = 0x00; //请求目标站模块编号 this.db1Len = db1Len; this.db2Len = db2Len; if (this.db1Len < 10) { this.db1Len = 10; } if (this.db2Len < 10) { this.db2Len = 10; } db1Vals = new Int16[this.db1Len]; db2Vals = new Int16[this.db2Len]; }
private bool OnConnPlc() { try { string PlcIP = this.textBoxPlcIP.Text;//ConfigurationManager.AppSettings["plcIP"]; int PlcPort = int.Parse(this.textBoxPlcPort.Text); EnumNetProto proto = EnumNetProto.TCP; EnumPlcCata plcCata = EnumPlcCata.FX5U; if (this.radionTcp.Checked) { proto = EnumNetProto.TCP; } else { proto = EnumNetProto.UDP; } switch (cbxPlcCata.Text) { case "FX5U": { plcCata = EnumPlcCata.FX5U; break; } case "Q系列": { plcCata = EnumPlcCata.Qn; break; } case "Fx3uNET模块": { plcCata = EnumPlcCata.FX3UENET; break; } default: break; } if (presenter.ConnPlc(PlcIP, PlcPort, plcCata, proto)) { label2.Text = "PLC 连接成功!"; this.buttonClosePlc.Enabled = true; this.buttonConnectPlc.Enabled = false; return(true); } else { label2.Text = "PLC 连接失败!"; return(false); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); return(false); } }
public PlcRW485BD(EnumPlcCata plcEnum) { this.plcCata = plcEnum; serialPort = new SerialPort(); //serialPort.DataReceived += RecvEventHandler; this.comportName = "com2"; serialPort.PortName = comportName; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One; serialPort.Parity = Parity.None; serialPort.ReceivedBytesThreshold = 1; serialPort.BaudRate = 9600; //serialPort.WriteTimeout = 500; //serialPort.Handshake = Handshake.XOnXOff; //握手协议,软件XON/XOFF }
public bool ConnPlc(string ip, int port, EnumPlcCata plcCata, EnumNetProto proto) { try { if (SimMode) { plcRW = new PlcRWSim(); } else { PLCRwMCPro plcRwMC = new PLCRwMCPro(plcCata, 20, 20); plcRW = plcRwMC; plcRwMC.PlcCata = plcCata; plcRwMC.ConnStr = ip + ":" + port.ToString(); } stacker.PlcRW = plcRW; string reStr = ""; if (plcRW.ConnectPLC(ref reStr)) { Console.WriteLine("PLC连接成功!"); return(true); } else { Console.WriteLine("PLC连接失败!"); return(false); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); return(false); } }
private bool ParseCommDevCfg(XElement commDevRoot, ref string reStr) { try { //1 PLC XElement plcRoot = commDevRoot.Element("PLCCfg"); plcRWs = new List <IPlcRW>(); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; ushort port = ushort.Parse(strAddrArray[1]); string hostAddr = rfidXE.Attribute("HostAddr").Value.ToString(); strAddrArray = hostAddr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string hostip = strAddrArray[0]; uint hostport = uint.Parse(strAddrArray[1]); //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, port); WqRfidUdp rfidRW = new WqRfidUdp(EnumTag.TagEPCC1G2, id, ip, port, (uint)hostport); //=========================更改读卡方式======================================//np_modified1231 //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, (uint)port); //rfidRW.HostIP = hostip; //rfidRW.HostPort = hostport; //rfidRW.ReaderIP = ip; //rfidRW.ReaderPort = (uint)port; //=======================================================================// Console.WriteLine("ID = " + id.ToString() + " IP = " + ip.ToString() + " Port = " + port.ToString() + " HostPort = " + hostport.ToString()); //rfidRW.HostIP = "192.168.1.251"; // rfidRW.HostPort = (uint)(9000+id); //SygoleHFReaderIF.HFReaderIF readerIF = new SygoleHFReaderIF.HFReaderIF(); //SgrfidRW rfidRW = new SgrfidRW(id); //rfidRW.ReaderIF = readerIF; //rfidRW.ReaderIF.ComPort = commPort; rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); barcodeRWList = new List <IBarcodeRW>(); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string commPort = barcodeXE.Attribute("CommAddr").Value.ToString(); string barcodeLenth = barcodeXE.Attribute("BarCodeLenth").Value.ToString(); BarcodeRWHoneywell barcodeReader = new BarcodeRWHoneywell(id); barcodeReader.barcodeLen = Convert.ToInt32(barcodeLenth); //BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); //barcodeReader.bar barcodeReader.TriggerMode = EnumTriggerMode.手动按钮触发; //System.IO.Ports.SerialPort comPort = new System.IO.Ports.SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = System.IO.Ports.StopBits.One; //comPort.Parity = System.IO.Ports.Parity.None; barcodeReader.ComPortObj.PortName = commPort; barcodeReader.ComPortObj.BaudRate = 115200; barcodeReader.ComPortObj.DataBits = 8; barcodeReader.ComPortObj.StopBits = System.IO.Ports.StopBits.One; barcodeReader.ComPortObj.Parity = System.IO.Ports.Parity.None; barcodeRWList.Add(barcodeReader); } //4 杭可装载服务器 //XElement hkFillSvcXECfg = commDevRoot.Element("HKFillServerCfg"); //string hkSvcIP = "127.0.0.1"; //int hkSvcPort = 13535; //if(hkFillSvcXECfg != null) //{ // foreach (XElement hkXE in hkFillSvcXECfg.Elements("HkServer")) // { // int hkID = int.Parse(hkXE.Attribute("id").Value.ToString()); // hkSvcIP = hkXE.Attribute("ip").Value.ToString(); // hkSvcPort = int.Parse(hkXE.Attribute("port").Value.ToString()); // HKAccess hk = new HKAccess(hkID,hkSvcIP, hkSvcPort); // hk.RecvTimeOut = 5000; // hkAccessList.Add(hk); // } //} //string ocvDBConn = hkFillSvcXECfg.Element("HkOCVDB").Attribute("conn").Value.ToString(); // "Data Source = 192.168.100.20;Initial Catalog=SRANCH;User ID=L_Guest;Password=Guest@123;"; // ocvAccess = new OcvAccess(ocvDBConn, 36); CommDevConnect(); return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
private bool ParseCommDevCfg(XElement commDevRoot, ref string reStr) { try { //1 PLC XElement plcRoot = commDevRoot.Element("PLCCfg"); plcRWs = new List <IPlcRW>(); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); if (plcRoot.Attribute("Vendor").Value.ToString() == "欧姆龙") { string pcIP = "192.168.0.88"; foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); string[] strArray = connStr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string plcIP = strArray[0]; int plcPort = int.Parse(strArray[1]); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); OmlPlcRW plcRW = null; if (plcXE.Attribute("netPro").Value.ToString() == "TCP") { plcRW = new OmlPlcRW(EnumPLCType.OML_TCP, plcIP, plcPort, pcIP, null); } else { plcRW = new OmlPlcRW(EnumPLCType.OML_UDP, plcIP, plcPort, pcIP, null); } plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } else if (plcRoot.Attribute("Vendor").Value.ToString() == "三菱") { foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } else { reStr = "不识别的PLC厂家"; return(false); } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; int port = int.Parse(strAddrArray[1]); string rfidType = rfidXE.Value.Trim(); IrfidRW rfidRW = null; //if (rfidType == "C线自动打带机") //{ rfidRW = new RfidRW_CFRH390_Tcp(id, ip, port, null); //} //else //{ // rfidRW = new RfidCF(id, ip, port); //} this.rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string connStr = barcodeXE.Attribute("CommAddr").Value.ToString(); string[] strArray = connStr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strArray[0]; int port = int.Parse(strArray[1]); BarcodeRWSR_750 barcodeReader = new BarcodeRWSR_750(id, ip, port, null); //BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); //if(id== 1) //{ // barcodeReader.TriggerMode = EnumTriggerMode.手动按钮触发; //} //SerialPort comPort = new SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = StopBits.One; //comPort.Parity = Parity.None; //barcodeReader.ComPortObj = comPort; this.barcodeRWs.Add(barcodeReader); } //4 CCD检测设备 XElement CCDRoot = commDevRoot.Element("CCDCfg"); IEnumerable <XElement> ccdXES = CCDRoot.Elements("CCD"); int pcPort = 8888; foreach (XElement ccd in ccdXES) { int id = int.Parse(ccd.Attribute("id").Value.ToString()); string connStr = ccd.Attribute("CommAddr").Value.ToString(); MingmeiDeviceAcc ccdDev = new MingmeiDeviceAcc(); ccdDev.LocalPort = pcPort; pcPort++; ccdDev.Role = ccd.Attribute("role").Value.ToString(); ccdDev.ConnStr = connStr; ccdDev.DevID = id; ccdRWs.Add(ccdDev); } return(true); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
public bool ParseCommdev(XElement commDevRoot, ref string reStr) { try { //1 PLC plcRWs = new List <IPlcRW>(); XElement plcRoot = commDevRoot.Element("PLCCfg"); IEnumerable <XElement> plcXES = plcRoot.Elements("PLC"); int plcSum = plcXES.Count(); foreach (XElement plcXE in plcXES) { string connStr = plcXE.Value.ToString(); int db1Len = 100, db2Len = 100; db1Len = int.Parse(plcXE.Attribute("db1Len").Value.ToString()); db2Len = int.Parse(plcXE.Attribute("db2Len").Value.ToString()); int plcID = int.Parse(plcXE.Attribute("id").Value.ToString()); EnumPlcCata plcCata = EnumPlcCata.FX5U; if (plcXE.Attribute("cata") != null) { string strPlcCata = plcXE.Attribute("cata").Value.ToString(); plcCata = (EnumPlcCata)Enum.Parse(typeof(EnumPlcCata), strPlcCata); } if (SysCfg.SysCfgModel.SimMode) { PlcRWSim plcRW = new PlcRWSim(); plcRW.PlcID = plcID; plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); plcRWs.Add(plcRW); } else { PLCRwMCPro plcRW = new PLCRwMCPro(plcCata, db1Len, db2Len); plcRW.PlcRole = plcXE.Attribute("role").Value.ToString(); // PLCRwMCPro2 plcRW = new PLCRwMCPro2(db1Len, db2Len); plcRW.ConnStr = plcXE.Value.ToString(); plcRW.PlcID = plcID; plcRWs.Add(plcRW); } } //2 rfid XElement rfidRootXE = commDevRoot.Element("RfidCfg"); IEnumerable <XElement> rfidXES = rfidRootXE.Elements("RFID"); this.rfidRWs = new List <IrfidRW>(); foreach (XElement rfidXE in rfidXES) { byte id = byte.Parse(rfidXE.Attribute("id").Value.ToString()); string addr = rfidXE.Attribute("CommAddr").Value.ToString(); string[] strAddrArray = addr.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); string ip = strAddrArray[0]; ushort port = ushort.Parse(strAddrArray[1]); //WqwlRfidRW rfidRW = new WqwlRfidRW(EnumTag.TagEPCC1G2, id, ip, port); WqRfidUdp rfidRW = new WqRfidUdp(EnumTag.TagEPCC1G2, id, ip, port, (uint)(9000 + id)); //SygoleHFReaderIF.HFReaderIF readerIF = new SygoleHFReaderIF.HFReaderIF(); //SgrfidRW rfidRW = new SgrfidRW(id); //rfidRW.ReaderIF = readerIF; //rfidRW.ReaderIF.ComPort = commPort; rfidRWs.Add(rfidRW); } //3 条码枪 XElement barcoderRootXE = commDevRoot.Element("BarScannerCfg"); IEnumerable <XElement> barcodes = barcoderRootXE.Elements("BarScanner"); barcodeRWList = new List <IBarcodeRW>(); foreach (XElement barcodeXE in barcodes) { byte id = byte.Parse(barcodeXE.Attribute("id").Value.ToString()); string commPort = barcodeXE.Attribute("CommAddr").Value.ToString(); if (SysCfg.SysCfgModel.SimMode) { BarcodeRWSim barSim = new BarcodeRWSim(id); barSim.Role = barcodeXE.Attribute("role").Value.ToString(); barcodeRWList.Add(barSim); } else { BarcodeRWHonevor barcodeReader = new BarcodeRWHonevor(id); barcodeReader.TriggerMode = EnumTriggerMode.序命令触发; barcodeReader.Role = barcodeXE.Attribute("role").Value.ToString(); //System.IO.Ports.SerialPort comPort = new System.IO.Ports.SerialPort(commPort); //comPort.BaudRate = 115200; //comPort.DataBits = 8; //comPort.StopBits = System.IO.Ports.StopBits.One; //comPort.Parity = System.IO.Ports.Parity.None; barcodeReader.ComPortObj.PortName = commPort; barcodeReader.ComPortObj.BaudRate = 115200; barcodeReader.ComPortObj.DataBits = 8; barcodeReader.ComPortObj.StopBits = System.IO.Ports.StopBits.One; barcodeReader.ComPortObj.Parity = System.IO.Ports.Parity.None; barcodeRWList.Add(barcodeReader); } } return(true); } catch (Exception ex) { reStr = "通信设备配置解析失败,发生系统异常:" + ex.ToString(); return(false); } }