时间段控制代码

今天弄了个时间段控制,总感觉有问题,求大神指点啊:

if (request["Action"] == "PriceLast")
{
    int PriceId = int.Parse(request["PriceId"]);
    List<Control> PrcList = ccp.ModelList("id=1 order by id");
    string StatData = "";
    string EndData = "2099-06-16";
    for (int i = 0; i < PrcList.Count; i++)
    {
        if (PrcList[i].Id == PriceId)
        {
            //如果当前时间段上下都有Item的时候执行取上和取下
            if ((i - 1) != -1 && (i + 1) != PrcList.Count)
            {
                StatData = PrcList[i - 1].EndTime.Value.AddDays(1).ToString("yyyy-MM-dd");
                EndData = PrcList[i + 1].StartTime.Value.AddDays(-1).ToString("yyyy-MM-dd");
            }
            //如果价格唯一执行
            else if ((i - 1) == -1 && (i + 1) == PrcList.Count)
            {
                //如果当前设置时间大于当前时间就默认当前时间如果小于默认当前设置时间
                if ( PrcList[i].StartTime>DateTime.Now)
                {
                    StatData = DateTime.Now.ToString("yyyy-MM-dd");
                }
                else
                {
                    StatData = PrcList[i].StartTime.Value.ToString("yyyy-MM-dd");
                }
            }
            //如果当前条数为最后一条的时候执行
            else if ((i + 1) == PrcList.Count)
            {
                StatData = PrcList[i - 1].EndTime.Value.AddDays(1).ToString("yyyy-MM-dd");
            }
            //多条时间段价格情况下第一条情况执行
            else if (i - 1 == -1)
            {
                StatData = DateTime.Now.ToString("yyyy-MM-dd");
                //如果以下还有一条则取最后一条
                if ((i + 1) != PrcList.Count)
                {
                    EndData = PrcList[i + 1].StartTime.Value.AddDays(-1).ToString("yyyy-MM-dd");
                }
            }
        }
    }
    context.Response.Write("{StatData:'" + StatData + "',EndData:'" + EndData + "'}");
    context.Response.End();
}

 

posted on 2014-10-29 11:11  零-点 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/tom-cat/p/4058981.html

### 回答1: PID 控制是一种常用的控制技术。PID 的全称是比例、积分、微分控制(Proportional-Integral-Derivative Control)。它能够通过调整控制参数来达到系统指定目标的目的。PID 控制的基本结构如下: ``` void PID_Control(float Setpoint, float ProcessValue, float *Kp, float *Ki, float *Kd, float *Output) { float Error, Proportional, Integral, Derivative; static float PreError, PreIntegral; Error = Setpoint - ProcessValue; // 计算偏差 Proportional = *Kp * Error; // 计算比例控制量 Integral = PreIntegral + *Ki * Error; // 计算积分控制量 Derivative = *Kd * (Error - PreError); // 计算微分控制量 *Output = Proportional + Integral + Derivative; // 计算输出控制量 PreError = Error; // 保存上一次的偏差 PreIntegral = Integral; // 保存上一次的积分值 } ``` 其中,Setpoint 是系统的目标值,ProcessValue 是当前系统的实际值,Kp、Ki、Kd 分别是比例、积分、微分控制的系数,Output 是控制输出量。 ### 回答2: 下面是一个使用PID控制算法的示例代码,用于控制一个简单的机械系统。 ```python # 导入相关库 import time # 设定PID控制参数 Kp = 0.6 Ki = 0.3 Kd = 0.2 # 设定目标值和当前值 setpoint = 10.0 current_value = 0.0 # 初始化变量 last_error = 0.0 integral = 0.0 # 设定控制周期和持续时间 sample_time = 0.1 total_time = 10.0 # 记录时间 start_time = time.time() # 循环执行PID控制 while (time.time() - start_time) < total_time: # 计算误差 error = setpoint - current_value # 计算积分项 integral += error * sample_time # 计算微分项 derivative = (error - last_error) / sample_time # 计算PID控制输出 output = Kp * error + Ki * integral + Kd * derivative # 更新当前值(此处省略,假设通过某种方式获取到当前值) # current_value = ... # 输出控制命令(此处省略,假设将控制命令发送给执行机构) # send_control_command(output) # 更新误差和时间 last_error = error time.sleep(sample_time) # 输出总运行时间 print("总运行时间:", time.time() - start_time) ``` 以上代码是一个简单的使用PID控制算法的示例。其中,Kp、Ki和Kd是PID控制的比例、积分和微分参数,可以根据具体控制系统的特性进行调整。该代码使用while循环周期性地进行PID计算和控制输出,实现对机械系统的控制。请注意,根据具体的应用场景,代码中的更新当前值和输出控制命令的方法需要进行相应的修改。 ### 回答3: 以下是一个简单的PID控制代码段: ```python # PID控制参数 KP = 0.5 # 比例系数 KI = 0.2 # 积分系数 KD = 0.1 # 微分系数 # 初始化变量 last_error = 0 # 上一次的误差 integral = 0 # 累计误差 # 设定目标值 target_value = 10 def pid_control(current_value, dt): # 计算误差 error = target_value - current_value # 计算比例项 proportional = KP * error # 计算积分项 integral += KI * error * dt # 计算微分项 derivative = KD * (error - last_error) / dt # 计算控制输出 control_output = proportional + integral + derivative # 更新变量 last_error = error return control_output ``` 此代码使用PID控制算法来计算控制输出。传入当前值和时间差(dt),函数会根据目标值和当前值计算出误差,并按比例系数(KP)、积分系数(KI)和微分系数(KD)计算比例项、积分项和微分项。然后,将这三个项相加得到控制输出。接下来,更新上一次误差的值,以备下一次使用。最后,返回控制输出值。 注意,此代码仅为简化版本,实际应用中可能需要根据具体需求进行更多的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值