
简介基于PLC的病床呼叫器控制系统设计改.pdf是一份面向自动化、电气工程及相关专业学生的PLC课程设计参考资料解决医院病房紧急呼叫场景下的多床位呼叫、优先级判别与护士站联动控制问题。资源包仅1个PDF文件大小336KB内容紧凑覆盖了从设计任务书、PLC选型FX2N-64MR型、27个输入/20个输出、警报灯选型、I/O分配表、系统接线图到梯形图设计思路与仿真测试记录的完整流程适合需要完成类似课程设计或毕业设计的读者参考借鉴。目前已有719人学习下载。文档中针对3个病房、每病房4床位的需求给出了详细的硬件选型依据与软硬件设计方法并附带测试结果能帮助读者快速理解基于PLC的医疗呼叫系统整体架构缩短设计周期。1. 病床呼叫器为什么需要 PLC从“按铃亮灯”到“优先级锁存”的分界点病房呼叫器看起来是个简单设备床头一个按钮护士站一个灯按下就响。但真按医院场景做设计立刻会碰到一个分界点——多床同时呼叫时护士站不能只亮一排灯还要知道“谁先按的”“哪个是急呼”并且无论患者是否松手指示灯都要保持到护士确认。用继电器搭锁存要靠自锁触点优先权要靠复杂的互锁回路床位数一多电路板就变成蜘蛛网用单片机做硬件和程序又不适合电气维修人员接手。PLC 把输入扫描、内部继电器锁存、优先级判断和输出驱动放在同一个梯形图里改床位数只动 I/O 分配表这才是课程设计和中小型医院改造最常见的落地路径。下面以三菱 FX3U 和 GX Works2 为例从 I/O 分配、梯形图到触摸屏映射讲一套能跑通的最小系统。2. 控制系统方案设计与 PLC 选型I/O 点数、寄存器分配和通信方式2.1 病床呼叫器控制系统的三个组成回路任何病床呼叫器都绕不开三个基本回路输入回路、输出回路和控制回路。输入回路包括床头普通呼叫按钮、卫生间或抢救间急呼按钮以及护士站的总复位按钮。输出回路包括每个床位的指示灯、护士站的蜂鸣器、走廊的呼叫灯或显示屏。控制回路则是 PLC 本体以及它内部运行的梯形图程序。用 PLC 做控制的核心原因有两个。第一是“锁存”患者按一下按钮就松手但护士站必须持续看到呼叫直到护士按下复位第二是“优先级”急呼必须无条件优先于普通呼叫同一级里通常按床号从小到大响应。这两个要求靠普通并行接线都有办法实现但一旦加上“哪床先按”“是否重复呼叫”“定时未响应自动升级”这些附加功能纯硬件电路会复杂到没法维护。PLC 里的内部继电器 M 和寄存器 D 天然适合存这些状态改功能只需要改梯形图不用重新接线。2.2 以 4 床病房为例的 I/O 点数和 PLC 型号选择这里我按最常见的病房单元来设计一个护士站管理 4 间单人间病房每张床床头有一个普通呼叫按钮卫生间各有一个急呼按钮护士站有一个总复位按钮。输入点普通呼叫 4 点、急呼 4 点、总复位 1 点共 9 点。输出点每床普通指示灯 4 点、每床急呼指示灯 4 点、护士站蜂鸣器 1 点共 9 点。总 I/O 点数 18选三菱 FX3U-32MT/ES-A 刚好16 点输入加 16 点继电器或晶体管输出余量 7 点可以留给走廊灯、门灯或者后续扩展。这个选型的关键参数要提前定清楚输入模块公共端用 S/S 接 24V 正极输出模块如果是晶体管型Y 端子只能带 24V 直流负载不能直接接 220V 蜂鸣器。护士站蜂鸣器是 24V 直流电铃问题不大如果现场有 220V 改造灯必须在 Y 端子和负载之间加中间继电器隔离。触摸屏不需要占 PLC 的物理 I/O它走编程口或圆头 MD8 通信口使用 MCGS 组态时通过三菱 FX 系列串口协议直接读写 D 寄存器。下面这张表是具体的 I/O 分配写程序前必须把它固定下来否则梯形图写到一半再改地址很容易乱。地址功能地址功能X01 床普通呼叫按钮Y01 床普通指示灯X12 床普通呼叫按钮Y12 床普通指示灯X23 床普通呼叫按钮Y23 床普通指示灯X34 床普通呼叫按钮Y34 床普通指示灯X41 床卫生间急呼按钮Y41 床急呼指示灯X52 床卫生间急呼按钮Y52 床急呼指示灯X63 床卫生间急呼按钮Y63 床急呼指示灯X74 床卫生间急呼按钮Y74 床急呼指示灯X10护士站总复位按钮Y10护士站蜂鸣器X11预留走廊巡检复位Y11走廊呼叫灯D 寄存器的分配也不难D0 存当前有效呼叫编码1 到 4 表示 1 到 4 床普通呼叫5 到 8 表示 1 到 4 床急呼0 表示无呼叫。M0 到 M3 存普通呼叫锁存状态M4 到 M7 存急呼锁存状态M50 作为“已编码”标志让 D0 只写入优先级最高的那一路。2.3 关键参数输入滤波时间、输出保持与扫描周期对呼叫响应的影响PLC 的程序控制方式不是并行电路而是按扫描周期一遍遍执行梯形图。FX3U 的基本扫描速度是 0.065μs/步但实际响应时间还要算上输入滤波、程序执行和输出刷新三部分。呼叫按钮是机械触点按下瞬间会产生抖动如果直接把原始触点接入输入模块梯形图里有可能出现几次 ON/OFF 抖动的空读数。三菱 FX3U 的 X0 到 X7 默认有 10ms 输入滤波这个时间记录在特殊寄存器 D8020 中可以在程序里用 MOV K10 D8020 修改。这里给出一个响应时间估算公式按钮按下到输出指示灯点亮的总时间约等于输入滤波时间加上当前扫描周期剩余时间再加上程序执行时间和输出刷新时间。假设 D8020 设为 10ms扫描周期 2ms那么一次呼叫从按下到灯亮大约 12ms 到 14ms护士根本感觉不到延迟。相反如果为了追求极端响应速度把 D8020 设成 1ms机械抖动就会直接进 PLC梯形图里需要额外加延时比较或脉冲宽度过滤反而增加程序复杂度。所以我一般建议普通呼叫用默认 10ms急呼如果接在 X4 到 X7 上也保持默认值后续若需要更快的边沿响应可以把急呼按钮改接到 X0 到 X3 并使用输入中断但那是后面的提高项不推荐课程设计第一版就用。输出侧还有一个容易被忽略的参数乐意为 PLC 的输入输出模块维护一个输出保持区。FX3U 的输出端子在一个扫描周期结束时统一刷新梯形图中间无论怎么改变 Y0都不会立刻反映到物理端子。这意味着程序中不需要特意加“延时输出”指令只要按逻辑写就行PLC 会保证所有输出在同一瞬间刷新不会出现某盏灯先亮半拍的问题。3. 梯形图核心程序优先权判断、呼叫锁存与复位逻辑3.1 呼叫锁存和总复位网络SET/RST 的用法与保持区病床呼叫器梯形图的第一个部分是呼叫锁存。普通呼叫按钮是一对常开触点按下时 X0 变为 ON松手后 X0 恢复 OFF。如果用 OUT 指令直接驱动输出按钮松开后灯就灭了这不符合临床要求。所以要用内部继电器把状态“锁住”。下面是 1 床和 2 床的普通呼叫锁存网络只写两床做示例3 床 4 床照抄即可LD X0 OR M0 ANI X10 OUT M0 LD X1 OR M1 ANI X10 OUT M1第一行 LD X0 读取床头按钮状态OR M0 与当前锁存继电器做逻辑或ANI X10 把护士站总复位按钮的常闭触点串进去最后 OUT M0 写回锁存继电器。这样只要 X0 出现过一次 ONM0 就会一直保持为 ON按下总复位 X10 时X10 的常闭触点断开所有输出的 M 都被强制清零。同理急呼按钮 X4 到 X7 的锁存网络逻辑完全相同只不过要把输出地址换成 M4 到 M7。这里有个关键选型用 OR 自保持而不是 SET 指令初衷是让总复位能在任意时刻打断保持。SET 和 RST 也可以实现同样功能但需要额外写一条 RST M0 指令而且一旦漏掉复位条件会留下隐蔽的保持点。OR 自保持虽然代码多几行但对病床呼叫器这种“必须可靠复位”的场景更直观。急呼锁存程序与上面一致X0 换成 X4M0 换成 M4X10 的复位逻辑仍然保留。3.2 急呼优先编码用触点比较和 MOV 把最小床号写入 D0锁存只是第一步护士站还要知道“现在最该处理哪一床”。这里我不做复杂的队列而是按医院常见规则急呼优先于普通呼叫同级呼叫按床号小者优先。编码结果写到 D0触摸屏和走廊屏读取 D0 显示床号。急呼编码网络放在普通编码前面。M4 到 M7 是急呼锁存状态M50 是已编码标志初始为 OFF。程序先检查是否有急呼然后用一条条“LD ANI MOV SET”的结构找到最小床号LD M4 ANI M50 MOV K5 D0 SET M50 LD M5 ANI M50 MOV K6 D0 SET M50 LD M6 ANI M50 MOV K7 D0 SET M50 LD M7 ANI M50 MOV K8 D0 SET M50从左往右看第一条网络先检查 M4 是否为 ON。如果 M4 ON 且 M50 还是 OFF就把 K5 送到 D0并 SET M50。M4 ON 说明 1 床卫生间有急呼K5 在 D0 里代表急呼 1 床。随后的 M5、M6、M7 网络因为 M50 已经是 ONANI M50 的条件不成立全部跳过。这样找出来的一定是编号最小的急呼床而不是后来按下去的床。普通编码网络必须在没有任何急呼时才允许执行。M52 是急呼存在标志它在程序前段已经通过“LD M4 OR M5 OR M6 OR M7 OUT M52”算好。普通编码的每条网络里都串一个 ANI M52只要任一急呼存在普通编码整体失效。下面是前两床的写法LD M0 ANI M52 ANI M50 MOV K1 D0 SET M50 LD M1 ANI M52 ANI M50 MOV K2 D0 SET M50 LD M2 ANI M52 ANI M50 MOV K3 D0 SET M50 LD M3 ANI M52 ANI M50 MOV K4 D0 SET M50如果 M0 和 M1 同时 ONM50 从 OFF 变成 ON只有 M0 所在的网络会写入 K1所以 D0 为 1表示 1 床普通呼叫优先。护士处理完 1 床按下总复位后M50 被清D0 被清下一次扫描时如果 M1 仍然保持 OND0 会再次写入 K2。注意这一套编码逻辑依赖扫描顺序适合床位数不超过 10 的场景若病房扩展到 32 床以上建议改成查表法或直接用触摸屏脚本排序。3.3 输出驱动逻辑指示灯、蜂鸣器与触摸屏通信地址输出逻辑比较直接。M0 到 M3 对应 Y0 到 Y3M4 到 M7 对应 Y4 到 Y7LD M0 OUT Y0 LD M1 OUT Y1 LD M2 OUT Y2 LD M3 OUT Y3 LD M4 OUT Y4 LD M5 OUT Y5 LD M6 OUT Y6 LD M7 OUT Y7蜂鸣器和走廊灯不需要区分普通还是急呼只要存在任意呼叫就一起响。所以用一条长 OR 网络收集所有 M0 到 M7 的状态LD M0 OR M1 OR M2 OR M3 OR M4 OR M5 OR M6 OR M7 OUT Y10 OUT Y11这里 Y11 走廊灯和 Y10 蜂鸣器的输出条件完全一致可以共用同一个触点块。如果需要区分急呼音可以把 Y10 换成蜂鸣器再额外加一个 Y12 作为急呼闪灯由 M52 单独驱动。这种输出划分的好处是护士站只需要关注 D0 这一个数据寄存器就能在触摸屏上显示当前最重要的一床呼叫不干扰 Y 输出逻辑。复位程序在整个程序末尾包含初始脉冲和总复位按钮两路条件LD X10 OR M8002 ZRST M0 M7 ZRST M50 M53 MOV K0 D0M8002 是 FX3U 的运行初始脉冲上电瞬间只 ON 一个扫描周期和 X10 并联后无论断电恢复还是人工复位都会把所有锁存继电器和编码标志清掉。ZRST M0 M7 是一次性把 M0 到 M7 全部复位比逐条 RST 效率高也能避免漏写某一路。这里特意把 M50 到 M53 也复位是因为 M50 如果不清下一次新呼叫到来时所有编码网络都会被 ANI M50 拦住D0 永远显示 0。4. 人机交互与抗干扰设计触摸屏变量映射、输入滤波和输出隔离4.1 MCGS 变量映射与报警画面D0 对应呼叫床号M50 驱动蜂鸣器护士站的显示端我采用 MCGS 触摸屏型号不限只要带串口就行。MCGS 组态软件里新建工程后设备窗口选择“三菱 FX 系列编程口”通信参数设置为波特率 9600、8 数据位、无校验、1 停止位。PLC 侧不需要额外配置因为 FX3U 编程口默认就是这种通信格式。变量映射很关键。MCGS 的通道地址要和 PLC 的 D 寄存器对应上在设备编辑窗口中新增一个“D0”通道读写属性设为“读写”数据类型为“数值型”再新增“M50”通道数据类型为“开关型”。D0 就是护士站屏幕上显示床号的数据源M50 可以用来驱动蜂鸣器图标闪烁。在 MCGS 的画面脚本里可以写一个小判断用于把 D0 的值翻译成汉字提示。举个例子if D0 5 then 急呼提示.Value 1 呼叫床号.Value D0 - 4 elseif D0 0 then 急呼提示.Value 0 呼叫床号.Value D0 else 呼叫床号.Value 0 急呼提示.Value 0 endif这段脚本的意思很清楚D0 在 5 到 8 之间说明是急呼显示床号要把 4 刨掉D0 在 1 到 4 之间是普通呼叫直接显示D0 为 0 时画面清空。把“急呼提示”做成一个矩形标签背光色在值为 1 时变红护士就算不看文字也能一眼分辨紧急状态。脚本里的 D0 和急呼提示都来自设备通道不需要在 PLC 梯形图里再做显示编码。4.2 输入滤波与急呼响应速度的取舍前面提到 FX3U 的 X0 到 X7 输入滤波由 D8020 控制默认 10ms。这个值对应机械按钮正好但如果你希望急呼按钮的响应时间小于 1ms直接修改 D8020 会带来抖动风险。一个折中方案是把急呼按钮接到 X0 到 X3然后在程序初始化中使用MOV K2 D8020把输入滤波降到 2ms。但要注意D8020 是 X0 到 X7 共用的降下来以后普通呼叫按钮的滤波也会跟着变短。所以更稳妥的做法是维持 D8020 默认值在梯形图中用“两次读数一致”的方式做软件过滤把 X4 的当前状态存入 M70上一个扫描周期状态存入 M71仅当 M70 和 M71 同时为 ON 时才认为急呼有效。这样即使 X4 有短暂抖动也不会被当成一次真正的急呼。实际工程里我会把急呼按钮选型也考虑进去。最好用自带拨片的拉绳式按钮动作干脆触点弹跳时间短床头普通呼叫按钮则选用带自复位的薄膜按钮这两种器件本身抖动都不超过 5ms10ms 滤波足够。4.3 输出端电气隔离与感性负载处理输出端最容易翻车的地方是蜂鸣器。蜂鸣器线圈属于感性负载断电瞬间会产生反向电动势直接接 PLC 的晶体管或继电器输出会缩短端子寿命。正确做法是Y10 先去驱动一个中间继电器线圈中间继电器触点再去控制蜂鸣器电源。中间继电器线圈两端并联一个续流二极管反向截止电压由二极管吸收PLC 输出端子只管导通和关断不承受尖峰冲击。指示灯是 24V 直流 LED 灯本身没有感性问题但仍要确认电流大小。FX3U 晶体管输出每点最大 0.5ALED 指示灯一般只有几十毫安可以直接接。走廊灯如果是老式 220V 白炽灯必须用接触器或固态继电器隔离绝对不允许 Y 端子带 220V。电源方面PLC 本体 24V 输出只建议给触摸屏供电外部按钮和指示灯要单独使用 24V 稳压电源防止启动瞬间电压跌落让 PLC 误复位。5. 验证与交付用 GX Works2 仿真和输入强制功能排查优先回路5.1 用仿真模式模拟“两床同时呼叫”的场景程序写完先不要着急接实物GX Works2 自带逻辑测试功能可以模拟运行梯形图。把程序编译无误后点击菜单“工具—模拟开始”系统会弹出一个梯形图逻辑测试窗口。在测试窗口中可以直接强制输入软元件 X 的状态不需要 PLC 硬件就能观察 M、Y、D 的变化。验证优先权要按下面的顺序做先强制 X0 为 ON松开观察 M0 是否保持 ON、D0 是否变成 1、Y0 是否变亮。再强制 X1 为 ON此时 M1 也变为 ON但 D0 必须还停留在 1不能被 2 覆盖。这一步能验证 M50 的“已编码”锁是否生效。然后强制 X4 为 ON模拟 1 床卫生间急呼D0 应立即跳变到 5Y4 亮Y10 蜂鸣器保持 ON而且不管 M0、M1 怎么保持普通床号都不再影响 D0。如果发现 D0 没有被锁住问题基本都出在编码网络里的 ANI M50 条件被错误并联到其他分支。用监控表观察 M50 的状态如果它在第一次编码后没有变为 ON检查 SET M50 指令是否被放在了 MOV 指令之后同一条件块内。5.2 用输入强制和状态软元件监控表验证复位逻辑复位测试也不能漏。先让多个床同时处于呼叫状态然后强制 X10 为 ON 一个扫描周期再强制 OFF。正常情况下 M0 到 M7、M50 到 M53、D0 全部清零Y0 到 Y7、Y10、Y11 全部熄灭。如果有个别 Y 还亮着多半是 ZRST 的范围写少了例如只 ZRST M0 M40漏掉了 M41 之后的标志位。最后打开 GX Works2 的“软元件监控表”把 X0、X4、M0、M4、M50、D0、Y0、Y10 放进同一个表格里用于现场调试时观察抓取。调试通过后把 D8020 的初始化指令放在梯形图的第一个网络格式为LD M8000然后MOV K10 D8020确保每次 PLC 一启动输入滤波参数就被写入。看到这里优先回路就已经完成验证剩下的工作是把 D0 接到 MCGS 的字符标签上再在护士站屏幕上做一个“点击复位”按钮把它映射成 X10 的置位信号即可。本文还有配套的精品资源点击获取