コード例 #1
0
 async void Run()
 {
     bool _m2000 = false;
     await Task.Run(() => {
         while (true)
         {
             System.Threading.Thread.Sleep(100);
             isPLCConnect = myPLC.ReadSM(0);
             if (isPLCConnect)
             {
                 M2000  = myPLC.ReadMultiMCoil(2000);
                 _D3000 = myPLC.ReadW(3000);
                 if (_m2000 != M2000[0])
                 {
                     _m2000 = M2000[0];
                     if (_m2000)
                     {
                         this.Dispatcher.Invoke(new Action(() => {
                             AddMessage("触发扫码");
                         }));
                     }
                 }
             }
             else
             {
                 myPLC.ModbusDisConnect();
                 myPLC.ModbusInit("COM13", 19200, System.IO.Ports.Parity.Even, 8, System.IO.Ports.StopBits.One);
                 myPLC.ModbusConnect();
             }
         }
     });
 }
コード例 #2
0
        static void Main(string[] args)
        {
            bool       IsPLCConnect = false;
            ushort     i            = 0;
            ThingetPLC Xinjie;

            Xinjie = new ThingetPLC();
            while (true)
            {
                i++;
                System.Threading.Thread.Sleep(10);
                IsPLCConnect = Xinjie.ReadSM(0);
                //Console.WriteLine(IsPLCConnect.ToString());
                //IsPLCConnect = Xinjie.ReadM(24576);
                if (IsPLCConnect)
                {
                    Xinjie.WriteW(2, "58");
                    double a = Xinjie.ReadW(2);
                    Console.WriteLine(a.ToString());
                }
                else
                {
                    System.Threading.Thread.Sleep(1000);
                    Xinjie.ModbusDisConnect();
                    Xinjie.ModbusInit("COM3", 19200, System.IO.Ports.Parity.Even, 8, System.IO.Ports.StopBits.One);
                    Xinjie.ModbusConnect();
                }
                if (i > 9)
                {
                    i = 0;
                    Console.ReadKey();
                }
            }
        }
コード例 #3
0
        public void PlcRun()
        {
            bool   first    = true;
            bool   scanFlag = false;
            Random rd       = new Random();

            while (true)
            {
                System.Threading.Thread.Sleep(10);
                if (Xinjie == null)
                {
                    System.Threading.Thread.Sleep(1000);
                }
                else
                {
                    try
                    {
                        PLCConnect = Xinjie.ReadM(24576);
                        if (PLCConnect)
                        {
                            PlcIn = Xinjie.ReadMultiMCoil(1500);
                            Xinjie.WritMultiMCoil(1800, PlcOut);
                            Xinjie.WriteW(150, rd.Next(0, 999).ToString());
                            dd8170     = Xinjie.ReadD(16554);
                            dd4208     = Xinjie.ReadD(4208);
                            RotalAngle = (dd8170 - dd4208) / 91776 * 360;

                            //扫码
                            if (scanFlag != PlcIn[0])
                            {
                                scanFlag = PlcIn[0];
                                if (scanFlag)
                                {
                                    Abarcode_f = false;
                                    Bbarcode_f = false;
                                    PlcOut[0]  = false;
                                    PlcOut[1]  = false;
                                    PlcOut[2]  = false;
                                    Xinjie.WritMultiMCoil(1800, PlcOut);
                                    ScanA.GetBarCode(ScanActionCallback1);
                                    ScanB.GetBarCode(ScanActionCallback2);
                                    TrigerTimes++;
                                    Inifile.INIWriteValue(ParameterIniPath, "Times", "TrigerTimes", TrigerTimes.ToString());
                                }
                                else
                                {
                                    PlcOut[0] = false;
                                }
                            }
                            if (Abarcode_f && Bbarcode_f)
                            {
                                Abarcode_f = false;
                                Bbarcode_f = false;
                                PlcOut[0]  = true;
                                PlcOut[1]  = Abarcode_s;
                                PlcOut[2]  = Bbarcode_s;
                                if (Abarcode_s && Bbarcode_s)
                                {
                                    ScanTimes++;
                                    Inifile.INIWriteValue(ParameterIniPath, "Times", "ScanTimes", ScanTimes.ToString());
                                }
                                RecordItem recordItem = new RecordItem();
                                recordItem.日期        = GetBanciDate();
                                recordItem.班次        = GetBanci();
                                recordItem.机台号       = JiTaiHao;
                                recordItem.产品barcode = Abarcode;
                                recordItem.机台穴号      = Bbarcode;
                                lock (LockObject)
                                {
                                    recordItemList.Add(recordItem);
                                }
                                if (Directory.Exists("D:\\" + GetBanciDate() + GetBanci()))
                                {
                                    string filename = "D:\\" + GetBanciDate() + GetBanci() + "\\" + GetBanciDate() + GetBanci() + ".csv";
                                    if (File.Exists(filename))
                                    {
                                        string[] heads = { "日期", "班次", "机台号", "机台穴号", "产品barcode" };
                                        Csvfile.AddNewLine(filename, heads);
                                    }
                                    string[] count = { recordItem.日期, recordItem.班次, recordItem.机台号, recordItem.机台穴号, recordItem.产品barcode };
                                    Csvfile.AddNewLine(filename, count);
                                }
                            }
                        }
                        else
                        {
                            if (first)
                            {
                                first = false;
                            }
                            else
                            {
                                MsgText = AddMessage("PLC断线,重新连接...");
                            }
                            Xinjie.ModbusDisConnect();
                            System.Threading.Thread.Sleep(1000);
                            Xinjie.ModbusInit(PLCPortCom, 19200, System.IO.Ports.Parity.Even, 8, System.IO.Ports.StopBits.One);
                            Xinjie.ModbusConnect();
                        }
                    }
                    catch (Exception ex)
                    {
                        MsgText    = AddMessage(ex.Message);
                        PLCConnect = false;
                    }
                }
            }
        }