第3章:数字IO接口与PLC对接
各位同学,今天我们来聊聊数字IO接口与PLC对接的那些事。说实话,这个知识点在自动化现场太常见了。我见过太多工程师因为接线方式搞错,烧了PLC输入点,那叫一个心疼。
3.1 PLC数字输入模块原理
PLC的数字输入模块,说白了就是判断外部信号是"通"还是"断"。但这里有个关键点——它内部是怎么工作的?
我给大家拆解一下。典型的数字输入模块内部,有一个光耦隔离器。外部信号进来,先经过光耦,再传给CPU。这样做的好处很明显:电气隔离,抗干扰。
光耦的输入端一般是个LED,输出端是个光敏三极管。外部有24V信号时,LED亮,光敏管导通,CPU读到"1"。没信号时,LED灭,CPU读到"0"。就这么简单。
但实际项目中,我遇到过一个问题:有些传感器输出的是NPN信号,有些是PNP信号。接错了,PLC死活读不到数据。这就引出了下一个话题——源型和漏型。
3.2 源型/漏型接线
这两个词,我刚开始做项目时也搞混过。咱们用最直白的方式理解:
- 漏型(Sinking):电流从负载流向PLC输入端。说白了,PLC输入模块内部是正极,外部传感器提供负极。
- 源型(Sourcing):电流从PLC输入端流向负载。PLC输入模块内部是负极,外部传感器提供正极。
我给大家画个表格,一目了然:
| 类型 | 电流方向 | 常见传感器 | PLC公共端接法 |
|---|---|---|---|
| 漏型(NPN) | PLC → 传感器 | NPN型接近开关 | 公共端接0V |
| 源型(PNP) | 传感器 → PLC | PNP型接近开关 | 公共端接24V |
你想想看,如果PLC模块是漏型(公共端接0V),你接了个PNP传感器。传感器输出24V,但PLC输入端需要的是0V信号。这不就冲突了吗?
3.3 高速计数器接口
说到高速计数器,这可是个硬核话题。普通的数字输入,PLC扫描周期一般在几毫秒到几十毫秒。但编码器信号,频率可能高达几十千赫兹甚至更高。PLC的普通扫描根本跟不上。
怎么办?PLC内部有专门的高速计数器模块。它不依赖CPU的扫描周期,而是用硬件直接计数。
我给大家看个典型接线图(用文字描述):
编码器A相 → PLC高速计数器输入点(如西门子S7-1200的I0.0)
编码器B相 → PLC高速计数器输入点(如I0.1)
编码器Z相(零位) → PLC高速计数器输入点(如I0.2)
编码器电源(+24V) → PLC 24V电源正极
编码器0V → PLC 24V电源负极
这里有个坑,我必须要说:编码器的输出类型也要匹配PLC的输入类型。NPN输出的编码器,不能直接接源型输入模块。中间要加转换电路,或者用带方向判断的高速计数器模块。
3.4 中断信号处理
中断,这个词听起来高大上。其实说白了,就是让PLC放下手头的工作,先去处理紧急事件。
PLC的扫描周期是固定的:读输入→执行程序→写输出。但如果有个信号需要立即响应,比如急停按钮按下,你总不能等下一个扫描周期吧?
这时候就要用中断。PLC的中断信号,一般也是通过数字输入点接入的。但和普通输入不同,中断输入点有硬件上的特殊设计。
我给大家列一下常见的中断类型:
- 上升沿中断:信号从0变1时触发
- 下降沿中断:信号从1变0时触发
- 硬件中断:由外部信号直接触发,响应最快
- 时间中断:定时触发,比如每10ms执行一次
在西门子S7-1200中,中断的配置是这样的:
// 在OB1(主程序)中,我们正常写逻辑
// 但中断事件由OB40(硬件中断组织块)处理
// 配置步骤:
// 1. 在设备组态中,选择输入点I0.0
// 2. 启用硬件中断功能
// 3. 选择触发沿(上升沿或下降沿)
// 4. 关联到OB40
// OB40中的代码示例:
#interrupt_count := #interrupt_count + 1;
// 这里写紧急处理逻辑
// 比如:立即停止电机,记录故障时间
嗯,这里要注意:中断程序要尽量短。我见过有人在中断里写了几百行代码,结果中断还没处理完,下一个中断又来了。系统直接崩溃。
- 中断程序执行时间 < 中断触发间隔
- 中断里不要用延时指令
- 中断里不要读写大量数据
- 中断里不要调用子程序(除非子程序也很短)
我曾经在一个包装机上,用中断处理编码器的Z相信号。每次编码器转一圈,Z相触发一次中断,PLC记录当前位置。但有一次,编码器转速太高,中断触发频率超过了PLC的处理能力。结果呢?丢脉冲了,位置数据全乱套。
后来怎么解决的?我换了一个带硬件锁存功能的PLC模块。编码器Z相信号直接锁存到硬件寄存器里,CPU慢慢读就行。这样就不怕中断丢失了。
3.5 实战总结
好了,这一章的内容就这些。我给大家总结几个关键点:
- 接线前确认类型:源型还是漏型,NPN还是PNP,搞错了就烧模块
- 高速信号用专用接口:别指望普通数字输入能处理编码器信号
- 中断程序要精简:能放主循环的,别放中断里
- 抗干扰不能省:屏蔽线、RC滤波、光耦隔离,该用就用
下一章,我们会讲模拟量输入接口与信号调理。到时候我会分享一个关于热电偶冷端补偿的实战案例,那才叫一个精彩。咱们下节课见!