[西门子] TIA博途SCL编程学习54_公式法计算圆周率(Π的近似值)

[复制链接]
查看193 | 回复0 | 2024-4-16 09:02:04 | 显示全部楼层 |阅读模式
1 | 题目


利用反正切的傅里叶展开式:π/4=1-1/3+1/5-1/7+1/9-1/11+…,计算圆周率即π的近似值,直到最后一项的绝对值小于0.000001为止。



2 | 设计分析


注意到题目中等式右半部分分母为差为2的等差数列,符号位正负交替,采用WHILE循环连加构造傅里叶展开式的右半部分,直到到达题目要求的最后一项的精度后结束循环。



3 | 创建功能或功能块


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




4 | 定义接口变量


具体接口变量定义见下图:
定义变量#termCountQ用来记录到达目标精度时所经历的项数,为了方便监控将和计算过程相关的所有变量定义为Static静态变量。



5 | 程序代码


编写程序代码。如下图:


从傅里叶展开式中可以看到1为首项,所以计数初始值从1开始。注意精度部分采用了科学记数法。



6 | 代码测试


在循环OB中调用FB-“PiApproxVal”,调用时会自动创建背景数据块,命名为“InstPiApproxVal”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:
经过50万次循环后(PLC运行的很辛苦),到达题目要求的末项精度0.000001,得到圆周率π的近似值为:3.141598。



7 | 总结


学习使用WHILE循环语句;
学习组合赋值运算符的使用;
学习科学记数法。
公众号:  巨控电子( 扫码关注 )      

   微信技术群: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_邮票组合
52.博途SCL编程实例泵顺启逆停的状态机
53.TIA博途SCL编程学习52_邮票组合抓捕交通肇事犯
54.TIA博途SCL编程学习53_求车速
WinCC中的画面模板应用实例及其组态实现方法
罗克韦尔AB软件学习视频下载
WinCC 输入/输出域没有所需要的预定义输出格式该怎么办?
在WinCC中如何使用VBS读取变量归档数据到EXCEL
西门子WINCC触摸屏变量的批量处理

项目规模比较大时,触摸屏项目的变量会非常多,如果手动一个个去新建或者逐个修改变量属性费时费力,一个便于操作的好办法是:指导入导出操作
01
HMI变量介绍
众所周知,变量是触摸屏和PLC通信的中间桥梁。触摸屏的变量主要分为内部变量和外部变量,内部变量和PLC没有任何关系,只能在触摸屏项目内部使用,只有运行系统处于运行状态时变量值才可用。外部变量是来自于PLC的变量,外部变量的值与PLC存储器中的过程值相对应,可以实现过程值的读取和写入操作。
02
变量表导入导出操作
  了解了HMI变量的相关概念,我们接下来进入正题。项目开发过程中如果变量数量较多,同时需要快速创建和集中定义变量属性,除了在相应变量表中逐个添加和设置外,其实我们还可以将现有的变量完整导出,利用Excel的强大编辑功能添加修改完成后再次导入即可,极大的节省了时间。
有了思路接下来我们来看具体操作。如下图所示,以一个含有6个变量的变量表Plant为例进行演示。首先可以在变量表的左上角点击导出按钮,之后按照期望的存放路径导出该变量表。


  导出后的变量表主要结构如下图所示。依据这个变量表模板,我们就可以根据需求在Excel中进行增加、删除和修改变量属性等操作,但是切记下图红框中的模板首行是不能进行更改的,同时也不支持在表中随意添加列。
  完成变量的编辑工作后需要导入到TIA Portal WinCC中,我们该如何操作呢?小伙伴们,关键步骤来了可得记仔细了。虽然变量导出时对变量表没有要求,但是在导入变量的时候,目前TIA Portal WinCC软件仅支持在“显示所有变量表”中导入,不支持在自定义的变量表和默认变量表中操作。如下图所示。
  虽然都是在“显示所有变量表”中操作,但是小伙伴们也不用担心变量的分组问题,可以在Excel中预先分配好变量所在变量表的名称,导入时系统会自动创建变量表并且会将变量分配到指定的变量表中。例如在导出的变量表基础上新增了变量
“Motor3_Current”、“Motor3_Voltage”和“Motor_IntArray“,并且重新分配变量至变量表“Motor”,再次执行变量导入操作选择导入文件。


导入变量至TIA Portal WinCC中“显示所有变量”表中的变量信息如下图所示。

TIA Portal WinCC中会自动创建自定义变量表“Motor”,同时变量会被自动分配到变量表“Motor”,如下图所示。

03
变量表导入导出的注意事项
变量导入导出操作中的特点和注意事项如下:



  • 导入变量时如果存在同名的对象,则使用已有对象。
  • 导入变量时如果没有同名的对象,则创建具有该名称的对象。
  • 对于用户自定义数据类型(UDT)HMI变量,不能通过Excel导出所有UDT的结构元素,导出表中只会出现较高级别的HMI变量,无法编辑其较低级别的元素。
  • 以上内容均针对的是HMI变量的操作,由于导出的PLC变量表和数据块结构的不同,不支持直接导入到HMI

04
导出的变量表主要格式说明




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

本帖子中包含更多资源

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

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

本版积分规则