[西门子] 博途SCL编程实例泵顺启逆停的状态机

[复制链接]
查看218 | 回复0 | 2024-4-16 09:02:22 | 显示全部楼层 |阅读模式
编写一个状态机实现三台泵的顺启逆停,按下启动按钮,启动1#泵,延时3秒后启动2#泵,然后延时3秒后启动3#泵;按下停止按钮,停止3#泵,延时6秒后停止2#泵,然后延时6秒后停止1#泵。



2 | 设计分析


使用多分支选择CASE语句设计一个状态机,设置一个步骤变量作为选择条件,初始值为1,等待启动信号,接到启动信号后,跳转到第2步启动1#泵,并启动延时定时器,等到延时时间到达后跳转到第3步启动2#泵,并启动延时定时器,等到延时时间到达后跳转到第4步启动3#泵并等待停止信号,停止过程和启动过程相同,不再赘述。



3 | 创建功能或功能块


创建功能块FB,命名为“PumpStSpInSeq”。




4 | 定义接口变量


具体接口变量定义见下图:
定义布尔型输入变量start:启动;
定义布尔型输入变量stop:停止;
定义布尔型输出变量pump1StSpQ:1#泵启停输出信号;
定义布尔型输出变量pump2StSpQ:2#泵启停输出信号;
定义布尔型输出变量pump3StSpQ:3#泵启停输出信号;
定义整型静态变量statStep:控制步骤,此处设置初始值为1;
定义接通延时定时器变量instTimer:泵启动或停止延时的定时器。


5 | 程序代码


编写程序代码。如下图:


以上为用多分支选择CASE语句设计的典型的状态机模板,适用于于顺控和轮询。注意定时器应放在CASE语句外面使用。



6 | 代码测试


在循环OB中调用FB-“PumpStSpInSeq”,调用时会自动创建背景数据块,命名为“InstPumpStSpInSeq”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:
启停过程为动态过程,截图只显示了三台泵顺序启动完成后的结果。



7 | 总结


学习IF语句的使用;
学习接通延时定时器TON_TIME的使用;
学习多分支选择CASE语句的使用;
学习利用多分支选择CASE语句设计状态机的方法;
学习功能块FB在循环组织块OB中的调用方法。
- END -
现在采用新芯片的冗余型1500控制器,CPU 1513RCPU1515R正式可以订货了!这也是1500产品家族中采用HERA芯片最先上市的CPU。
旧款和新款从外观到内在都有比较大的改进,下面从几个方面进行对比。
外观及订货号变化
参见下图:



旧款


  • 6ES7513-1RL00-0AB0
  • 6ES7515-2RM00-0AB0
最高FW2.9
新款


  • 6ES7513-1RM03-0AB0
  • 6ES7515-2RN03-0AB0
最高FW3.0











部分参数对比
性能提升

  • 基于全新HERA 芯片,双核更强劲
  • 新的CPU 1513R速度提高1.5倍;CPU1515R速度提高3倍
  • 程序内存翻倍,数据内存增加50%
  • 专门通信处理的核心,提高通信能力,数据处理更快,减少高负载通信情况下的程序抖动
速度及内存容量的增加,可以大幅度提高CPU的处理能力,应对复杂应用更加游刃有余!应用环境范围扩展

  • 工作环境温度扩展到 -30 °C to +60 °C
  • 最高工作海拔高度可达5000m(2000m以上需要降容)
现在普通型号CPU的工作温度也可以工作在零下30度,海拔2000米以上,可以适应恶劣的自然环境!
新的显示面板

  • 和标准CPU统一显示面板,更耐用
  • 显示面板响应速度更快
  • 面板固件集成于CPU,无需单独更新固件
统一的CPU显示面板,更可靠,操作更便捷!

采用新芯片的1500冗余CPU,性能大幅度提升,性价比进一步凸显,可以更好满足各种应用的需求!后面我们还将介绍FW3.0给1500H系列CPU带来的功能提升,也敬请关注。


公众号:  巨控电子( 扫码关注 )      

   微信技术群:PLC工业自动化社区 (加好友标注:姓名-城市)

西门子WINCC


  • 博途WinCC专业版C/S架构入门指南
  • 咔!咔!咔!自动/停止/手动 - WinCC中的三档转换
  • 按图索数-WinCC中的“地图+数据”
  • WinCC与S7-1500 R/H系统通信
  • 通过Web Service与WinCC交互数据
  • 可缩放矢量图形(SVG)在WinCC中的应用
  • WinCC V7.5典型架构及选型指南
  • 自动语音播报WinCC报警消息
西门子TIA博途
1.S7-PLCSIM Advanced使用入门
2.使用PLCSIM Advanced仿真博途PID
3.使用PLCSIM Advanced仿真博途Modbus_TCP
4.使用PLCSIM Advanced仿真博途S7-1500 OPC UA
西门子TIA博途SCL学习
1.西门子PLC用TIA博途SCL语言写的一个产生随机实数的指令块(学习1)
2.TIA博途SCL编程学习2_sin(x)
3.TIA博途SCL编程学习3_两个数的计算器
4.TIA博途SCL编程学习4_选择法排序
5.TIA博途SCL编程学习5_一串数字的加法
6.TIA博途SCL编程学习6_数组逆序
7.西门子TIA博途S7-1200/1500学习7间接寻址指令PEEK的使用
8.TIA博途SCL编程学习8_计算N天后的日期
9.TIA博途SCL编程学习9_百鸡百钱
10.TIA博途SCL编程学习10_字符串日期转换成DATE数据类型
11.TIA博途SCL编程学习11_多条件与运算
12.TIA博途SCL编程学习12_数组求和两种算法比较
13.TIA博途SCL编程学习13_电机正反转加点动
14.TIA博途SCL编程学习14_填表格
15.TIA博途SCL编程学习15_素数判断

16.TIA博途SCL编程学习16_歌德巴赫猜想验证

17.TIA博途SCL编程学习17_选择法排序

18.TIA博途SCL编程学习19_分数段人数统计

19.TIA博途SCL编程学习19_分数段人数统计

20.TIA博途SCL编程学习20_换钱

21.TIA博途SCL编程学习21_4个数字中的3个数字的排列组合

22.TIA博途SCL编程学习22_奖金计算

23.TIA博途SCL编程学习23_求最大公约数和最小公倍数

24.TIA博途SCL编程学习24_一串数字的加法

25.TIA博途SCL编程学习25_找出1-1000之间的完数

26.TIA博途SCL编程学习26_小球反弹高度

27.TIA博途SCL编程学习27_猴子吃桃

28.TIA博途SCL编程学习28_一个分数序列加法

29.TIA博途SCL编程学习29_五位数分解

30.TIA博途SCL编程学习30_捡鸡蛋

31.TIA博途SCL编程学习31_HelloWorld

32.TIA博途SCL编程学习32_幂
33.TIA博途SCL编程学习33_水仙花数

34.TIA博途SCL编程学习34_完数
35.TIA博途SCL编程学习35_另类比大小
36.TIA博途SCL编程学习36_自然数反转
37.TIA博途SCL编程学习37_数字加密

38.TIA博途SCL编程学习38_三种方法求最大公约数

39.TIA博途SCL编程学习39_友好数
40.TIA博途SCL编程学习40_平方回文数
41.TIA博途SCL编程学习40_斐波那契数列
42.TIA博途SCL编程学习41_大数乘法
43.TIA博途SCL编程学习42_三位数的组合
44.TIA博途SCL编程学习43_新娘和新郎
45.TIA博途SCL编程学习44_韩信点兵
46.TIA博途SCL编程学习45_过桥问题
47.TIA博途SCL编程学习46_分鱼问题
48.TIA博途SCL编程学习47_跳跃游戏
49.TIA博途SCL编程学习47_狼追兔子
50.TIA博途SCL编程学习50_扑克牌顺子判断
51.TIA博途SCL编程学习51_邮票组合


玩转西门子 S7-1200/1500 的 Modbus RTU 通信诊断



No.
01 概述
Modbus RTU 是一种串行通信协议,由于具有协议透明,实现成本低,简单易用等诸多特点,至今仍然广泛应用在工业控制的各个领域。


为了通信可以长期稳定的运行,并且可以在故障时可以及时处理和排查,特梳理此文,用做参考学习使用。


诊断工作以 S7-1200/S7-1500 PLC的串口通信模块上的指示灯开始:



  • 模块本体集成 RX/TX LED 指示灯,用来指示串口通信模块的信息收发状态。


  • TX 代表发送,RX 代表接收,例如 CM PtP RS422/RS485 HF 通信模块的 LED 指示灯如图1所示。
图1 LED指示灯



通过 RX/TX 指示灯的状态可以快速定位 Modbus RTU 通信故障,并且结合 Modbus RTU 通信指令状态代码,可以高效率地解决在现场中碰到的各类Modbus RTU 通信问题,故障诊断判断流程如图 2 所示。
图2 通信故障的判断流程图



作为 Modbus 主站,当与从站设备通信不上时,触发主站指令后,观察串口通信模块的 TX 指示灯是否闪烁:



  • 如果闪烁,则说明程序已经正确执行,此时如果 RX 不亮,则故障的判断方向为接线或从站一侧。如果 RX 也闪烁,则捕捉主站指令的状态代码,根据代码的具体含义排查故障原因;



  • 如果串口通信模块的 TX 指示灯不闪烁,则说明程序并未正确执行,故障原因主要方向为编程问题,检查初始化指令和主站指令是否编程正确,并捕捉初始化指令和主站指令的状态代码,根据代码的具体含义排查故障原因。


作为 Modbus 从站,当与主站设备通信不上时,观察串口通信模块的 RX 指示灯是否闪烁:



  • 如果闪烁,则说明可以接收主站发来的消息。在确认主站参数设置正确之后,故障主要判断方向为从站的编程问题,检查初始化指令和从站指令是否编程正确,并捕捉初始化指令和从站指令的状态代码,根据代码的具体含义排查故障原因;


  • 如果串口通信模块的 RX 指示灯不闪烁,则说明模块并未接收到来自主站的任何消息,故障原因主要为接线或主站一侧,需检查接线是否正确、主站是否已成功启动等问题。


No.
02 捕捉状态代码
由于 Modbus RTU 通信指令的状态代码仅持续一个扫描周期,直接在线监控无法实时看到,所以我们可以编写程序捕捉代码。


捕捉代码示例如图3所示。初始化指令、主站指令、从站指令均需捕捉状态代码。
图3 捕捉代码



No.
03 常见代码解读
16#80C8
该代码含义为:从站在设置时间内未响应,需要检查数据传输率、奇偶校验和从站的接线情况。
产生该代码的可能原因:


①接线错误。


在主从站接线时,很多用户习惯性的将设备间的 A 与 A,B 与 B 相连,进而组成总线式 RS485 网络,其实,正确方式为根据正负进行组网,应将设备间的正与正,负与负相连,因为并非所有设备的 A 为正,B 为负,如 CB1241 通信板,B 为正,A 为负,如图4所示。
图4 CB1241 通信接线


16#81Ex


该代码均指向字符帧错误,如16#81EA:字符帧过短,16#81E2:字符帧错误。


产生该代码的可能原因:


①  字符帧设置错误。


依次检查起始位、数据位、奇偶校验位、数据传输速率和结束位个数的设置是否一致。
其中,结束位的个数是在初始化指令的背景 DB 块中进行设置,默认为1个停止位。如图5所示。
图5 背景DB设置


② 字符间最大字符延迟时间 “ICHAR_GAP”


在 Modbus RTU 规约中, Modbus RTU 报文帧之间间隔不小于 3.5 个字符时间。如图6所示。
图6 Modbus RTU 报文帧以及间隔


西门子串口通信模块默认 Modbus RTU 报文帧结束的默认条件为 3.5 个字符时间。


假设波特率为 9600 bit/s,1 个起始位,1 个停止位,8 个数据位,1 个校验位,则 3.5 个字符时间为(1/9600)*1000*11*3.5=4 ms,不同波特率,对应的字符时间不同。


如果因为伙伴响应时间稍长、线路阻抗较大,或外界干扰等问题,Modbus RTU 报文帧中的字符间延时超过 3.5 个字符时间,则 PLC 会误认为报文帧结束,但实际并未结束,进而产生该类错误。


可以适当增大字符间最大字符延迟时间 “ICHAR_GAP”,避免该错误的发生,如图7所示。
图7 字符延迟时间


16#8280/16#8281
该代码含义为:读取/写入模块时失败,请检查 Port 参数的输入。


产生该代码的可能原因:


① 初始化指令 Port 管脚输入错误


初始化指令 Port 管脚应输入串口通信模块的硬件标识符,错误的硬件标识符将导致初始化失败。


② 未指定工作模式


应在初始化指令的背景 DB 块 Mode 参数中,指定串口通信模块的工作模式,模式 4 为半双工(RS485)两线模式,如图 8 所示,下载程序后断电重启生效。不同的 Mode 数值代表不同的工作模式,如表 1所示。


该设置仅适用于 Modbus(RTU)指令集,不适用 Modbus 指令集。
图8 DB块模式


表1 各种模式列表


总结:
以上内容是针对经常出现的 S7-1200/1500 Modbus RTU 通信故障的处理总结,其它更多的工业通信技术以及经验分享,敬请访问西门子 1847 工业学习平台,让我们一同学习,共同成长!
(完)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则