[西门子] TIA博途SCL编程学习46_分鱼问题

[复制链接]
查看248 | 回复0 | 2024-5-16 14:23:55 | 显示全部楼层 |阅读模式
1 | 题目


A、B、C、D、E五人夜间合伙捕鱼, 凌晨时都疲倦不堪,各自在河边的树丛中找地方睡着了。日上三竿, A第一个醒来,他将鱼分作五份,把多余的一条扔回河中,拿自己的一份回家去了。B第二个醒来, 也将鱼分作五份,扔掉多余的一条,拿走自己的一份。接着C、D、E依次醒来,也都按同样的办法分鱼。编写程序计算五人至少合伙捕了多少条鱼。



2 | 设计分析


采用穷举试探法,令试探值逐渐增大。



3 | 创建功能或功能块


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




4 | 定义接口变量


具体接口变量定义见下图:
定义数据类型为整型数的静态变量#statFishNum作为至少捕鱼数量的结果输出,定义数据类型为整型数的临时变量#tempFishNum用来存储分鱼过程中鱼的动态数量。



5 | 程序代码


编写程序代码。如下图:


试探过程中鱼的数量分不开时用EXIT指令跳出FOR循环,回到WHILE循环继续试探。



6 | 代码测试


在循环OB中调用FB-“FishDivision”,调用时会自动创建背景数据块,命名为“InstFishDivision”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:


得到结果:五人至少合伙捕了3121条鱼。



7 | 总结


学习使用WHILE循环语句;
学习使用FOR循环语句;
学习使用IF..ELSE条件语句;
学习组合赋值的使用;
学习EXIT语句在循环中的作用。
- END -
参见下图:



旧款


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


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


新的显示面板

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

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


关于 WinCC 的授权



  • WinCC采用虚拟化部署和非虚拟化实机部署所需要购买的授权是一样的。
  • WinCC亚洲版运行时,会检测硬件加密狗。在ESXi的虚拟机中,可以将硬件加密狗视作普通USB设备,通过硬件直通的方式添加。由于物理服务器的USB端口资源有限,一般通过基于以太网的USBHUB集线器解决(AnywhereUSB® 的Remote I/O Concentrator)。

下图是1个现场实际项目的照片,项目采用了虚拟化部署方式,虚拟了50多台WinCC服务器和客户机(上面4个USB集线器HUB,黄色U盘为WinCC硬件加密狗;最下面为物理服务器)


WinCC与S7-1500R/H冗余系统通信有2种方式



方法1.
WinCC通过S7-1500R/H的系统IP通信,这时S7-1500R/H的2个CPU被看作1个PLC,系统IP自动连接到主PLC。当主PLC宕机后,WinCC通过此系统IP自动切换到备用PLC上。这种方式组态简单,与单PLC无异,WinCC通信连接中的IP地址输入S7-1500R的系统IP即可。

这种方式适用PC是单网卡的网络结构

方法2.
WinCC V7.5 SP1 开始支持通过”系统变量“控制的S7-1500R/H冗余通信。可支持单网卡的网络,也可支持双网卡的冗余网络。


原理:WinCC与主PLC的固定IP通信,监视”通讯连接状态的系统变量“,当主PLC宕机后,WinCC通过“通信控制变量”切换到备用PLC的固定IP进行通讯。


组态步骤如下:
第一步:创建连接
在WinCC中创建CPU1的连接,用其固定IP地址


第二步:创建系统变量
在WinCC连接下,手动创建系统变量,变量名格式为“@连接名称@变量名称”。变量地址为空或者使用PLC中没有用到的地址。其变量名称和数据类型如下

各系统变量的作用如下:


  • “@@ForceConnectionState” :用来建立/终止冗余连接,设置为1:建立连接,设置为0:断开连接。这里此变量建议设置初始值为1
  • “@@ConnectionState” :用来反馈冗余连接状态, 值为1时代表连接已经建立,值为0时代表连接已经断开
  • “@@ConfiguredAddress” :用来反馈所组态的连接参数属性。格式为“AccessPoint=访问点名称;IPAddress=PLC IP地址;”
  • “@@AlternativeAddress” :设置与备用 CPU(CPU2) 的连接的参数属性,格式为“AccessPoint=访问点名称;IPAddress=备用PLC IP地址;”,需要设置初始值
    备用连接和组态的连接可以使用同一个访问名,也可以使用不同的访问名。使用不的访问名时,WinCC可以指定两块网卡分别连接S7-1500R的两个CPU。
  • “@@CurrentAddress” :反馈当前连接的参数属性。
  • “@@UseAlternativeAddress” : 设置使用组态的连接还是备用连接,设置为1:使用备用连接,设置为0:使用组态的连接。
  • “@@OpStateConfiguredAddress ” :读取S7-1500R的CPU1 当前的操作模式,0: not connected,4: STOP,6: STARTUP,8: RUN,22: SYNCUP。
  • “@@>@OpStateConfiguredAddress” :读取S7-1500R的CPU2 当前的操作模式,0: not connected,4: STOP,6: STARTUP,8: RUN,22: SYNCUP。
  • “@@RedundantCPUs” :指示所连接的控制器是否冗余,设置为1:代表所连接的PLC是S7-1500R/H,设置为0代表所连接的PLC是非冗余的S7-1200/1500。这里设置初值为1。




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

本帖子中包含更多资源

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

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

本版积分规则