C#工业上通用的顺序控制写法

工业软件里,顺序程序控制最常见、最稳妥的是:
👉「状态机(Step / State) + 周期扫描(Timer/Loop) + 条件推进」
👉 延时用 TON(或等效逻辑),而不是 Thread.Sleep / await Delay

这就是PLC 思想在上位机里的延续。

工业顺序控制常见写法排名(按“真实使用率”)
✅ 第一名(⭐⭐⭐⭐⭐):
状态机(Step)+ 周期扫描(Timer)【最常见】
写法特征
switch (Step)
{
case 10:
if (条件A)
Step = 20;
break;

case 20: if (ton.Q(3000)) { ton.Reset(); Step = 30; } break;

}

//----------------------------下面用一个简单的示例,说明此种写法的好处---------------------------------
第一步:先定义一个定时器类
public sealed class Ton
{
private bool _running = false;
private long _startTick = 0;

public void Reset() { _running = false; _startTick = 0; } // 返回 true 表示“到时了”(相当于 TON.Q) public bool Q(int presetMs) { if (!_running) { _running = true; _startTick = Environment.TickCount64; } long elapsed = Environment.TickCount64 - _startTick; return elapsed >= presetMs; }

}

第二步:定义步序枚举类型和定时器实例化、枚举实例化
// ===== 步序枚举 =====
private enum Step
{
step10 = 0,
step20 = 10,
step30 = 20,
step40 = 30,
step50 = 40,
step60 = 50,
step70 = 900
}

// ===== TON 定时器(PLC 的 TON)=====
private readonly Ton _ton = new Ton();
//枚举实例化
private Step stepNumber = Step.step10;

第三步:开始在定时器中编写顺序控制逻辑
private async void timer1_Tick(object sender, EventArgs e)
{
switch (stepNumber)
{
case Step.step10:
_ton.Reset();
if (stepNumber == Step.step10)
{
richTextBox1.AppendText(DateTime.Now + " step10" + “\r\n”);
}
stepNumber = Step.step20;
break;

case Step.step20: stepNumber = Step.step30; Step1 = 100; //标志位赋值 if (stepNumber == Step.step20) { richTextBox1.AppendText(DateTime.Now + " step20" + "\r\n"); } break; case Step.step30: if (Step1==100) { Step1= 0; //标志位清零 richTextBox1.AppendText(DateTime.Now + " step30" + "\r\n"); } if(_ton.Q(4000)) { stepNumber = Step.step40; } break; case Step.step40: if (stepNumber == Step.step40) { richTextBox1.AppendText(DateTime.Now + " step40" + "\r\n"); stepNumber = Step.step50; } break; case Step.step50: if (stepNumber == Step.step50) { richTextBox1.AppendText(DateTime.Now + " step50" + "\r\n"); stepNumber = Step.step60; } break; }

}

//-----------下面是输出的结果----------------

打印出来的结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1187564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小红书下载终极指南:XHS-Downloader一键获取无水印高清素材

小红书下载终极指南:XHS-Downloader一键获取无水印高清素材 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloade…

Windows Cleaner实战指南:5步解决C盘空间焦虑

Windows Cleaner实战指南:5步解决C盘空间焦虑 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当Windows系统运行日渐迟缓,C盘可用空间持续…

Cowabunga Lite:终极iOS定制工具箱完全指南

Cowabunga Lite:终极iOS定制工具箱完全指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite 厌倦了千篇一律的iOS界面?想要打造独一无二的iPhone体验却担心越狱风险&am…

SAM3性能评测:不同深度学习框架对比

SAM3性能评测:不同深度学习框架对比 1. 技术背景与评测目标 随着视觉大模型的快速发展,Segment Anything Model 3(SAM3) 作为新一代万物分割模型,凭借其强大的零样本泛化能力,在图像理解、自动驾驶、医疗…

WarcraftHelper高效优化指南:全面提升魔兽争霸III游戏体验

WarcraftHelper高效优化指南:全面提升魔兽争霸III游戏体验 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在现代系统中…

Android视频播放优化:5大关键技术重塑移动观影体验

Android视频播放优化:5大关键技术重塑移动观影体验 【免费下载链接】Hanime1Plugin Android插件(https://hanime1.me) (NSFW) 项目地址: https://gitcode.com/gh_mirrors/ha/Hanime1Plugin 在移动设备成为主要观影平台的今天,如何让Android手机实…

WarcraftHelper超强性能优化:5个关键技巧彻底解决魔兽争霸III兼容性问题

WarcraftHelper超强性能优化:5个关键技巧彻底解决魔兽争霸III兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸II…

BAAI/bge-m3如何集成?Python调用API避坑指南代码实例

BAAI/bge-m3如何集成?Python调用API避坑指南代码实例 1. 引言:语义相似度在AI系统中的核心价值 随着大模型应用的深入,语义理解能力已成为构建智能系统的基石。在检索增强生成(RAG)、问答系统、文本聚类等场景中&…

BERT智能填空系统:文本理解能力测试报告

BERT智能填空系统:文本理解能力测试报告 1. 引言 随着自然语言处理技术的不断演进,预训练语言模型在中文语义理解任务中展现出越来越强的能力。其中,BERT(Bidirectional Encoder Representations from Transformers)…

NeteaseCloudMusicFlac无损音乐下载工具:打造专属高品质音乐库

NeteaseCloudMusicFlac无损音乐下载工具:打造专属高品质音乐库 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为网易云音乐无法直接下…

微信网页版完全教程:浏览器端微信的终极解决方案

微信网页版完全教程:浏览器端微信的终极解决方案 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为繁琐的微信安装流程而烦恼&#xf…

Zotero文献管理革命:用Ethereal Style打造智能阅读工作流

Zotero文献管理革命:用Ethereal Style打造智能阅读工作流 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地…

无源蜂鸣器驱动电路在多节点报警网络中的部署实践

无源蜂鸣器驱动电路在多节点报警网络中的部署实践:从“能响”到“响得稳”的工程进阶在某次工业现场巡检中,工程师发现一个奇怪的现象:同一套报警系统里,16个分布于不同工位的蜂鸣器同时触发时,声音却参差不齐——近处…

告别复杂配置!SAM3镜像版实现开箱即用的图像分割体验

告别复杂配置!SAM3镜像版实现开箱即用的图像分割体验 1. 引言:从繁琐部署到一键启动的图像分割革命 图像分割作为计算机视觉的核心任务之一,长期以来依赖复杂的模型配置、环境依赖和代码调试。传统流程中,开发者需要手动安装 Py…

如何快速掌握Balena Etcher:终极镜像烧录全攻略

如何快速掌握Balena Etcher:终极镜像烧录全攻略 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher作为一款革命性的开源镜像烧录解决方案…

Windows Cleaner高效清理指南:三步解决C盘爆满问题

Windows Cleaner高效清理指南:三步解决C盘爆满问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为Windows系统C盘空间不足而烦恼吗&#xff1f…

小红书素材收集革命:告别手动保存的智能下载方案

小红书素材收集革命:告别手动保存的智能下载方案 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader 还在…

IndexTTS-2-LLM优化案例:如何提升长文本合成质量

IndexTTS-2-LLM优化案例:如何提升长文本合成质量 1. 背景与挑战 随着大语言模型(LLM)在自然语言处理领域的广泛应用,其在语音合成方向的延伸应用也逐渐成为研究热点。IndexTTS-2-LLM 是一个融合了 LLM 语义理解能力与语音生成技…

IndexTTS-2-LLM性能瓶颈分析:CPU利用率优化实战案例

IndexTTS-2-LLM性能瓶颈分析:CPU利用率优化实战案例 1. 引言 1.1 业务场景描述 随着AIGC技术的快速发展,智能语音合成(Text-to-Speech, TTS)在有声读物、虚拟主播、客服系统等场景中广泛应用。本项目基于 kusururi/IndexTTS-2-…

免越狱iOS定制神器:从新手到高手的完整指南

免越狱iOS定制神器:从新手到高手的完整指南 【免费下载链接】CowabungaLite iOS 15 Customization Toolbox 项目地址: https://gitcode.com/gh_mirrors/co/CowabungaLite 厌倦了千篇一律的iOS界面?想要打造属于自己的个性化iPhone却担心风险&…