Beispiel #1
0
        //循环读取所有PLC实时值
        private void RThreadReadServer(object obj)
        {
            while (!this.isClose)
            {
                if (this.config.bReadThread)
                {
                    try
                    {
                        LD.Config.PlcTypeItem devType = obj as LD.Config.PlcTypeItem;
                        IEnumerable           ie      = from lst in this.config.PlcDataItems
                                                        where lst.DeviceName == devType.DevName
                                                        select lst;

                        List <LD.Config.PlcDataItem> ioLst = ie.Cast <LD.Config.PlcDataItem>().ToList();

                        foreach (LD.Config.PlcDataItem item in ioLst)
                        {
                            //Config.PlcTypeItem devType = Logic.PlcHandle.Instance.GetPlcTypeItem(item.PlcDevice);
                            if (!item.IsActive)
                            {
                                continue;
                            }
                            LD.Logic.PlcHandle.Instance.ReadValue(item.PlcDevice);
                        }
                        Thread.Sleep(1);
                    }
                    catch (Exception)
                    { }
                }
            }
        }
Beispiel #2
0
        //SiemensPLC初始化
        void DoInitS7Plc(LD.Config.PlcTypeItem item)
        {
            //if (item.Timer == null) item.Timer = new System.Timers.Timer();
            //item.Timer.Enabled = false;
            //item.Timer.Interval = 1000;
            //item.Timer.Elapsed += TimerCheck_Tick;

            SiemensS7Net S7PLC = new SiemensS7Net((SiemensPLCS)item.DevType);

            S7PLC.ConnectTimeOut = item.ConnectOutTime;
            S7PLC.Rack           = byte.Parse(item.Rack);
            S7PLC.Slot           = byte.Parse(item.Slot);

            System.Net.IPAddress address;
            if (!System.Net.IPAddress.TryParse(item.IP, out address))
            {
                System.Windows.Forms.MessageBox.Show(string.Format("{0} input wrong!", item.IP));
                return;
            }

            int port;

            if (!int.TryParse(item.Port.ToString(), out port))
            {
                System.Windows.Forms.MessageBox.Show(string.Format("port {0} input wrong!", item.Port));
                return;
            }
            S7PLC.IpAddress = item.IP;
            S7PLC.Port      = port;
            item.Tag        = S7PLC;

            if (S7PLC != null)
            {
                S7PLC.ConnectClose();
            }
            OperateResult connect = S7PLC.ConnectServer();

            if (connect.IsSuccess)
            {
                item.IsConnected = true;
                //Plcs.Add(item.DevName, S7PLC);
            }
            else
            {
                item.IsConnected = false;
                //Plcs.Add(item, S7PLC);
            }
        }
Beispiel #3
0
        //MudbusTCP设备初始化
        void DoInitMudbusTcp(LD.Config.PlcTypeItem item)
        {
            // 连接
            byte station;

            if (!byte.TryParse(item.Station, out station))
            {
                MessageBox.Show(string.Format("station {0} input is wrong!", item.Station));
                return;
            }
            System.Net.IPAddress address;
            if (!System.Net.IPAddress.TryParse(item.IP, out address))
            {
                MessageBox.Show(string.Format("IP {0} input wrong!", item.IP));
                return;
            }
            int port;

            if (!int.TryParse(item.Port.ToString(), out port))
            {
                MessageBox.Show(string.Format("port {0} input wrong!", item.Port));
                return;
            }
            ModbusTcpNet busTcpClient = new ModbusTcpNet(item.IP, port, station);

            busTcpClient.AddressStartWithZero = item.AddressStartWithZero;
            if (busTcpClient != null)
            {
                busTcpClient.DataFormat = item.DataFormat;
            }
            busTcpClient.IsStringReverse = item.IsStringReverse;
            item.Tag = busTcpClient;
            OperateResult connect = busTcpClient.ConnectServer();

            if (connect.IsSuccess)
            {
                item.IsConnected = true;
                //Plcs.Add(item.DevName, busTcpClient);
            }
            else
            {
                item.IsConnected = false;
            }
        }
Beispiel #4
0
        //MelsecPLC初始化
        void DoInitMelsecPlc(LD.Config.PlcTypeItem item)
        {
            MelsecMcNet MelsecPlc = new MelsecMcNet(item.IP, item.Port);

            MelsecPlc.ConnectTimeOut = item.ConnectOutTime;
            item.Tag = MelsecPlc;
            if (MelsecPlc != null)
            {
                MelsecPlc.ConnectClose();
            }
            OperateResult connect = MelsecPlc.ConnectServer();

            if (connect.IsSuccess)
            {
                item.IsConnected = true;
            }
            else
            {
                item.IsConnected = false;
            }
        }
Beispiel #5
0
        //KeyencePLC初始化
        void DoInitKeyencePlc(LD.Config.PlcTypeItem item)
        {
            KeyenceMcNet KeyencePLC = new KeyenceMcNet(item.IP, item.Port);

            KeyencePLC.ConnectTimeOut = item.ConnectOutTime;
            item.Tag = KeyencePLC;
            if (KeyencePLC != null)
            {
                KeyencePLC.ConnectClose();
            }
            OperateResult connect = KeyencePLC.ConnectServer();

            if (connect.IsSuccess)
            {
                item.IsConnected = true;
            }
            else
            {
                item.IsConnected = false;
            }
        }
Beispiel #6
0
        //MudbusRTU设备初始化
        void DoInitMudbusRtu(LD.Config.PlcTypeItem item)
        {
            // 连接
            byte station;

            if (!byte.TryParse(item.Station, out station))
            {
                MessageBox.Show(string.Format("station {0} input is wrong!", item.Station));
                return;
            }

            int baudRate;

            if (!int.TryParse(item.BaudRate.ToString(), out baudRate))
            {
                MessageBox.Show(string.Format("baudRate {0} input wrong!", item.BaudRate));
                return;
            }

            int dataBits;

            if (!int.TryParse(item.DataBits.ToString(), out dataBits))
            {
                MessageBox.Show(string.Format("dataBits {0} input wrong!", item.DataBits));
                return;
            }

            int stopBits;

            if (!int.TryParse(item.StopBits.ToString(), out stopBits))
            {
                MessageBox.Show(string.Format("stopBits {0} input wrong!", item.StopBits));
                return;
            }

            ModbusRtu busRtuClient = new ModbusRtu(station);

            busRtuClient.AddressStartWithZero = item.AddressStartWithZero;
            if (busRtuClient != null)
            {
                busRtuClient.DataFormat = item.DataFormat;
            }
            busRtuClient.IsStringReverse = item.IsStringReverse;
            busRtuClient.SerialPortInni(sp =>
            {
                sp.PortName = item.PortName;
                sp.BaudRate = baudRate;
                sp.DataBits = dataBits;
                sp.StopBits = stopBits == 0 ? StopBits.None : (stopBits == 1 ? StopBits.One : StopBits.Two);
                sp.Parity   = item.Parity;
            });
            item.Tag = busRtuClient;

            busRtuClient.Open();
            if (busRtuClient.IsOpen())
            {
                item.IsConnected = true;
                //Plcs.Add(item.DevName, busRtuClient);
            }
            else
            {
                item.IsConnected = false;
            }
        }