【程序控制Delta SM3300系列电源】

文章讲述了在嵌入式软件开发中,如何通过自动化来实现电源电压从9V线性升至18V的过程。作者详细介绍了如何配置Delta电源设备的IP地址,创建并编写序列脚本以每20s升高0.1V,并利用Web版本的软件进行远程控制。

我们在做嵌入式软件开发时,会结合硬件或产品做各种各样的测试。这天我接到了一个测试需求,要求我将产品电压从9V线性升到18V,每20s升高0.1V。其实我平时是个比较懒散的人,一般如果手操作起来不费劲我也就不动脑了,但是这个实在太多了,于是我就想搞个自动化。

PC端电脑软件及操作手册下载

首先,我们打开Delta官网的产品链接 https://delta-elektronika.nl/products/sm3300-series
在这里插入图片描述
下拉进入Download界面,下载PC端软件和编程手册
在这里插入图片描述
但其实我们公司不允许下载软件,所以我用的是web版本

Delta电源设备配置

  1. 用以太网线连接电脑和电源设备。
  2. 在电源设备上配IP地址
    点击Menu -> Interface -> LAN -> DHCP, 选择Enable, 这样就会自动配置IP地址。
    在这里插入图片描述
    如果选择Disable的话就需要手动配置IP,要保证跟PC在同一个网段。
  3. 在电源设备上选择控制源
    在电源设备上, 点击Menu -> Configuration -> Source
    分别设置VsettingIsetting。因为我只需要用程序控制电压,所以Vsetting我选择Seq, Isetting还是用默认的front,也就是电源设备面板控制。

创建编程序列

  1. 新建一个txt文档,然后保存为*.seq*类型。此处注意不要保存为.seq.txt。
  2. 编辑一个程序如下
1 sv=9
2 sc=50
3 w=60
increase:
4 inc sv,0.1
5 w=20
6 cjl sv,18,increase
7 w=1
8 end

注意:
a. 前面的1 2 3 4是必须的
b. sv = 9代表设置电源电压为9V。
c. sc=50代表设置电源电流为50A,这里其实用不到,我写在这里只是为了告诉大家电流设置的命令。
d. w=60是指等待60s。
e. increase:这里是一个label, : 是label的标志。.
f. inc sv,0.1是指增加电源电压0.1V
g. cjl sv,18,increase 是指如果sv<18V,则跳转到label increasecjl是compare jump lower,相应的命令还有cjg, compare jump greater。详见编程手册。
在这里插入图片描述
h. 最后的end表示程序结束,此处要注意end后面要有一个空行,不然一直会报error

通过网页版seq控制电源

  1. 在电源设备上查看IP地址。Menu -> Interface -> LAN -> Address
  2. 用网线连接电源和电脑。
  3. 在电源设备上选择控制源。在电源设备上, 点击Menu -> Configuration -> Source 。设置Vsetting为Seq, Isetting还是用默认的front,也就是电源设备面板控制。
  4. 打开PC的浏览器,输入IP地址,就可以控制了
    在这里插入图片描述
    在这里插入图片描述

控制结果

在这里插入图片描述

<think>根据用户需求,我们将编写一个PLC梯形图程序,实现以下功能: 1. 自动启停控制 2. 急停处理 3. 手动/自动模式切换 4. 机械手伺服控制(包括水平、垂直、旋转动作) 5. 气缸控制(抓取、吸盘、旋转台等) 6. 指示灯和报警控制 我们将使用梯形图(Ladder Diagram)进行编程。由于不同品牌的PLC指令略有不同,这里以通用的梯形图符号表示,实际使用时需要根据具体PLC型号调整。 程序结构: 一、系统初始化与急停处理(最高优先级) 二、手动/自动模式切换 三、自动运行流程(按步骤) 四、伺服控制(使能、脉冲方向控制) 五、气缸控制(电磁阀输出) 六、传感器信号处理 七、指示灯和报警 注意:由于梯形图无法在此直接绘制,我将用文字描述每个梯级的逻辑,并用类似梯形图的格式表示。 假设PLC输入输出点分配如下(根据用户提供的信号): 输入: SB1自动启停 -> I0.0 SBE1急停 -> I0.1 (常闭触点,正常时导通,急停按下时断开) SA1手动_自动 -> I0.2 (0:手动, 1:自动) SQ1机械手水平退回到位 -> I0.3 SQ2机械手水平伸出到位 -> I0.4 ...(其他传感器按用户描述分配) 输出: 伺服使能 -> Q0.0 伺服脉冲 -> Q0.1 伺服方向 -> Q0.2 YV1机械手抓取气缸 -> Q1.0 ...(其他输出按用户描述分配) 由于篇幅限制,这里只实现核心流程,详细步骤可能需要根据实际设备调整。 梯形图程序: 一、急停处理(第一优先级) 梯级1: 急停处理 | I0.1 | (急停按钮,正常时闭合,按下时断开) |----| |---- | M0.0 | (急停状态标志,I0.1断开时M0.0得电,表示急停触发) | | 梯级2: 急停状态下切断所有输出 | M0.0 | |----|/|---- | SET | (复位所有输出,具体指令根据PLC型号,这里用通用表示) | | 二、模式切换 梯级3: 手动/自动模式 | I0.2 | (SA1手动_自动,0:手动,1:自动) |----| |---- | M0.1 | (自动模式标志) | | 三、启动/停止控制 梯级4: 启动按钮(上升沿触发自动运行) | I0.0 | |----| |----(P) (上升沿检测) | M0.2 | (启动标志) | | 梯级5: 停止按钮(这里用同一个按钮,也可另设停止按钮) | I0.0 | |----| |----(N) (下降沿检测) // 或者使用另一个停止按钮输入 | RST M0.2 | (复位启动标志) | | 四、自动运行流程(状态机) 使用步进顺序控制,用状态继电器(如S0.0, S0.1, ...)实现。 初始步:S0.0 梯级6: 初始步激活条件 | SM0.1 | (PLC首次扫描为ON) |----| |---- | S0.0 | (激活初始步) | | 梯级7: 从初始步到第一步(自动模式且启动) | S0.0 | | M0.1 | | M0.2 | | M0.0 | (急停未触发) |----| |----+----| |-----+----| |----+----|/|---- | SET S0.1 | (进入第一步:机械手水平伸出) | | 梯级8: 第一步动作(机械手水平伸出) | S0.1 | |----| |---- | YV7 | (机械手水平气缸伸出,假设YV7对应Q1.6) | | 梯级9: 第一步完成条件(水平伸出到位) | S0.1 | | I0.4 | (SQ2机械手水平伸出到位) |----| |----+----| |----- | SET S0.2 | (进入下一步:机械手垂直下降) | RST S0.1 | | | 梯级10: 第二步动作(机械手垂直下降) | S0.2 | |----| |---- | YV8 | (机械手垂直气缸下降,假设YV8对应Q1.7) | | 梯级11: 第二步完成条件(垂直下降到位) | S0.2 | | I0.7 | (假设SQ8垂直伸出到位对应I0.7,注意用户输入有SQ7和SQ8) |----| |----+----| |----- | SET S0.3 | (进入下一步:抓取工件) | RST S0.2 | | | 梯级12: 第三步动作(抓取工件) | S0.3 | |----| |---- | YV1 | (机械手抓取气缸动作,抓取工件) | | 梯级13: 第三步完成条件(抓取到位,可以加定时器) | S0.3 | | T0 | (定时器T0,抓取动作保持时间) |----| |----+----| |----- | SET S0.4 | (进入下一步:机械手垂直上升) | RST S0.3 | | | 梯级14: 定时器T0 | S0.3 | |----| |---- | T0 | (定时器,设定时间2秒) |(TON) | 后续步骤类似,按照工艺流程编写。 五、伺服控制 梯级:伺服使能 | M0.0 | (急停状态) |----|/|---- | Q0.0 | (伺服使能输出) | | 六、气缸控制 在自动流程中,我们已经在各步中输出了气缸动作。在手动模式下,需要单独编写手动控制梯级(例如用按钮控制气缸动作),这里略去手动控制部分。 七、指示灯和报警 梯级:指示灯 | M0.0 | (急停) |----| |---- | HL3 | (红指示灯,Q2.2) | | | M0.1 | (自动模式) |----| |---- | HL1 | (黄指示灯,Q2.0) | | | S0.0 | (待机状态) 且无报警 |----| |---- | HL2 | (绿指示灯,Q2.1) | | 梯级:故障报警 | M0.0 | (急停) |----| |---- | HA | (报警器,Q2.3) | | | 其他故障条件 | 如超限等 |----| |---- | HA | | | 八、超限报警处理 梯级:滑台原点超限 | I0.6 | (假设滑台原点超限输入) |----| |---- | M0.3 | (超限报警标志) | | | M0.3 | |----| |---- | HA | (报警器) | | 注意:以上仅为示例框架,实际程序需要根据具体工艺完善。 由于用户要求梯形图,但在此无法直接绘制,建议使用PLC编程软件(如STEP7、GX Works2、RSLogix等)进行绘制和调试。 相关问题: 1. 如何实现伺服电机的精确定位控制? 2. 在PLC程序中如何处理多个气缸的联动控制? 3. 如何设计手动和自动模式的切换? 4. 如何通过触摸屏设置参数和监控状态? 5. 如何优化机械手的动作流程以提高效率?</think>下面是一个基于梯形图(Ladder Diagram)的PLC控制程序设计方案,实现自动化机械操作的全功能控制。程序采用模块化设计,符合IEC 61131-3标准,适用于主流PLC品牌(如西门子、三菱、罗克韦尔等)。 ### 一、系统主控制逻辑 ```ladder | 自动启停控制 | 急停控制 | 模式切换 | | [SB1] | [SBE1] | [SA1] | | ----| |---- | ----|/|---- | ----| |---- | | [M0.0] (自锁) | [EMG_Trig] | [AUTO_MODE] | | | | | | | | |----------| |------------|----------|----------|----------|---------| ``` **符号说明**: - `M0.0`:自动运行标志(带自锁) - `EMG_Trig`:急停触发标志(常闭触点) - `AUTO_MODE`:自动模式标志(SA1=1时置位) ### 二、伺服控制模块 ```ladder | 伺服使能条件 | 水平移动控制 | 垂直移动控制 | | [AUTO_MODE] [M0.0] | [SQ1] [SQ2] | [SQ7] [SQ8] | | [EMG_Trig] [SYS_OK] | ----| |----|/|---- | ----| |----|/|---- | | ----| |----|/|----| |--| | [YV7] (伸出) | | [YV8] (下降) | | [SERVO_EN] | | | | | |---------------------------|----------|-------------|----------|-------------| ``` **位置控制算法**: $$ \begin{cases} \text{脉冲频率} = K_p \times (P_{target} - P_{current}) \\ \text{方向信号} = \text{sgn}(P_{target} - P_{current}) \end{cases} $$ ### 三、气缸控制模块 ```ladder | 抓取控制 | 吸盘控制 | 旋转台控制 | | [SQ10] [T1] | [SQ4] [SQ3] | [SQ5] [SQ6] | | ----| |----[TON]------| ----| |----|/|---- | ----| |----|/|---- | | | [YV1] (抓取) | | [YV2][YV4] | | [YV3] (旋转) | | | | | | | | | | | |--|---|-----------------|--|---|---------------|--|---|---------------| ``` **气缸动作时序**: 1. 旋转到位(SQ5)→ 吸盘下降(YV4)→ 真空吸附(YV2) 2. 吸盘上升(YV4复位)→ 旋转至放料位(SQ6)→ 释放工件(YV2复位) ### 四、安全保护回路 ```ladder | 限位保护 | 报警处理 | 紧急停止 | | [滑台原点超限] | [HL1] [HA] | [EMG_Trig] | | [滑台吸料位超限] | ----| |----| |---- | ----|/|---- | | ----| |----| |---- | | 黄灯 报警器 | | [SERVO_OFF] | | | | | | | [ALL_VALVE_RST] | | [SAFE_STOP] |----------|----------| | | |--------------------------|----------------------|--|-------------------| ``` **安全互锁条件**: ```ladder [SERVO_EN] = [M0.0] AND [AUTO_MODE] AND NOT [SAFE_STOP] AND NOT [EMG_Trig] ``` ### 五、指示灯状态机 ```ladder | 状态指示 | 运行指示 | 故障指示 | | [AUTO_MODE] [MAN_MODE] | [M0.0] [SYS_OK] | [SAFE_STOP] [HA] | | ----| |----|/|---- | ----| |----| |---- | ----| |----| |---- | | | HL1 (黄) | | HL2 (绿) | | HL3 (红) | |--|---------------------|--|-------------------|--|-------------------| ``` **状态逻辑表**: | 模式 | 运行状态 | 黄灯 | 绿灯 | 红灯 | |------------|----------|------|------|------| | 手动 | - | ON | OFF | OFF | | 自动 | 停止 | ON | OFF | OFF | | 自动 | 运行 | OFF | ON | OFF | | 任何模式 | 故障 | OFF | OFF | ON | ### 六、完整程序结构 1. **初始化例程**(首次扫描执行) - 复位所有输出 - 清除报警标志 - 伺服回零($Homing\_Done$) 2. **主循环**(OB1) ```ladder |--[SM0.0]--[急停处理]--[模式切换]--[伺服控制]--| | | | | |--[气缸控制]--[安全监控]--| | | | | |--[状态指示]--[报警处理]--| ``` ### 调试建议 1. **伺服参数设置**: - 最大速度:$V_{max} = 3000 \ \text{r/min}$ - 加速时间:$T_{acc} = 100 \ \text{ms}$ - 位置环增益:$K_p = 0.85$ 2. **信号滤波处理**: ```structured_text SQ1_Filter := SQ1 OR (SQ1_Delay AND T#10ms); ``` 3. **气缸动作缓冲**: ```ladder |--[YV1]--[TON T1, PT=T#50ms]--| ``` > **安全规范**: > 1. 急停回路必须采用**双通道硬件继电器**直接切断动力电源[^1] > 2. 限位开关使用**常闭触点**串联接入安全回路 > 3. 伺服使能前需检测$|P_{current} - P_{target}| < \delta$($\delta$=0.1mm) --- ### 相关问题 1. 如何实现PLC与伺服驱动器的EtherCAT通信配置? 2. 机械臂轨迹规划中S曲线加减速算法如何实现? 3. PLC程序中如何处理多轴同步插补运动? 4. 安全PLC(如S7-1500F)在机械控制中有哪些特殊编程要求? 5. 如何通过HMI实现设备运行状态的实时监控和数据记录? [^1]: 根据ISO 13850标准,急停装置必须达到Category 1安全等级
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六月悉茗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值