简介:一份基于PLC的病床呼叫器控制系统完整设计说明书,面向电气自动化专业学生及从事医院弱电系统设计的工程人员。方案以FX2N-64MR型PLC为核心,覆盖病床呼叫、护士站显示、警报联动三大子系统,详述了27个输入/20个输出信号的I/O分配、硬件接线图、梯形图设计思路与系统仿真测试流程,并针对病房与护士站警报灯选型给出了计算依据,能够直接作为同类课程设计的参考资料。资源为PDF格式,共1个文件,压缩包大小336KB,内容紧凑便于查阅。目前已有719人学习下载,适合正在完成PLC课程设计或希望了解医院呼叫系统控制逻辑的读者,可从中获取完整的系统框架、选型方法和调试记录,缩减自主设计时间。
1. 病床呼叫器用PLC做,比单片机方案离工程现场更近
在自动化专业的毕业设计题目里,“病床呼叫器”常被当成最简单的题型:几个按钮、几个灯、一个蜂鸣器,很多人第一反应是用51单片机做,顺便练练C语言。但真去医院后勤看过一次就明白,病床呼叫器的问题根本不在“能不能响”,而在“持续可靠地响、准确显示床位、护士没到场时能二次提醒”。单片机方案在实验室演示没问题,一旦面对病房里电机床的电磁干扰、护士站到病房几十米长的布线、以及几年不关机的运行环境,维护成本会直线上升。用PLC做这个控制系统,等于把设计重心从写代码转移到管状态:输入怎么接、输出怎么带、信号怎么保持、异常怎么复位。这篇文章按硬件选型、I/O分配、梯形图逻辑、MCGS组态屏联动、调试排错这条线,把完整方案拆开讲,也适合正在做PLC课程设计的同学按步骤跟一遍。
2. PLC与病床呼叫器的点位梳理、I/O分配与选型
在写梯形图之前,先把“病床呼叫器”的需求翻译成PLC能处理的开关量清单。这一步做不做,直接决定后面编程和接线是否顺利。
2.1 输入侧拆开:呼叫按钮、卫生间拉线与护士应答
输入信号主要有三类。床头呼叫按钮是常开触点,病人按下后对应X点导通,松开后信号消失;卫生间拉线按钮也是常开,但动作方式不同,要求拉线盒带自复位功能,防止病人拉出后卡住不复位;护士站应答按钮和总复位按钮按普通输入点处理。这三类信号的共同点是全部为瞬时信号,按下后很快松开,PLC若拿这个瞬时信号直接驱动输出,灯只会闪一下。因此梯形图里必须为每一路呼叫做自保持,这是整个程序的地基。
输入点地址的分配最好按物理位置连续排列。以6间病房为例,X0到X5分给6张床头普通呼叫,X6到X11分给6个卫生间拉线,X12分给护士站应答,X13分给总复位,这样地址段与房间对应。查在线监控时,只需看X点哪一段在闪,立刻能判断是普通呼叫还是卫生间急呼。接线时注意三菱FX系列通过S/S端子切换源型/漏型输入,具体接法以对应型号手册为准,公共端接错会整组输入不动作。
2.2 输出侧:床头指示灯、急呼指示灯与蜂鸣器
输出侧按病房床位分配。每床头装一盏普通指示灯,卫生间门口装一盏急呼指示灯,护士站上方装蜂鸣器。走廊里的床号看板不一定要占用PLC输出点,用MCGS组态屏走通讯读取显示寄存器即可,这样能省下至少7个输出点。输出侧的初步分配如表所示。
| 信号类型 | 设备 | PLC地址 | 数量 | 说明 |
|---|---|---|---|---|
| 输入 | 床头呼叫按钮 | X0~X5 | 6 | 常开触点,瞬时信号 |
| 输入 | 卫生间拉线按钮 | X6~X11 | 6 | 常开触点,自复位 |
| 输入 | 护士应答按钮 | X12 | 1 | 常开,按一次复位当前呼叫 |
| 输入 | 总复位按钮 | X13 | 1 | 夜间查房后清空所有呼叫 |
| 输出 | 普通床头灯 | Y0~Y5 | 6 | AC 220V指示灯,继电器输出 |
| 输出 | 卫生间急呼灯 | Y6~Y11 | 6 | AC 220V指示灯,带RC吸收 |
| 输出 | 蜂鸣器 | Y12 | 1 | 经中间继电器驱动 |
| 输出 | 备用点 | Y13~Y15 | 3 | 预留 |
表里输入共14点、输出共16点,总计30点,选三菱FX3U-32MR/ES(16输入16输出)即可满足,实际使用率约94%,余量略紧。如果预算允许,选48点版本更从容,后续加“床旁护栏放下报警”这类输入点时不用换主机。
2.3 选型:继电器输出还是晶体管输出
病床呼叫器是典型的低速开关量负载,选型时有一个常见错误是追求“新”或“高速”而选晶体管输出型。晶体管输出只能驱动DC负载,还要考虑漏电流,在病房里带AC 220V指示灯非常别扭;继电器输出型每个点可直接带AC负载,抗冲击能力强,价格也低,对于几十米布线、几瓦负载的呼叫器场景是合理选择。感性负载比如蜂鸣器,最好并在触点两端加RC吸收,否则继电器触点寿命会明显缩短。
程序部分若换成西门子S7-200 SMART也能做,定时器编号、位寻址方式不同,但锁存、优先级、复位这三层结构可以直接平移。三菱FX3U资料多、GX Works2软件版本稳定,是课程设计里的主流选择。选型结论写进说明书时,把“I/O余量、继电器输出选型理由、备用点用途”三条写清楚,比罗列CPU型号参数更有说服力。
3. 病床呼叫器梯形图:锁存、优先级与复位怎么写
程序核心围绕三个问题展开:瞬间按下的按钮怎么变成持续状态、急呼来了怎么让普通呼叫让位、护士应答后怎么恢复。本节是三菱FX系列指令写法,换成其他品牌时逻辑同理。
3.1 呼叫锁存:为什么不能把按钮直接接输出
把呼叫按钮直接接到输出端,按下时灯亮,松开时灯灭,病人手一松护士站就不知道谁呼叫过。正确做法是用“自保持”电路把瞬时信号变成持续状态。以第1床普通呼叫为例,梯形图指令如下。
LD X000 ; 床头呼叫按钮,常开触点 OR M0 ; 自保持触点,与按钮并联形成或逻辑 ANI X012 ; 护士应答按钮,常闭触点 OUT M0 ; 输出到中间继电器,锁存呼叫状态 OUT Y000 ; 床头指示灯跟随M0点亮按下X0后M0导通并保持,即使X0松开,M0仍然为1;护士按下X12时,ANI X012断开,M0复位,Y0同时熄灭。使用M0而不是直接用Y0做自保持,是为了后续扩展:做急呼优先时,普通呼叫的灯可以被临时屏蔽,但M0里的呼叫记录不能丢。若把自保持直接做在Y0上,后面写“急呼优先”逻辑时就得花更多指令去绕。三菱PLC按LD到OUT的顺序在同一次扫描里处理M0,下一行OUT Y0读到的是本次扫描更新后的状态,不需要担心“上一拍的值”。
3.2 优先级:急呼来了,普通灯先让位但呼叫记录不丢
卫生间拉线一般是急呼,护士站要能区分普通呼叫和急呼。最简单可靠的做法不是用复杂的优先级队列,而是在输出显示前加一个“优先级门”。以第1床为例:
LD M0 ; 第1床普通呼叫锁存 ANI M6 ; 卫生间急呼锁存,无急呼时M6为OFF OUT Y000 ; 普通床头灯点亮 LD M6 ; 卫生间急呼锁存 OUT Y006 ; 急呼指示灯点亮当M6为ON时,Y0的驱动条件被ANI M6切断,普通床头灯熄灭,急呼灯亮起;M0本身没有受任何影响。急呼应答结束后,M6复位,普通呼叫灯自动恢复点亮。这种“熄灯不丢记录”的写法比直接RST M0安全,实际病房里经常出现急呼处理后忘记普通呼叫的情况。护士站床号显示同样用这个原则:急呼期间显示急呼床号,急呼解除后自动切回普通呼叫床号。
床号寄存器用MOV指令写入:
LD M20 ; 急呼信号上升沿脉冲,由PLS产生 MOV K6 D0 ; 将床号6写入D0,MCGS组态屏读取D0显示这里的M20必须来自PLS指令生成的脉冲,不能用M6直接驱动MOV。否则PLC每个扫描周期都执行一次MOV,D0被反复覆盖,后来产生的普通呼叫床号永远无法显示。这是梯形图里最常见的“数据被扫描周期刷掉”问题。
3.3 应答复位、超时二次提醒、总复位分开写
护士应答复位已在3.1中用ANI X012实现。另两个场景需要单独逻辑。第一是“病人按铃后护士长时间未到”,需要二次提醒而不是把呼叫直接清掉:
LD M0 ; 呼叫锁存 OUT T1 K3000 ; 300秒计时,100ms单位乘3000 LD T1 ANI Y012 ; 蜂鸣器尚未响过 OUT Y012 ; 蜂鸣器二次提醒,直到护士应答三菱FX3U的T0~T199是100ms定时器,K3000等于300秒。实际项目中二次提醒时间应该做成可调参数,把K3000换成数据寄存器D10,护士站组态屏上放一个数字输入框直接修改D10,改完立即生效,不用重新下载PLC程序。第二是夜间总复位,用PLS产生一次脉冲后RST所有呼叫锁存M点,避免总复位按钮被按住时把新产生的呼叫也清掉。
4. 护士站MCGS组态屏与PLC变量关联:从D0到屏幕
病房呼叫器的护士站通常不是一堆指示灯,而是组态屏或LED看板。MCGS组态屏是这类课程设计里最常见的搭配,学习成本低,和PLC变量关联直观。
4.1 先建变量映射表,再拖控件
新建MCGS工程后,先建“设备窗口”驱动,选择三菱FX系列串口驱动,设置COM口号、波特率、站号,然后在通道处理里把PLC软元件地址映射为组态变量。一份可用的映射表如下。
| PLC地址 | MCGS变量 | 类型 | 作用 |
|---|---|---|---|
| D0 | CurrBedNo | 整数 | 当前呼叫床号 |
| D10 | TimeOutValue | 整数 | 二次提醒时间,可写 |
| M0 | CallStatus01 | 开关 | 第1床普通呼叫状态 |
| M6 | UrgentStatus | 开关 | 急呼状态 |
| Y012 | BuzzerStatus | 开关 | 蜂鸣器状态 |
变量名建议用英文或拼音,不要用中文,因为部分组态屏的报表导出和脚本调试对中文变量支持不友好,出问题时排查成本高。映射建好后,屏幕上放一个指针显示或文本显示控件,数据源选CurrBedNo,即可实时显示当前呼叫床号。组态屏读写周期默认在几百毫秒到1秒,呼叫器对实时性要求不高,不要为了“秒回”把读写周期改成50ms,那样会频繁占用PLC通讯口,影响PLC主程序扫描。
4.2 组态脚本里做的事:把床号转成可读文本
PLC发过来的D0是数字,护士站屏幕上直接显示“6”不够直观,最好显示成“06床 卫生间急呼”。这个转换可以在组态屏脚本里完成。不同版本的MCGS脚本函数名有差异,但判断结构一致。
IF CurrBedNo = 6 THEN 显示文本 = "06床 卫生间急呼" ELSEIF CurrBedNo = 0 THEN 显示文本 = "无呼叫" ELSE 显示文本 = "呼叫床号:" + Str(CurrBedNo) ENDIF写脚本前先查当前版本MCGS的字符串转换函数名,不同版本差异明显,直接照搬老教程容易运行报错。显示控件的“文本显示”属性绑定数据源即可,脚本里不要每帧去SetText。循环脚本里做大量字符串拼接会拖慢组态屏运行效率,几十个点不明显,设备一多就卡顿。
4.3 事件记录与二次提醒:组态屏负责“知道谁没处理”
PLC只管在300秒后让蜂鸣器响,但护士站屏幕上要能看出是哪个床超过300秒没处理。做法是在组态屏上建一个“呼叫事件记录”窗口,脚本判断CallStatus01从0变1时记录当前系统时间和床号;护士应答后记录应答时间;用“当前时间-呼叫时间”算出等待时长,超过设定值就高亮显示。这里的时钟应使用组态屏的RTC,不要依赖PLC。部分PLC不带实时钟,掉电后时间回到初始值,用PLC时间去算等待时长会得到负值。组态屏大多带有电池供电的RTC,交付时要把“时间校准”写进使用说明。
5. 病床呼叫器PLC程序的调试路径与两个现场问题
5.1 没有真实硬件也能跑:GX Works2的模拟调试
三菱GX Works2自带PLC模拟器,用“调试→模拟”启动,程序逻辑在电脑上先完整跑一遍。把X0强制ON,观察M0、Y0是否变化;模拟X12按下,确认M0能复位。模拟调试能查出自保持和优先级的问题,但定时器的实际计时精度与真实PLC有差别,T1的300秒最终必须在实机上验证。注意“强制ON”是带记忆的,测完一个点要及时强制OFF,否则继续测试时该输入点一直处于导通状态,后面对应逻辑可能被错误触发。
5.2 卫生间拉线按钮误报
拉线开关内部触点是机械结构,闭合瞬间会抖动,PLC扫描速度远高于人手动作,抖动会被识别成多次呼叫,护士站床号显示乱跳。现场排查时先看X6在监控里是否反复闪烁,再看M6是否被反复置位。解决方式:程序里加延时确认,X6导通10ms后置位M6,机械抖动一般在几毫秒内结束,10ms的滤波足以跳过。尤其要注意,误报问题出在输入侧,检查顺序必须从X点开始,直接查Y点会浪费大量时间。
5.3 用一个累计计数器验证整个逻辑链路
程序运行时用M8000常ON触点配合INC指令,把每次呼叫次数累计到D100,组态屏上显示“累计呼叫数”。
LD M0 ; 第1床呼叫锁存 PLS M50 ; 生成呼叫上升沿脉冲 LD M50 INC D100 ; 累计呼叫次数加1这个计数器把“呼叫按钮是否真实触发”变成可量化数据。和护理记录对比,能反推某个按钮是否接触不良,也能发现某路输出继电器的隐性故障。把每床的累计次数做到组态屏报表里,一个月拉一次记录,哪张床按钮老化、哪路继电器触点粘连,对比呼叫次数和故障点位就能直接定位,不必等病人按铃找不到人时才发现问题。
本文还有配套的精品资源,点击获取