コード例 #1
0
        public static bool ClearRecordSingle(int master, int dct)
        {
            bool result = false;

            try
            {
                string send = PLC_Tcp_CP.Get16String(master, 2) + Order_Record_Write_Master + PLC_Tcp_CP.Get16String(dct, 2) + "00";
                string response;
                int    err; string errStr;
                int    num = 0;
                do
                {
                    num++;
                    bool b = SendPLC_DPJ_485(send, new StackTrace().GetFrame(0).GetMethod().ToString(), out response, out err, out errStr);
                    if (b)
                    {
                        result = true;
                        break;
                    }
                    else if (err != 3)
                    {
                        result = false;
                        //csLog.WriteLog(errStr);
                        break;
                    }
                } while (err == 3 && num < 3);
            }
            catch (Exception ex)
            {
                csLog.WriteLog(ex.Message);
            }
            return(result);
        }
コード例 #2
0
        public static bool DCTMoveDownSingle(int master, int dct, int time)
        {
            bool result = false;

            try
            {
                string send = PLC_Tcp_CP.Get16String(master, 2) + Order_DCT_Master + PLC_Tcp_CP.Get16String(dct, 2) + PLC_Tcp_CP.Get16String(time / 10, 2) + PLC_Tcp_CP.Get16String(Config.Mac_C.DelayTime_Record / 10, 2) + PLC_Tcp_CP.Get16String(Config.Mac_C.StopTime_Record / 10, 2);
                string response;
                int    err; string errStr;
                int    num = 0;
                do
                {
                    num++;
                    bool b = SendPLC_DPJ_485(send, new StackTrace().GetFrame(0).GetMethod().ToString(), out response, out err, out errStr);
                    if (b)
                    {
                        result = true;
                        break;
                    }
                    else if (err != 3)
                    {
                        result = false;
                        //csLog.WriteLog(errStr);
                        break;
                    }
                } while (err == 3 && num < 3);
            }
            catch (Exception ex)
            {
                csMsg.ShowWarning(ex.Message, true);
            }
            return(result);
        }
コード例 #3
0
        const int Speed_Manual_Baffle_Lift = 504; //D-2

        public static void SetSpeeds()
        {
            string speed = "";
            string send  = "";
            string response;

            //速度
            speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Auto_Baffle_Belt), 8);
            send  = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Auto_Baffle_Belt) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4);
            if (!SendPLC(send, "传送带挡板自动速度", out response))
            {
                return;
            }
            speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Manual_Baffle_Belt), 8);
            send  = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Manual_Baffle_Belt) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4);
            if (!SendPLC(send, "传送带挡板手动速度", out response))
            {
                return;
            }

            speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Auto_Baffle_Lift), 8);
            send  = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Auto_Baffle_Lift) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4);
            if (!SendPLC(send, "出药斗挡板自动速度", out response))
            {
                return;
            }
            speed = PLC_Tcp_CP.Get16String(int.Parse(Config.Mac_C.Speed_Manual_Baffle_Lift), 8);
            send  = RegDMW + PLC_Tcp_CP.GetAdrD_1000(Speed_Manual_Baffle_Lift) + "0002" + "04" + speed.Substring(4, 4) + speed.Substring(0, 4);
            if (!SendPLC(send, "出药斗挡板手动速度", out response))
            {
                return;
            }
        }
コード例 #4
0
        const int BaffleAutoMovePulse_Down_Lift_On = 13;  //M-1
        public static void BaffleAutoMoveByPulse_Down_Lift(int pulse)
        {
            string s    = PLC_Tcp_CP.Get16String(pulse, 8);
            string send = RegDMW + PLC_Tcp_CP.GetAdrD_1000(BaffleAutoMovePulse_Down_Lift) + "0002" + "04" + s.Substring(4, 4) + s.Substring(0, 4);
            string response;

            if (SendPLC(send, "挡板自动运行脉冲", out response))
            {
                send = RegMSW + PLC_Tcp_CP.GetAdrM(BaffleAutoMovePulse_Down_Lift_On) + "FF00";
                SendPLC(send, "挡板自动运行使能", out response);
            }
        }
コード例 #5
0
        static bool SendPLC_DPJ_485(string send, string mark, out string response, out int err, out string errStr)
        {
            bool result = false;

            err      = 0; errStr = "";
            response = "";
            //添加起始符
            send  = PLC_Tcp_CP.Get16String(send.Length / 2 + 1, 2) + send;
            send += GetFCS(send);
            send  = BeginString + send + EndString;

            try
            {
                while (DPJIsBusy)
                {
                    Thread.Sleep(50);
                }
                DPJIsBusy = true;
                spDPJ.DiscardInBuffer();
                spDPJ.DiscardOutBuffer();

                //写入串口
                byte[] buffer_send = PLC_Tcp_CP.GetBytes(send);
                spDPJ.Write(buffer_send, 0, buffer_send.Length);


                DateTime begin = DateTime.Now;
                int      m = 0, n = 0;
                do
                {
                    Thread.Sleep(50);
                    m = spDPJ.BytesToRead;
                    Thread.Sleep(50);
                    n = spDPJ.BytesToRead;
                }while ((m == 0 || m < n) && DateTime.Now <= begin.AddMilliseconds(1000));
                if (DateTime.Now > begin.AddMilliseconds(1000))
                {
                    errStr = "通讯超时";
                    //记录错误信息
                    string msg = mark + ":" + errStr;
                    csLog.WriteLog(msg);
                }
                if (m > 0)
                {
                    byte[] buffer_response = new byte[m];
                    spDPJ.Read(buffer_response, 0, m);
                    response = PLC_Tcp_CP.GetString(buffer_response);
                }

                DPJIsBusy = false;

                if (CheckResponse(response, out err, out errStr))
                {
                    result = true;
                }
                else
                {
                    //记录错误信息
                    string msg = response + "---" + mark + ":" + errStr;
                    csLog.WriteLog(msg);
                }
            }
            catch (Exception ex)
            {
                DPJIsBusy = false;
                //记录错误信息
                string msg = response + "---" + mark + ":" + ex.Message;
                csLog.WriteLog(msg);
            }
            return(result);
        }