C#如何模拟PLC写起保停控制板卡
想必做过电工、电气工程师的工控人,都很熟悉起保停。对,就是你们熟悉的那个起保停。这个电路应用范围很广,比如电机的启动停止控制,如果我们把这个电路程序能移植到上位机那么已经事半功倍了。
1.我们先分析下什么叫起保停?
起:启动(启动条件)保:保持(自锁条件)停:停止(停止条件)
2.用C#上位机实现PLC起保停,创建项目这里命名为DEMO1
3.从控件工具库中拖拽Button按钮, 分别命名为btnStart和btnStop并把text属性改为启动和停止,并分别创建MouseDown、 MouseUp事件模拟启动按键和停止按键。(双击事件自动创建)
4.从控件工具库中拖拽Label标签 命名为lblState并把text属性改为 今日头条 模拟运行状态
5.从控件工具库中拖拽timer控件 并把Enabled属性改为 true,把触发 周期改为100ms,模拟PLC扫
描
6.界面效果图
7.按F7进入代码页,大家查看代码注释理解下,不清楚的可以在评论区问我
public FrmMain()
{
InitializeComponent();
stop = true;//这里停止按钮初始化为抬起状态
}
bool start, stop, run;
private void BtnStart_MouseDown(object sender, MouseEventArgs e)
{
//写启动按下
start = true;
}
private void BtnStart_MouseUp(object sender, MouseEventArgs e)
{
//启动按钮抬起
start = false;
}
private void BtnStop_MouseDown(object sender, MouseEventArgs e)
{
//停止按钮按下
stop = false;
}
private void BtnStop_MouseUp(object sender, MouseEventArgs e)
{
//停止按钮抬起
stop = true;
}
//模拟PLC扫描
private void Timer1_Tick(object sender, EventArgs e)
{
run = (start || run) && stop;//启动和运行或一下(并联)再和停止或一下(串联)
lblState.BackColor = run ? Color.Green : Color.Black;//三元表达式 run为真赋值为绿色为假赋值为黑色
}
7.运行效果图
8.这个只是抛砖引玉,这个timer事件是来自UI线程,实时性不靠谱,实际现场我们会创建独立的线程死循环来处理现场IO数据。可以参考下面的写法
public Form1()
{
InitializeComponent();
Thread t1 = new Thread(PLCRUN);//创建一个线程并把 PLC运行方法传入
t1.IsBackground = true;//设为背景线程
t1.Start();//线程开始运行
}
private void PLCRUN()
{
while (true)
{
try
{
#region 输入映像刷新
#endregion
#region PLC逻辑....
#endregion
#region 输出映像刷新
#endregion
Thread.Sleep(1);//CPU强悍实时性要求高可以不sleep
}
catch (Exception ex)
{
//异常捕捉
}
}
}
9.当然起保停还有直接通过if判断实现或者其他方法实现,我这里只是提供是思路,没必要杠。在起保停的逻辑上可以加各种现场控制逻辑,比如延时逻辑 ,计数逻辑,其他与或非逻辑等等。剩下的大家灵活应用。
10.如果用运动板块控制或者项目比较大,建议分层架构,两层三层都可以。
11.篇幅有限,起保停的相关电路我就不画了,PLC的起保停不写了。我相信大家这块非常熟悉了。
END
如果对您有帮助 欢迎关注、评论、点赞转发。定期出C#上位机 电气 PLC 运动板卡 STM32 自动化相关心得应用
做数据采集,你真的了解PLC的插槽号吗?
有很多PLC可以在系统里配置多个独立CPU,各自有自己的任务。也有一些PLC,虽然只有一个CPU,但是,其位置是可变的。外部进行数据采集时,首先要搞明白采集目标是哪个CPU,否则,就会张冠李戴,数据肯定搞不准。那么,怎么定位这些CPU呢?各自动化厂家一般依靠框架号和插槽号这两个参数。
PLC的板卡一般安装在一个底板(或者虚拟底板)上,板卡之间通过内部总线进行信息交互,这个底板被称为一个框架。如果一个PLC里配置有多个框架(不是远程站),则需要通过框架号进行区分。
在一个框架内,板卡通过插槽号进行定位,一般左边第一块是CPU,编号为0,再往左呢?可以用101、102来表示。有的是最左边的一个定义为0,CPU的编号不为0。各家规则不尽相同。以下是几种PLC的插槽号情况:
S7-1200 CPU的框架号为0,插槽号为1
S7-1500 CPU的框架号为0,插槽号为1
S7-300 CPU的框架号为0,插槽号为2
S7-400 CPU的框架号为0,插槽号为2
S7-400 CPU的框架号为0,插槽号为3
AB的例子1,插槽号为2
AB的例子2,插槽号为0
汇川的中型PLC,CPU插槽号为0
PLC-Recorder的连接配置
在PLC-Recorder软件里,有时候连不上CPU,或者连上CPU,但是数据采集不了,报各种各样的错误,则要对照PLC硬件配置,核对一下框架号和插槽号。
有位多年来一直支持PLC-Recorder的老朋友,他们单位大部分是AB的PLC,说以前采集好好的,现在突然采集不了,一直报变量不存在。然后,我们通过信息沟通,进行了各种尝试:
1. 确认IP地址,进行联通测试,正常,能够建立连接。
2. 怀疑变量地址错误,对照软件手册,进行多种地址的尝试,不行。
3. 变量没有开放权限?查看PLC的变量表,都是“读写”,没有发现限制。
4. 怀疑电脑系统问题,更换电脑,也不行。
5. 怀疑采集软件升级导致的(因为在同一个电脑里,编程软件可以在线),于是帮他降版本,还是一样。
6. 提醒他是不是插槽号问题,他未置可否。
7. 后来,去其他PLC测试,通过新版本软件访问其他AB PLC就是好的,这个PLC也是第一次采集。难道这个CPU里有什么特殊配置?
8. 帮他远程在线诊断:乖乖,是双CPU的安全PLC,首先打开CPU的参数,也没有看到任何开启限制的选项,再核对插槽号,发现了端倪,他这个框架上0号是以太网卡,1号才是在用CPU。采集软件将插槽号换成1后,马上解决问题,朋友也不好意思地直挠头。
请教各位网友,他这2号槽里的CPU是干啥的?有没有可能自动切换到2号CPU,那时候是不是咱们又不能采集了?
相关问答
三菱能用ST语言的PLC有哪些?-ZOL问答
三菱大多数PLC都支持ST语言编程。不过通常在中小型PLC系统中较少使用ST语言进行编程。ST即结构化文本语言,是一种采用结构化描述文本来描述程序的编...
mode6的特点?
MODE6有以下特色:1、工程开发轻松自如2、为用户提供免费驱动TRACEMODE6提供支持超过2000余种的各类控制器、PLC和I/O板卡的免费驱动,开发工程时...MODE...
哪位朋友,有谁懂!plc扩展模块就是plc间通讯吗?PLC厂家排行榜
[回答]在采用交互式通讯时,应注意收发双方通讯速度的匹配。发送方会显示接收方已无接收资源的错误代码,这可通过适当降低发送频率来解决。PC与PLC间的通讯...
搅拌站里用电脑操控混凝土?
一般的混凝土控制系统使用上位机做监控;下位机PLC或嵌入式控制器做逻辑直接控制;自动化程度是反映混凝土搅拌站技术含量高低的主要标志1.动态面板显示搅拌站...
板卡信号级维修是指哪般?
个人轴卡用的比较少,一般用的是PLC控制伺服电机。你可以参考一下。检查脉冲和方向的控制线是否接牢检查脉冲和方向的电源公共端是否接牢检查驱动器的CN控制线...
欧姆龙PLC电源灯不亮怎么回事-ZOL问答
那问题很简单,PLC的模式被人改到了编程模式,需要在线用CX-P改回来或者支持手持编程器就是主板上的板卡接触不好,好好清理一下PLC里面有程序吗?电源烧了如果...
谁有基于组态软件的流量单回路过程控制系统设计,组态软件...
[回答]什么是组态?在使用工控软件中,我们经常提到组态一词,组态英文是“Configuration”,其意义究竟是什么呢?简单的讲,组态就是用应用软件中提供的工具...
西门子的TDC应用在大型控制系统能否取代DCS?-盖德问答-化工...
几个概念。。。1.tdc是工艺型控制器,主打高速的闭环回路(5ms以下周期的),运动控制,而非常规慢速的pid回路(50ms以上)。典型的应有有冶金行业的...
朋友们!哪里有!石家庄工业连接器工业电缆价格表,工业连接...
[回答]相对来说,性价比比较高。还是属人家纽斯德浦电气系统广州浩隆电子科技有限应该符合你的选择,你看下他们的介绍吧!(注:以下资料转于浩隆电子)广州浩...
帮个忙大佬们有谁能给我推荐一下:专业免编程控制系统定制,...
[回答]除了免编程系统外,我们拥有一支技术精良、十分专业的队伍,为行业客户定制了多种控制系统,如模具保护器、热处理炉温控制系统、多轴板卡控制平台、汽...