hyp018
何勇平
级别: 略有小成
精华主题: 0
发帖数量: 46 个
工控威望: 211 点
下载积分: 813 分
在线时间: 444(小时)
注册时间: 2008-02-11
最后登录: 2024-12-22
查看hyp018的 主题 / 回贴
楼主  发表于: 2024-06-19 12:07
100个电机间隔N秒顺启逆停,昆仑通态脚本如何实现最优
学徒工
黄辉冯某某
微信 F1049305119
级别: 略有小成
精华主题: 0
发帖数量: 334 个
工控威望: 457 点
下载积分: 1235 分
在线时间: 146(小时)
注册时间: 2022-03-21
最后登录: 2024-12-21
查看黄辉冯某某的 主题 / 回贴
1楼  发表于: 2024-06-19 12:22
顺序启动
QQ 302961958
闲鱼  ucldnaqk ,有一些二手学习硬件低价出售
欢迎私聊
hstec2002
级别: 论坛先锋
精华主题: 0
发帖数量: 489 个
工控威望: 1892 点
下载积分: 8465 分
在线时间: 680(小时)
注册时间: 2021-05-05
最后登录: 2024-12-20
查看hstec2002的 主题 / 回贴
2楼  发表于: 2024-06-19 12:27
没最优,只有更优,建议数组+FOR
QQ: 2845452345
未来代码侠
未来已来,与AI同行。
级别: 家园常客
精华主题: 0
发帖数量: 378 个
工控威望: 865 点
下载积分: 1078 分
在线时间: 217(小时)
注册时间: 2023-05-11
最后登录: 2024-10-16
查看未来代码侠的 主题 / 回贴
3楼  发表于: 2024-06-19 14:36
实现100个电机间隔N秒顺启逆停的最优方法,可以采用昆仑通态触摸屏的脚本编程,结合定时器和循环控制。以下是一个基本的实现思路,考虑到优化和效率,我们将使用循环和递增延迟来控制电机的启动和停止顺序。

### 步骤1:定义电机数组和时间变量
首先,在脚本中定义一个数组来存储电机的状态,以及一个变量来控制时间间隔N秒。

```javascript
// 假设电机编号为1到100
var motorStatus = new Array(100); // 初始化电机状态数组,初始状态可以设为0表示未启动
var delayTime = N; // N秒的间隔时间
```

### 步骤2:顺启逻辑
使用循环结构,每次循环启动下一个电机,并设置定时器来控制启动间隔。

```javascript
function startMotors() {
    for (var i = 0; i < motorStatus.length; i++) {
        if (motorStatus == 0) { // 如果电机未启动
            // 假设startMotor(i)是启动电机i的函数
            startMotor(i);
            motorStatus = 1; // 标记电机已启动
            // 设置定时器,延时启动下一个电机
            setTimeout(function() {
                if (i < motorStatus.length - 1) {
                    startMotors(); // 递归调用,启动下一个电机
                }
            }, delayTime * 1000); // 注意单位转换,毫秒
            break; // 每次只启动一个电机后跳出循环
        }
    }
}
```

### 步骤3:逆停逻辑
逆停逻辑与顺启类似,但需要从最后一个电机开始,向前停止。

```javascript
function stopMotors(startIndex) {
    if (startIndex >= 0) {
        // 假设stopMotor(i)是停止电机i的函数
        stopMotor(startIndex);
        motorStatus[startIndex] = 0; // 标记电机已停止
        setTimeout(function() {
            stopMotors(startIndex - 1); // 递归调用,停止前一个电机
        }, delayTime * 1000);
    }
}
```

### 步骤4:启动与停止触发
在触摸屏界面上设置按钮,分别触发`startMotors()`和`stopMotors(motorStatus.length - 1);`来开始和结束整个过程。

### 注意事项
- 确保`startMotor`和`stopMotor`函数是有效的,它们应该根据实际的硬件接口控制电机的启停。
- 考虑到性能和资源,确保定时器的使用不会导致程序过载。
- 实际应用中,可能需要考虑电机启动和停止的硬件限制,比如电流冲击和电机的启动时间。
- 优化时,考虑使用中断或更高效的循环控制机制,如果昆仑通态支持高级定时器或事件触发机制。

此方案提供了一个基本框架,实际应用中可能需要根据昆仑通态的具体脚本语言特性和硬件限制进行调整。
智慧引领未来,创新改变世界。 AI回答仅供参考。不对也不改!!!
皮五
级别: 工控侠客
精华主题: 0
发帖数量: 631 个
工控威望: 2302 点
下载积分: 2281 分
在线时间: 360(小时)
注册时间: 2007-07-14
最后登录: 2024-12-21
查看皮五的 主题 / 回贴
4楼  发表于: 2024-06-19 15:09
昆仑新版本mcgspro支持指针,可以用定时器切换指针来做
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 185 个
工控威望: 263 点
下载积分: 810 分
在线时间: 74(小时)
注册时间: 2021-10-31
最后登录: 2024-12-19
查看ayusecret的 主题 / 回贴
5楼  发表于: 2024-06-19 15:13
引用
引用第3楼未来代码侠于2024-06-19 14:36发表的  :
实现100个电机间隔N秒顺启逆停的最优方法,可以采用昆仑通态触摸屏的脚本编程,结合定时器和循环控制。以下是一个基本的实现思路,考虑到优化和效率,我们将使用循环和递增延迟来控制电机的启动和停止顺序。

### 步骤1:定义电机数组和时间变量
首先,在脚本中定义一个数组来存储电机的状态,以及一个变量来控制时间间隔N秒。

.......

一股AI味
dzh832
级别: 论坛先锋
精华主题: 0
发帖数量: 517 个
工控威望: 1042 点
下载积分: 6894 分
在线时间: 84(小时)
注册时间: 2017-04-08
最后登录: 2024-12-22
查看dzh832的 主题 / 回贴
6楼  发表于: 2024-06-19 15:25
谢谢分享,
payfsl
级别: 工控侠客
精华主题: 2 篇
发帖数量: 2601 个
工控威望: 2873 点
下载积分: 39998 分
在线时间: 484(小时)
注册时间: 2010-08-03
最后登录: 2024-12-15
查看payfsl的 主题 / 回贴
7楼  发表于: 2024-08-25 15:27
可以用指针来做
三人行必有我师焉,择其善者而从之 ,学而不思则罔,思而不学则殆
payfsl
级别: 工控侠客
精华主题: 2 篇
发帖数量: 2601 个
工控威望: 2873 点
下载积分: 39998 分
在线时间: 484(小时)
注册时间: 2010-08-03
最后登录: 2024-12-15
查看payfsl的 主题 / 回贴
8楼  发表于: 2024-09-06 18:57
要实现100个电机间隔N秒顺启逆停,最优的方法是使用昆仑通态触摸屏的脚本编程,结合定时器和循环控制。以下是一个基本的实现思路:

初始化设置:

定义一个数组来存储每个电机的状态(启动或停止)。
设置一个全局变量N来表示电机启动和停止的间隔时间。
启动顺序控制:

使用一个循环来控制电机的启动顺序。每次循环中,启动一个电机,并设置一个定时器,定时器的间隔时间为N秒。
在定时器触发时,启动下一个电机,并重复此过程,直到所有电机都启动。
停止顺序控制:

在所有电机启动完成后,使用另一个循环来控制电机的停止顺序。每次循环中,停止一个电机,并设置一个定时器,定时器的间隔时间为N秒。
在定时器触发时,停止下一个电机,并重复此过程,直到所有电机都停止。
优化考虑:

为了提高效率,可以使用递增延迟来控制电机的启动和停止顺序,这样可以减少定时器的使用数量,从而提高脚本的执行效率。
具体实现:

在昆仑通态触摸屏的脚本编辑器中,编写一个循环脚本,控制电机的启动和停止。可以使用定时器来实现间隔N秒的操作。
例如,可以使用FOR循环来遍历电机数组,并在每次循环中启动或停止一个电机,同时设置定时器来控制下一个电机的操作。
通过这种方式,可以实现100个电机间隔N秒顺启逆停的最优控制,确保每个电机的启动和停止顺序正确,并且脚本的执行效率较高
三人行必有我师焉,择其善者而从之 ,学而不思则罔,思而不学则殆