scl 语言编写的程序一直cpu报错 请老师帮忙帮忙看一下问题出在哪里

已锁定

谭城

  • 帖子

    19
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2018-12-19

普通 普通 如何晋级?

scl 语言编写的程序一直cpu报错 请老师帮忙帮忙看一下问题出在哪里

262

1

2019-06-17 09:53:38

//CPU 临时错误:FB 5 中的区域长度错误
//将影响 OB 1 的执行
//读访问 保持性 DB 区域
//地址错误,已更换操作数
// 继续处理(无 OB 处理)

    // Input
    // #analog_in   DInt
    // #simple_time Time
    // #simple_no   Int
    // #simple_hi_no    Int
    // #simple_lo_no    Int
    // Output
    // #analog_out  DInt
    // InOut
   
    // Static
    // #analog_array    Array[1..50] OF DInt
    // #ok_array    Array[1..50] OF DInt
    // #data_num    Int
    // #max_value   DInt
    // #min_value   DInt
    // #CurrTimer   TON_TIME
    // #data_calculate  Bool
    // Temp
    // #i   Int
    // #i_1 Int
    // #j   Int
    // #j_1 Int
    // #j_2 Int
    // #Sum DInt
    // #tmpReal DInt
    // #tmpReal_1   DInt
    // #fc_Data_digit   Int
    // #fc_Array_Length Int
    // Constant


#CurrTimer(IN := NOT #data_calculate,  //延时
           PT := #simple_time);
#data_calculate := #CurrTimer.Q;
IF #data_calculate THEN
    //采样数
    IF #simple_no > 50 THEN
        #data_num := 50;
    ELSE
        #data_num := #simple_no;
    END_IF;
    //数据采集
    FOR #i := 0 TO #data_num DO
        #analog_array[#i] := 0;
    END_FOR;
   
    //数据排序
    #ok_array := #analog_array;
    FOR #i := 0 TO #data_num BY 1 DO
        #ok_array[#i] := 0;
            FOR #i_1 := 1 TO #data_num - 1 BY +1 DO
                FOR #j_1 := #i_1 + 1 TO #data_num BY +1 DO
                    IF #ok_array[#i_1] < #ok_array[#j_1] THEN
                        #tmpReal := #ok_array[#j_1];
                        #ok_array[#j_1] := #ok_array[#i_1];
                        #ok_array[#i_1] := #tmpReal;
                    END_IF;
                    #ok_array[#i_1] := #tmpReal;
                END_FOR;
            END_FOR;
     END_FOR;
   

                              
    //计算小值和
     FOR #i_1 := 0 TO #simple_lo_no BY 1 DO
        #min_value := #min_value + #ok_array[#i_1];
    END_FOR;
    //计算大值和
    FOR #j_1 := #data_num - #simple_hi_no TO #data_num BY 1 DO
        #max_value := #max_value + #ok_array[#j_1];
    END_FOR;
    //计算累计和
    #Sum := 0;
    FOR #i_1 := 0 TO #data_num BY 1 DO
        #Sum := #Sum + #ok_array[#i_1];        // ( #ok_array )              一直报错 修改数组长度无效
    END_FOR;
    #analog_out := (#Sum - #max_value - #min_value) / (#data_num - #simple_hi_no - #simple_lo_no);
   END_IF;

  最后第二行一直报错 修改数组长度无效

监控时数组变量无数据 出现 

改写的第一个程序,里面问题肯定很多。幸苦老师了。



scl 语言编写的程序一直cpu报错 请老师帮忙帮忙看一下问题出在哪里 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

S7-1200精英训练营

共有1959条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。