PLC编程


博图快捷键

*     XXXXXX   *)注释掉你所选择的区域
Ctrl+Shift+Y 注释掉你所选择的区域

Ctrl+Shift+U 取消注释所选择的区域

Ctrl+Shift+W 自动格式化所选择的区域

Ctrl+Shift+E cpu切换到run

Ctrl+Shift+Q cpu切换到stop

Ctrl+B 编译

Ctrl+R 插入梯形图程序块

Ctrl+T 转至在线

Ctrl+F2 修改为1

Ctrl+F3 修改为0

F1 查找模块对应资料

PLC编程

零点

存储位置

报文 3(PLC 工艺对象):零点存在 PLC 侧的工艺对象数据块(DB) 里,驱动器只负责跑位置环

报文 111(EPOS/FB284):零点存在伺服驱动器参数 P2599,同时映射到 PLC 过程数据区(PZD)

零点设置

桁架零点设置应该设置在一个相对安全的位置

双线圈

避免写双线圈 会导致plc停机,伺服零点丢失,保持性存储数据丢失

流程点位

存储位置

中小型 PLC(如 S7-1200/1500、三菱 FX5U) 均以闪存(Flash) 为保持性数据主存储,无需外接电池,掉电后数据永久保存;

老式 / 大型 PLC(S7-300/400、三菱 Q 系列)依赖RAM + 锂电池,需注意电池状态,避免没电丢数据。

流程位置设置

流程位置,当有一个数据块专门存储点位数据,和伺服控制数据隔离

点位示教

伺服位置当有单个点位示教和四个点位同时示教功能,还需支持直接写入位置调整伺服点位

扫描周期

PLC 的核心扫描方式是循环扫描(也叫周期扫描),这是所有 PLC 的基础执行逻辑,也是你之前遇到 “变量赋值覆盖” 的根本原因,同时还有中断扫描作为补充,应对紧急 / 高速任务。

核心:PLC循环扫描(主扫描方式)

PLC 上电后,会无休无止、从上到下、从左到右重复执行 “三大阶段”,这个完整的执行过程叫一个扫描周期,也是 PLC 最基础的工作模式,所有常规程序(如 OB1 主程序)都在这个循环里执行。

三大阶段(按执行顺序,缺一不可)

  1. 输入采样阶段(输入刷新)

    PLC 会一次性读取所有输入端子(如传感器、按钮、接近开关)的实际状态(0/1),并把这些值存入输入映像区(一个专门的内存区域),这个阶段结束后,即使输入端子状态变化,输入映像区的值也不会变,要等下一个扫描周期才会刷新。

    ✅ 通俗说:PLC 先 “拍一张” 所有输入信号的 “照片” 存起来,后续程序执行只看这张 “照片”,不看现场实时变化。

  2. 程序执行阶段(核心)

    PLC 从主程序入口(如西门子 OB1、三菱主程序)开始,逐行、逐块、从上到下、从左到右执行用户编写的所有程序(包括 FC/FB 子程序、连锁逻辑、赋值指令等)。

    执行过程中:

    • 读取输入映像区(而非现场输入)、输出映像区内部寄存器 / 数据块的数值;

    • 运算后将结果写入输出映像区(而非直接输出到端子);

    • 同一变量

      多次赋值时,按执行顺序覆盖

      (就是你之前遇到的情况,先赋 0 再赋新值,最终取最后一个)。

      ✅ 通俗说:PLC 照着 “输入照片” 执行程序,运算结果先存到 “输出草稿区”,不直接发给现场设备。

  3. 输出刷新阶段(输出执行)

    程序执行完毕后,PLC 会一次性把输出映像区的所有运算结果,写入输出端子(如继电器、电磁阀、指示灯),驱动现场设备动作。

    这个阶段结束后,输出端子的状态才会真正变化,下一个扫描周期前,输出端子状态保持不变

    ✅ 通俗说:PLC 把 “输出草稿区” 的结果一次性 “盖章生效”,发给现场设备。

循环扫描的核心特点

  • 顺序性:严格按 “输入采样→程序执行→输出刷新” 执行,程序内严格从上到下;
  • 周期性:重复执行三大阶段,扫描周期完成后立刻开始下一个;
  • 映像区隔离:输入 / 输出与现场之间通过 “映像区” 隔离,避免程序执行中现场信号突变导致逻辑混乱。

扫描周期应用

可以利用扫描周期特点进行值覆盖

扫描周期过长:

​	检查有没有写大数据的循环,循环套循环

​	检查有没有写双线圈

​	可以在属性-循环中修改plc的扫描时间

​	可以使用OB80数据块,可以解决一次的plc扫描周期过长导致的plc stop

​	可以使用基本指令-程序控制指令-RE_TRIGR:重置周期监视时间

编程优化

使用FB数据块的#I  
	优点
        程序清晰
        调用方便
	出现数据长度不一致,看代码中的#I 使用是否正确
使用流程步
    优点:
        验证效率高
        结构清晰
    缺点:
        测试程序复位比较麻烦
        流程步设置成0会影响其他流程
设置程序号
	通过程序号可以控制plc的程序分步执行

自定义程序块

西门子plc中input 和output还有inout有什么功能怎么使用?

Input:只读,PLC读取外部信号。

Output:只写,PLC向外部设备发送控制信号。

InOut:读写,既可以传入数据,也可以输出数据,适用于需要传递并修改数据的函数块或程序模块。

触摸屏

​ 1.报警页面
​ 2.与其他平台,plc或者上位机的交互数据,如果调试中需要,尽量表现到plc上,通过plc直接进行调试

​ 3.文本图形列表数据,尽量和plc伺服控制模块中的伺服点位数组对应