CP1H 用ST语言写算法 点击:1404 | 回复:16



hua202hua

    
  • 精华:0帖
  • 求助:6帖
  • 帖子:14帖 | 82回
  • 年度积分:446
  • 历史总积分:818
  • 注册:2014年6月16日
发表于:2022-12-01 11:32:54
楼主
求助帖50分-未结帖

来个大佬 写一个程序例子呗   我用的是CP1H 我现在想用ST语言 写 一个数组求和   最大值  最小值 平均  除法 是怎么写的  我在函数定义哪里就卡住了  找不到数组的设置在呢 所以求个大佬 写个例子 呗



楼主最近还看过



Auto -

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 28回
  • 年度积分:275
  • 历史总积分:695
  • 注册:2017年11月27日
发表于:2022-12-01 12:11:28
1楼

Array REAL [20] 0.0 INTERNAL 0 0

Sum         REAL 0.0 INTERNAL 0 0

i         REAL 0.0 INTERNAL 0 0

aMax REAL 0.0 INTERNAL 0 0

aMin REAL 0.0 INTERNAL 0 0

result REAL 0.0 INTERNAL 0 0




aMax :=  Array[0];

aMin:= Array[0];


FOR i := 0 TO 19 BY 1 DO

Sum := Sum + Array[i];   

IF aMax < Array[i] THEN

aMax := Array[i];

END_IF;

IF aMin > Array[i] THEN

aMin :=  Array[i];

END_IF;

END_FOR;


result :=  Array[0] / 10.0;


xuyunfengnet

  • 精华:2帖
  • 求助:0帖
  • 帖子:3帖 | 62回
  • 年度积分:0
  • 历史总积分:190
  • 注册:2013年6月19日
发表于:2022-12-01 14:41:45
2楼

支持!

benchmark

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 85回
  • 年度积分:0
  • 历史总积分:209
  • 注册:2011年9月08日
发表于:2022-12-01 14:47:14
3楼

"Auto -" 的回复,发表在1楼
        对内容: 【Array REAL [20] 0.0 INTERNAL 0 0 Sum         REAL 0.0 INTERNAL 0 0 i         REAL 0.0 ...】进行回复:

        -----------------------------------------------------------------


i定义real没问题吗?

hua202hua

  • 精华:0帖
  • 求助:6帖
  • 帖子:14帖 | 82回
  • 年度积分:446
  • 历史总积分:818
  • 注册:2014年6月16日
发表于:2022-12-01 22:22:23
4楼

大佬 我把你的用CP1H  写进去了 用不了咧  提示 Array[0]  出错


芒果小平子

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 676回
  • 年度积分:88
  • 历史总积分:787
  • 注册:2016年11月24日
发表于:2022-12-02 15:06:49
5楼

支持!

生活所迫1

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 80回
  • 年度积分:1174
  • 历史总积分:1411
  • 注册:2021年12月17日
发表于:2022-12-05 13:42:01
6楼

REAL a

ARRAY[0..19] OF a

这样定义试试

yangyinglin

  • 精华:0帖
  • 求助:1帖
  • 帖子:10帖 | 56回
  • 年度积分:83
  • 历史总积分:83
  • 注册:2012年3月28日
发表于:2022-12-05 16:46:56
7楼

i应该是整数int     i:=int;

罗特

  • 精华:0帖
  • 求助:1帖
  • 帖子:6帖 | 19回
  • 年度积分:59
  • 历史总积分:1534
  • 注册:2020年3月18日
发表于:2022-12-08 14:46:46
8楼

下面是一个使用ST语言在CP1H控制器上求数组和、最大值、最小值和平均值的程序例子。这个程序中定义了一个名为ArrayCalc的函数,用于计算给定数组的和、最大值、最小值和平均值。


// 定义一个长度为10的数组

DIM array[10]


// 定义一个函数,用于计算数组的和、最大值、最小值和平均值

FUNC ArrayCalc:

    // 定义局部变量,用于保存结果

    VAR sum = 0, max = 0, min = 0

    

    // 遍历数组中的所有元素

    FOR i = 0 TO 9

        // 求和

        sum = sum + array[i]

        

        // 找最大值

        IF array[i] > max THEN

            max = array[i]

        END

        

        // 找最小值

        IF array[i] < min THEN

            min = array[i]

        END

    NEXT

    

    // 计算平均值

    AVG = sum / 10

    

    // 返回 


Auto -

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 28回
  • 年度积分:275
  • 历史总积分:695
  • 注册:2017年11月27日
发表于:2022-12-17 16:17:42
9楼

"benchmark" 的回复,发表在3楼
        对内容: 【"Auto -" 的回复,发表在1楼        对内容: 【Array REAL [20] 0.0 INTERNAL 0 0 Sum         REAL 0.0 INTE...】进行回复:

        -----------------------------------------------------------------


定义 INT

Auto -

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 28回
  • 年度积分:275
  • 历史总积分:695
  • 注册:2017年11月27日
发表于:2022-12-17 16:20:31
10楼

"hua202hua" 的回复,发表在4楼
        对内容: 【大佬 我把你的用CP1H  写进去了 用不了咧  提示 Array[0]  出错...】进行回复:

        -----------------------------------------------------------------


i 定义 INT ,写快了 没注意,抱歉

Smile-lyc

  • [管理员]
  • 精华:127帖
  • 求助:50帖
  • 帖子:3482帖 | 22331回
  • 年度积分:1963
  • 历史总积分:145694
  • 注册:2006年8月04日
发表于:2023-02-07 10:36:48
11楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。

4、2023加油!!


gk2017

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 22回
  • 年度积分:155
  • 历史总积分:209
  • 注册:2017年9月18日
发表于:2023-02-18 12:48:27
12楼

PROGRAM ArrayOperations

VAR

    arrNumbers: ARRAY[1..5] OF INT := [5, 2, 8, 1, 4];

    iSum: INT := 0;

    iMax: INT := 0;

    iMin: INT := arrNumbers[1];

    iCount: INT := 0;

    rAverage: REAL := 0.0;

END_VAR


FOR iIndex := 1 TO 5 DO

    iSum := iSum + arrNumbers[iIndex];   // 求和

    iCount := iCount + 1;   // 数组元素个数

    IF arrNumbers[iIndex] > iMax THEN   // 求最大值

        iMax := arrNumbers[iIndex];

    END_IF

    IF arrNumbers[iIndex] < iMin THEN   // 求最小值

        iMin := arrNumbers[iIndex];

    END_IF

END_FOR


IF iCount > 0 THEN   // 防止除数为0

    rAverage := REAL_TO_INT(iSum) / REAL_TO_INT(iCount);   // 求平均值

END_IF


END_PROGRAM


huangyi123

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 11回
  • 年度积分:67
  • 历史总积分:117
  • 注册:2022年11月21日
发表于:2023-04-17 19:31:20
13楼

"罗特" 的回复,发表在8楼
        对内容: 【下面是一个使用ST语言在CP1H控制器上求数组和、最大值、最小值和平均值的程序例子。这个程序中定义了一个名为ArrayCalc的函数,用于计算给定数组的和、最大值、最小值和平均值。// 定义一个长度为...】进行回复:

        -----------------------------------------------------------------

vb写法,不错!!!!!!


Li-bra

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 138回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2018年6月08日
发表于:2024-08-15 15:16:39
14楼

支持!

回复本条

    

1993mjx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 314回
  • 年度积分:6
  • 历史总积分:99
  • 注册:2016年1月08日
发表于:2024-09-01 13:29:42
15楼

感谢楼主分享

回复本条

    

小灰灰1234567890

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:2
  • 历史总积分:54
  • 注册:2017年7月13日
发表于:2024-09-05 17:07:36
16楼

一般说明书里面有这些指令

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师