news 2026/4/16 9:09:19

基于PLC设计的计算器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于PLC设计的计算器

实习要求所以来做这么一个项目,说实话这种东西交给单片机就行,但是没办法任务嘛,就当锻炼自己的代码写作能力了,接下来我就分享以下我的写作过程和我的心得体会。

首先任务要求用PLC设计一个计算机,并且得使用面板功能。

这里说一下我了解这个功能后对它的理解:我认为面板就类似于把一个模块集成起来,然后把函数这些调用口也集成起来。当下次如果还要用到另一个设备也是这个模块,我们只需要直接把这个集成的模块拉出来然后把接口函数写上就能直接套用了。简单一句话:方便集成使用。

先给大家看看最终成品:

然后是代码部分的分享和感受:

1、首先既然目的是要集成那我代码也集成那就做一个FB块

接口函数很简单 Count_In表按键 Mark_In表模式标志位 OutPut表输出。

(为什么Mark_In写在InOut?因为这个接口的意思就是能输出也能对他的值进行操作,我后续还需要通过控制这些值来做到功能切换。)

(这Static里面还有变量,Static表静态变量嘛,然后就可以在里面放一些辅助触点比如说上升沿触发输入2就需要一个辅助触点记录这个周期的上一个电平值,或者中间变量等等)

我分享一下为什么我要在Static里面写这些而不是默认变量表里面写(我最开始写的是默认变量表里面),因为我如果要保证这个代码能够同时支持几个设备我就不能只有一批辅助触点,不然就多线圈了,到时候直接就是乱的,所以我尝试在Static里面写那下次要再次复用,这个FB块会创建一个相应的DB块来储存这写变量。总结:保证FB块的重复使用功能

2、Count_In即按键输入,把有的按键全部添加进来了方便后续HMI添加按键并操作。

3、Mark_In即标志位输入,方便后续切换功能和使用HMI记录此时的功能。

当然这两步里面都有一个步骤就是自己创建数据类型,不懂得可以去学习一下,类似于单片机的结构体,其实本质和PLC的结构体也是一样的。

4、代码我分成了四个程序段

数字识别包括我按下按键转换成数字其中还有识别小数点

5、我直接拿9来给大家举例子

分成按下小数点后和没按小数点两个板块,上面为没按小数点,下面为按下小数点

先分享一下上面不按小数点的逻辑,OutPut默认为0,Num_4属于中间量,用于存储按键值和后续退格功能,第一次输入9;第二次输入 9×10+Num_4=90+9=99;第三次99×10+Num_4=999……

然后是下面按下小数点后的逻辑

这里用了自锁和其他按键的对他的互锁,保证按键之间不会冲突和计算逻辑不会错误

然后在看到上面的逻辑图,其中Num_3默认值是10,每输入一次Num_3×10,然后

输入的值÷Num_3,即第一次输入 9÷10=OutPut=0.9;第二次输入9÷100+OutPut=0.99;第三次……

6、其次是运算功能键,这个步骤其实相对而言也很简单,我还是只拿+来举例子其他的大家举一反三就能够做出来。

和小数点按键一样得有自锁和互锁,并且得加很重要的一步,就是把OutPut的值给Num_2并且OutPut清零,然后又可以继续按着上面的数字识别的逻辑给OutPut输入值了。并且加法标志位也已经置1了后续逻辑也已经很清晰了。

这里讲一下OutPut和Num_2是储存数据的,每次按下运算键OutPut会把值传给Num_2并且自己空出来;Num_4是用于不存在小数点时的中间量储存;Num_3适用于存在小数点时位置的控制。

7、最后是等于键按下之后,进行逻辑运算,上面说到我们标志位已经置1了即我们已经知道我们需要进行什么运算了(+、-、×、÷),这里我们只需要进行运算和清除运算符号就行了,逻辑如下:

8、退格,我这里用的比较简单,但功能属于丐版,只能实现退一次,逻辑如下:

依旧分成有小数点标志和没小数点标志,还有简单的逻辑判断,主要操作就是让OutPut-Num_4和把数字的位进行还原,即本来是五位数退格之后要变成四位数;本来数字要是0.001要变回0.01,然后就是退格标志的复位,让他只退格一次。

9、到此其实计算机的整体逻辑框架基本结束了,再分享一下我其他功能的逻辑

1)百分号逻辑

2)C和CE的逻辑

10、最后就是HMI中面板的制作

要点1:这里的HMI仿真不能用精简版,因为精简版没有创造面板这个功能。

要点2:最好还是自己先写一个用户变量当接口变量,方便接入和统一参数。

要点3:用户变量也得拖入HMI的面板功能中,这样他的接口变量才能识别这个变量类型。

先把你画好的HMI界面全选然后选择创建面板,然后会进入这个界面

然后右下角右键点击创建新的类别或者新的属性,我选的新的类别这里是可以再这个类别添加新的属性,然后就可以在里面添加新的接口变量了,我直接接入的是我写的用户变量类型,然后再右键你要控制的按键点击属性

正常写逻辑把所有要控制的都走一遍就ok了,你献完之后上面那个图会自己画出来一条线,把你的按键和变量连接起来。

最后创建完成右边是这样的,他直接集成成一个面板下次使用可以直接拖出来

拖出来之后点击模块然后把接口里面输入你的新的变量就可以直接使用了。

总结:逻辑方面这个确实写得很优雅;然后对于HMI的面板也会有新的理解,以后在工程上能够更好的去运用一下博途的较为实用的功能。

如果你觉得有意思或者对你有帮助麻烦留下一个宝贵的点赞哦

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:15:54

农业种植Agent灌溉策略(基于气象与土壤的动态响应机制)

第一章:农业种植 Agent 的灌溉策略在智能农业系统中,种植 Agent 负责根据环境数据自主决策灌溉行为。其核心目标是优化水资源利用,同时保障作物健康生长。Agent 通过传感器实时采集土壤湿度、气温、光照强度和天气预报等信息,结合…

作者头像 李华
网站建设 2026/4/16 5:42:46

Nginx配置运行python的uvicorn项目

Nginx配置运行python的uvicorn项目 项目代码 # main.py from fastapi import FastAPI import uvicornapp FastAPI()# 示例1:GET接口(无参数) app.get("/hello") def hello():return {"message": "Hello FastAPI&qu…

作者头像 李华
网站建设 2026/4/16 5:38:57

大模型计算

序号考察能力题目回复评价1逻辑推理一个人带一只黄狗、一只白兔和一颗白菜过河,河边只有一条小船,此人每次只能带一样东西过河,如果此人不在,黄狗要咬白兔,白兔要啃白菜。请想一想:既不让黄狗咬白兔&#x…

作者头像 李华
网站建设 2026/4/16 5:44:57

ChemCrow化学智能助手:开启AI驱动的化学研究新时代

在化学研究领域,一款名为ChemCrow的AI工具正在掀起一场智能化革命。这款开源化学助手通过整合先进的Langchain框架与专业化学分析库,为研究人员和学生提供了前所未有的便捷体验。无论你是需要分析分子结构,还是预测复杂化学反应,C…

作者头像 李华
网站建设 2026/4/16 5:40:39

多源环境数据如何协同?深度剖析Agent级数据融合架构设计

第一章:环境监测Agent的数据融合概述在分布式环境监测系统中,多个Agent节点通常部署于不同地理位置,用于采集温度、湿度、空气质量等多维数据。由于数据来源异构、采样频率不一致以及网络传输延迟等问题,直接使用原始数据可能导致…

作者头像 李华
网站建设 2026/4/16 5:40:40

MoneyPrinterTurbo性能优化实战:从瓶颈诊断到效率飞跃

MoneyPrinterTurbo性能优化实战:从瓶颈诊断到效率飞跃 【免费下载链接】MoneyPrinterTurbo 只需提供一个视频 主题 或 关键词 ,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。 项目地址: https:/…

作者头像 李华