首页 > 其他分享 >CODESYS可视化标准计算器制作详细案例(四)

CODESYS可视化标准计算器制作详细案例(四)

时间:2024-11-21 19:44:20浏览次数:3  
标签:equationOutput END 负号 calculator 可视化 CODESYS 计算器 equationTemp2

#制作一个在可视化界面可用于标准计算器功能详细案例#
前言:
我用PLC做了一套标准计算器算法,数学都是从1+1开始的,很遗憾关于此案例的前几篇文章没有多少人浏览,但是这个在CODESYS中运行的“计算器”程序代码功能,我是思考和研究了好几天的(个人总体觉得较难处理)。目前修复了已知的BUG和完善了其它功能,基本可以做到与电脑和手机的计算器同样的功能。后续有机会我会移植到博途TIA等其它PLC软件中。当然这个功能我已经做成了库文件,随时可以调用。
库文件下载连接:
https://download.csdn.net/download/weixin_44166380/90013314
先看调用后的运行效果:

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="ZbplG0QT-1732002564905" src="https://live.csdn.net/v/embed/434732"></iframe>

CODESYS可视化标准计算器制作详细案例(四)


库文件的使用环境如下:
在这里插入图片描述
————————————————————————————————————————————

四、检测功能

https://blog.csdn.net/weixin_44166380/article/details/143812009?spm=1001.2014.3001.5502
结合之前如上连接的文章中的代码,具有检测的详细代码公布如下:

1.首字符处理

根据计算器功能,我们在输入字符的时候,首字母不允许出现运算符号,代码如下:

			//获取等式的总长度
			equationLength:=LEN(STR:=equationInput);		
			IF equationLength=0 THEN
				IF equationTemp2='+' OR equationTemp2='*' OR equationTemp2='/' THEN
					equationTemp2:='';
				END_IF;
			END_IF;

2.“.”字符处理

☕在一个数值中有且仅有一个小数点,不可以出现,比如"0.5.5";
☕部分计算器支持小数点可以作为前置字符,比如".5"相当于"0.5"(本程序也默认支持哈);
☕另外,小数点后面必须跟数字,不可以出现,比如"0.+"等等
综合以上,那么对于连续的公式,字符是怎么处理的呢?

			//.后面必须跟数字			
            IF equationTemp1='.' THEN
				IF equationTemp2='.' OR  equationTemp2='*'  OR  equationTemp2='/' OR equationTemp2='+'  OR equationTemp2='-' THEN
					equationTemp2:='';
				END_IF;					
			END_IF;
			
			IF equationTemp2='.' THEN
				(*关于'.',从最右边逐个搜索,如果检测到符号,则退出循环,表示可以加'.',如果检测到'.',将'.'去掉,退出循环,避免一个数值出现两个'.'*)
				FOR k:=1 TO equationLength DO
					equationTemp4:=MID(STR:=equationInput , LEN:=1 , POS:=equationLength-k );							
					IF equationTemp4='+' OR equationTemp4='-' OR equationTemp4='*' OR equationTemp4='/' THEN					
						EXIT;
					END_IF;
					IF equationTemp4='.' THEN
						equationTemp2:='';
						EXIT;
					END_IF;		
				END_FOR;	
			END_IF;

关于避免两个"."的处理,有很多种方法,但是结合这个PLC程序,我试了很多种,基本上是最优解了,仔细看下,都是一些小细节。

3.运算字符处理

关于加减乘除的运算符号处理比较简单了,代码如下:

			//加减后处理
            IF equationTemp1='+' OR equationTemp1='-'  THEN
				IF equationTemp2='+'  OR  equationTemp2='-' OR equationTemp2='*'  OR equationTemp2='/' THEN
					equationTemp2:='';
				END_IF;
			END_IF;	
			
			//乘除后处理
            IF equationTemp1='*' OR equationTemp1='/'  THEN
				IF equationTemp2='+'  OR equationTemp2='*'  OR equationTemp2='/' THEN
					equationTemp2:='';
				END_IF;
			END_IF;	

4.负号字符处理

重要!很重要!非常重要!
上几篇的文章中,我们虽然实现了计算器功能,但是有一套公式没有尝试,比如2*-3*-3,于是出现了BUG(计算出现了错误),关于乘号后面的负号处理,我也是研究了好久

标签:equationOutput,END,负号,calculator,可视化,CODESYS,计算器,equationTemp2
From: https://blog.csdn.net/weixin_44166380/article/details/143885320

相关文章

  • 可视化CSS3渐变背景颜色代码生成插件
    在线预览 特效下载 这是一款可以在线生成CSS3渐变背景颜色代码的可视化插件。你可以通过调节界面上给出的颜色、色相、饱和度和亮度滑块,以及渐变方向滑块来生成各种线性渐变,屏幕上会给出相应的CSS3线性渐变代码。该渐变背景颜色插件可以设置的选项有:BaseColor:Hue:色相......
  • 可视化工具对比:JimuReport VS QuickBI
    在当今数据驱动的商业环境中,可视化工具成为企业挖掘数据价值、辅助决策的关键利器。BI产品也越来越多,那么如何选择一款性价比高的BI产品呢?今天我们就来看一下JimuReport和阿里的QuickBI有哪些区别。一、版本JimuReport:免费开源涵盖报表、仪表盘、数据大屏、仪表盘移动......
  • 开源可视化工具对比:JimuReport VS DataEase
    在当今数据驱动的时代,高效的数据可视化工具成为企业洞察业务、做出决策的关键利器。而在开源可视化工具的领域中,JimuReport和DataEase以其独特的优势脱颖而出,究竟谁更胜一筹呢?让我们一同深入对比,为你的数据可视化之旅找到最佳伙伴。功能对比功能JimuReportDataEase......
  • (2024最新毕设合集)基于SpringBoot的校园共享厨房信息系统-72647|可做计算机毕业设计JAV
    目 录摘要第一章 绪论1.1选题背景与意义1.2研究现状1.3论文结构与章节安排第二章系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......
  • C语言之实现简单的表达式计算器
    C语言之实现简单的表达式计算器这篇博文是对上一篇博文代码的重构!并在此基础上加了一个eval_express函数,实现表达式的交互计算,初步达到REPL,即读表达式、算表达式、输出结果,这样一个循环。定义表达式数据类型和输出函数Express结构体,用来保存表达式的节点数据,运算符或数......
  • Python实现表格可视化
    今天给大家分享一个Python工具——plottable,可以轻松制作高质量、个性化的表格,底层为Matplotlib。例如以下两种表格形式:现在奉上完整代码给大家:#导入相关包frompathlibimportPathimportmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpimportpand......
  • MATLAB实现基于SVD奇异值分解的信号分解分量可视化
    目录项目背景介绍...1项目目标与意义...1项目挑战...2项目特点与创新...2项目应用领域...2项目效果预测图程序设计...3项目模型架构...3项目模型描述...5项目结构设计...6项目部署与应用...6项目扩展...7项目应该注意事项...7项目未来改进方向...7......
  • 数据可视化SVG-动画
    线性渐变SVG毛玻璃效果形变-transform形变-平移形变-旋转形变-缩放stroke描边动画什么是SMIL?SVG动画实现方式......
  • 数据可视化如何帮助企业提升数据洞察力?
    数据驱动时代,企业每天都在面对数据的洪流。一方面,拥有海量数据意味着蕴藏着无尽的机会;另一方面,如果无法提炼这些数据背后的价值,它们只会成为业务发展的负担。例如,许多企业手握丰富的销售数据,却难以通过传统表格快速发现区域增长趋势;或者,财务报表延迟导致管理层在决策时丧失先机......
  • 计算机毕设项目源代码 python基于python的旅游可视化系统
    标题: python基于python的旅游可视化系统设计一个基于Python的旅游可视化系统,可以帮助用户更好地规划旅行路线,了解目的地的详细信息,并提供丰富的互动功能。以下是一个典型的旅游可视化系统的主要功能模块:1.系统概述•目标:为用户提供一个直观、易用的旅游信息平台,帮助用户......