z8018
2025-06-09 0aac30d1c6f1ca0c2bf7662fb9ca4f0d98b3bca7
project/ºǫ́¹ÜÀí/WIDESEAWCS_Server/WIDESEAWCS_TelescopicService/ParametersService.cs
@@ -36,133 +36,189 @@
        /// <returns></returns>
        public WebResponseContent automation(string extendedState)
        {
            var messages = new List<string>();
            //string   message = "";
            try
            {
                for (int deptId = 1; deptId <= 5; deptId++)
                {
                    var devices = GetDevicesByDeptId(deptId);
                    if (devices == null)
                    {
                        Console.WriteLine($"DeptId={deptId} æœªæ‰¾åˆ°è®¾å¤‡ï¼Œè·³è¿‡");
                        continue;
                    }
                    var para = BaseDal.QueryData()
                        .Where(x => x.Deptid == deptId)
                        .OrderByDescending(x => x.CreateDate)
                        .FirstOrDefault();
                    if (para == null)
                    {
                        Console.WriteLine($"DeptId={deptId} æœªæ‰¾åˆ°å‚数配置,跳过");
                        continue;
                    }
                    int ext = (int)para.ExtendSpeed;//å·¦PLC自动伸出缩回速度
                    int ret = (int)para.RetractionSpeed;//右PLC自动伸出缩回速度
                    int liftPosition = (int)para.LeftPosition;//左伸出位置
                    int rigtpostition = (int)para.RightPosition;//右伸出位置
                    try
                    {
                        var leftorigin = devices.Value.left.Communicator.Read<bool>("M115");//å·¦plc到原点位置信号
                        var rightorigin = devices.Value.right.Communicator.Read<bool>("M115");//右plc到达原点位置信号
                        if (leftorigin == true || rightorigin == true)
                        var devices = GetDevicesByDeptId(deptId);
                        if (devices == null)
                        {
                            return new WebResponseContent { Status = false, Message = "已到原始点" };
                        }
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                        var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                        if (lefttarget == true || righttarget == true)
                        {
                            return new WebResponseContent { Status = false, Message = "已到最大值" };
                            messages.Add($"DeptId={deptId} æœªæ‰¾åˆ°è®¾å¤‡ï¼Œè·³è¿‡");
                            continue;
                        }
                    }
                    catch (Exception)
                    {
                        var para = BaseDal.QueryData()
                            .Where(x => x.Deptid == deptId)
                            .OrderByDescending(x => x.CreateDate)
                            .FirstOrDefault();
                    }
                    if (extendedState == "伸出")
                    {
                        try
                        if (para == null)
                        {
                            devices.Value.left.Communicator.Write<int>("D1001", ext);//å·¦PLC自动伸出缩回速度
                            devices.Value.left.Communicator.Write<bool>("M102", true);//伸出按钮
                            devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                            messages.Add($"DeptId={deptId} æœªæ‰¾åˆ°å‚数配置,跳过");
                            continue;
                        }
                        catch (Exception)
                        {
                        }
                        int ext = (int)para.ExtendSpeed;
                        int ret = (int)para.RetractionSpeed;
                        int liftPos = (int)para.LeftPosition;
                        int rightPos = (int)para.RightPosition;
                        // ç‹¬ç«‹åˆ¤æ–­å·¦/右是否可执行
                        bool canLeft = true, canRight = true;
                        try
                        {
                            devices.Value.right.Communicator.Write<int>("D1001", ret); //右PLC自动伸出缩回速度
                            devices.Value.right.Communicator.Write<bool>("M102", true);
                            devices.Value.right.Communicator.Write<int>("D1002", rigtpostition);//右伸出位置
                            var leftOrigin = devices.Value.left.Communicator.Read<bool>("M115");//到达原点
                            if (leftOrigin)
                            {
                                messages.Add($"{deptId}轨道左PLC已到原点");
                                canLeft = false;
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                        Console.WriteLine($"DeptId={deptId} ï¼Œå·¦é€Ÿåº¦={ext},右速度={ret}");
                    }
                    else if (extendedState == "缩回")
                    {
                        { }
                        try
                        {
                            devices.Value.left.Communicator.Write<int>("D1001", ext);//缩回速度
                            devices.Value.left.Communicator.Write<bool>("M103", true);//缩回按钮
                            var rightOrigin = devices.Value.right.Communicator.Read<bool>("M115");
                            if (rightOrigin)
                            {
                                messages.Add($"{deptId}轨道右PLC已到原点");
                                canRight = false;
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                        try
                        {
                            devices.Value.right.Communicator.Write<int>("D1001", ret);
                            devices.Value.right.Communicator.Write<bool>("M103", true);
                            var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                            if (lefttarget)
                            {
                                messages.Add($"{deptId}轨道左plc到达目标位置");
                                canLeft = false;
                            }
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                        Console.WriteLine($"DeptId={deptId} ç¼©å›žæ“ä½œï¼Œå·¦é€Ÿåº¦={ext},右速度={ret}");
                        try
                        {
                            var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                            if (righttarget)
                            {
                                messages.Add($"{deptId}轨道右plc到达目标位置");
                                canRight = false;
                            }
                        }
                        catch (Exception)
                        {
                        }
                        if (extendedState == "伸出")
                        {
                            if (canLeft)
                            {
                                try
                                {
                                    devices.Value.left.Communicator.Write<int>("D1001", ext);
                                    devices.Value.left.Communicator.Write<bool>("M102", true);
                                    devices.Value.left.Communicator.Write<int>("D1002", liftPos);
                                }
                                catch (Exception)
                                {
                                }
                            }
                            if (canRight)
                            {
                                try
                                {
                                    devices.Value.right.Communicator.Write<int>("D1001", ret);
                                    devices.Value.right.Communicator.Write<bool>("M102", true);
                                    devices.Value.right.Communicator.Write<int>("D1002", rightPos);
                                }
                                catch (Exception)
                                {
                                }
                            }
                        }
                        else if (extendedState == "缩回")
                        {
                            if (canLeft)
                            {
                                try
                                {
                                        devices.Value.left.Communicator.Write<int>("D1001", ext);
                                        devices.Value.left.Communicator.Write<bool>("M103", true);
                                    }
                                catch (Exception)
                                {
                                }
                            }
                            if (canRight)
                            {
                                try
                                {
                                        devices.Value.right.Communicator.Write<int>("D1001", ret);
                                        devices.Value.right.Communicator.Write<bool>("M103", true);
                                    }
                                catch (Exception)
                                {
                                }
                            }
                        }
                        else
                        {
                            return new WebResponseContent { Status = false, Message = "未知操作命令" };
                        }
                    }
                    else
                    catch (Exception exDept)
                    {
                        return new WebResponseContent { Status = false, Message = "未知的操作命令" };
                        messages.Add($"DeptId={deptId} å¼‚常:{exDept.Message}");
                    }
                }
                return new WebResponseContent { Status = true, Message = "全部设备操作完成",
                return new WebResponseContent
                {
                    Status = true,
                    Message = messages.Count == 0 ? "执行成功" : "部分执行失败:" + string.Join(";", messages),
                    Data = messages
                };
            }
            catch (Exception ex)
            {
                return new WebResponseContent { Status = false, Message = $"操作异常:{ex.Message}" };
                return new WebResponseContent
                {
                    Status = false,
                    Message = $"自动控制异常:{ex.Message}"
                };
            }
        }
@@ -190,60 +246,106 @@
                int ext = (int)para.ManualExtend;//å·¦PLC手动伸出缩回速度
                int ret = (int)para.ManualRetraction;//右PLC手动伸出缩回速度
                int liftPosition = (int)para.LeftPosition;//左伸出位置
                int rigtpostition = (int)para.RightPosition;//右伸出位置
                bool canLeft = true,
                   canRight = true;
                string message = "";
                try
                {
                    var leftorigin = devices.Value.left.Communicator.Read<bool>("M115");//å·¦plc到原点位置信号
                    var rightorigin = devices.Value.right.Communicator.Read<bool>("M115");//右plc到达原点位置信号
                    if (leftorigin == true || rightorigin == true)
                    {
                        return new WebResponseContent { Status = false, Message = "已到原始点" };
                    }
                }
                catch (Exception)
                {
                    var leftOrigin = devices.Value.left.Communicator.Read<bool>("M115");
                }
                try
                {
                    var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                    var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                    if (lefttarget == true || righttarget == true)
                    if (leftOrigin)
                    {
                        return new WebResponseContent { Status = false, Message = "已到最大值" };
                        message += "å·¦PLC已到原点;";
                        canLeft = false;
                    }
                }
                catch (Exception)
                { }
                try
                {
                    var rightOrigin = devices.Value.right.Communicator.Read<bool>("M115");
                    if (rightOrigin)
                    {
                        message += "右PLC已到原点;";
                        canRight = false;
                    }
                }
                catch (Exception)
                {
                }
                    try
                    {
                        var lefttarget = devices.Value.left.Communicator.Read<bool>("M116");//å·¦plc到达目标位置
                        if (lefttarget)
                        {
                            message += "å·¦plc到达目标位置;";
                            canLeft = false;
                        }
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        var righttarget = devices.Value.right.Communicator.Read<bool>("M116");//右plc到达目标位置
                        if (righttarget)
                        {
                            message += "右plc到达目标位置;";
                            canRight = false;
                        }
                if (position == "å·¦" && ExtendedState == "伸出")
                    }
                    catch (Exception)
                    {
                    }
                if (canLeft)
                {
                    devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                    Console.WriteLine($"{position}å·¦PLC自动伸出缩回速度{ext}");
                    if (position == "å·¦" && ExtendedState == "伸出")
                    {
                        devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M100", true);//伸出按钮
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.left.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ext}");
                    }
                    else if (position == "å·¦" && ExtendedState == "缩回")
                    {
                        devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                        devices.Value.left.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.left.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ext}");
                    }
                }
                else if (position == "å·¦" && ExtendedState == "缩回")
                if (canRight)
                {
                    devices.Value.left.Communicator.Write<int>("D1000", ext);//å·¦PLC手动伸出缩回速度
                    devices.Value.left.Communicator.Write<bool>("M101", true);
                    Console.WriteLine($"{position}å·¦PLC自动伸出缩回速度{ext}");
                }
                else if (position == "右" && ExtendedState == "伸出")
                {
                    devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M100", true);
                    Console.WriteLine($"{position}右PLC自动伸出缩回速度{ext}");
                }
                else if (position == "右" && ExtendedState == "缩回")
                {
                    devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                    devices.Value.right.Communicator.Write<bool>("M101", true);
                    Console.WriteLine($"{position}右PLC自动伸出缩回速度{ret}");
                    if (position == "右" && ExtendedState == "伸出")
                    {
                        devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M100", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M100", false); // é‡Šæ”¾æŒ‰é’®
                        devices.Value.right.Communicator.Write<int>("D1002", liftPosition);//左伸出位置
                        Console.WriteLine($"{position}伸缩杆手动伸出{ret}");
                    }
                    else if (position == "右" && ExtendedState == "缩回")
                    {
                        devices.Value.right.Communicator.Write<int>("D1000", ret);//右PLC手动伸出缩回速度
                        devices.Value.right.Communicator.Write<bool>("M101", true);
                        Thread.Sleep(100); // ç­‰å¾…100ms(模拟按钮按下)
                        devices.Value.right.Communicator.Write<bool>("M101", false); // é‡Šæ”¾æŒ‰é’®
                        Console.WriteLine($"{position}伸缩杆手动缩回{ret}");
                    }
                }
                else
@@ -251,11 +353,13 @@
                    return new WebResponseContent { Status = false, Message = "状态参数错误" };
                }
                return new WebResponseContent { Status = true, Message = "成功",
                return new WebResponseContent { Status = true,
                    Message = string.IsNullOrEmpty(message) ? "执行成功" : $"执行失败:{message}",
                    Data = new
                    {
                        ManualExtend = ext,
                        ManualRetraction = ret
                        ManualRetraction = ret,
                        message
                    }
                };