thepresent 发表于 2020-9-19 19:20:06

求助,树莓派与PLC电平转换故障

在树莓派上写了一个Python程序,涉及到跟PLC的同步,PLC通过其输出口将使能信号发给树莓派的IO口上。由于树莓派的IO口电压与PLC的电压不一样,用PC817实现一个电平转换,树莓派的IO口设定为输入模式,并使能下拉电阻(10k)。电平转换功能正常,树莓派和PLC24小时运行,现在出现连续运行几天之后树莓派无法正常监测到PLC输出的电平改变,重启树莓派之后就没有问题了。出现问题的时候树莓派上的程序还在正常运行,就是不能识别电平。麻烦问一下可能是哪方面的原因。谢谢大家。
电平转换板的电路图如下:

电子喵星人 发表于 2020-9-19 19:29:07

单纯从电路上看好像没问题。
感觉是系统程序死了,挂了,没响应了,就跟你上网时浏览器卡死一样。

thepresent 发表于 2020-9-19 19:37:55

电子喵星人 发表于 2020-9-19 19:29
单纯从电路上看好像没问题。
感觉是系统程序死了,挂了,没响应了,就跟你上网时浏览器卡死一样。 ...

程序没问题,因为有两路这样的从PLC发送到树莓派的io口,其中一路出问题的时候另外一路是工作正常的。

TonyCai 发表于 2020-9-19 19:46:53

2分法, 确定是PC问题,还是PC817问题?

thepresent 发表于 2020-9-19 19:55:42

现在出了问题之后,退出树莓派的程序重新进入的话故障还是存在。重启树莓派的话故障就可以消除。

dukelec 发表于 2020-9-19 20:35:34

出問題的時候,命令行讀一下 GPIO 的輸入數據寄存器,排查一下數據。
如果數據一直是高電平,用鑷子短路 IO 到地試試。
看一下 raspberry cpu datasheet io 輸入低電平閾值是多少,懷疑 3 極管拉的不夠低,在臨界值,而且上拉電阻比較強。重啟可能讓 VCCIO 有所波動,所以正常一段時間。

电子喵星人 发表于 2020-9-19 20:37:23

树莓派不是单片机,实时性和稳定性都欠缺,GPIO如果是用于实际用途,不合适。
用串口会更好,但要适配通讯协议了。

wangrwnyan123 发表于 2020-9-19 20:40:37

你的PLC输出是24V吗,1.8K的限流电阻合适吗?

thepresent 发表于 2020-9-19 21:09:34

wangrwnyan123 发表于 2020-9-19 20:40
你的PLC输出是24V吗,1.8K的限流电阻合适吗?

PLC输出是24V,1.8K的限流电阻是根据手册来的,我也用万用表测过,高低电平的区分比较明显,符合树莓派的高低电平的判断标准。

dukelec 发表于 2020-9-19 21:11:06

thepresent 发表于 2020-9-19 21:09
PLC输出是24V,1.8K的限流电阻是根据手册来的,我也用万用表测过,高低电平的区分比较明显,符合树莓派的 ...

樹莓派低電平判斷標準是多少 V?

thepresent 发表于 2020-9-19 21:14:37

电子喵星人 发表于 2020-9-19 20:37
树莓派不是单片机,实时性和稳定性都欠缺,GPIO如果是用于实际用途,不合适。
用串口会更好,但要适配通讯 ...

对实时性没有太高要求,树莓派的GPIO的稳定性是受什么影响?Linux系统的稳定性还是CPU的稳定性?之前想过用串口来操作,不过后来觉的GPIO简单,所以用了GPIO。

thepresent 发表于 2020-9-19 21:23:16

dukelec 发表于 2020-9-19 21:11
樹莓派低電平判斷標準是多少 V?
https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md
3.3V时 低电平为低于0.9V,高电平为高于1.6V

shhludb 发表于 2020-9-19 21:52:17

工业应用光耦出来加一级施密特整形

Error.Dan 发表于 2020-9-20 13:11:39

树莓派用在现场还是推荐走通信,外面挂正经的远程IO做现场控制或者交互,哪怕假货宝上最便宜的远程IO板卡也比自己折腾的电平转换要来的靠谱.

tdatd 发表于 2020-9-22 08:25:48

r20 接10k的上拉,然后光耦的c级接树莓派的io就行了,树莓派内部的10k没必要了。

初音之恋 发表于 2020-9-22 08:28:59

接下拉什么鬼

thepresent 发表于 2020-9-22 09:20:38

初音之恋 发表于 2020-9-22 08:28
接下拉什么鬼

跟这个有关系吗?

初音之恋 发表于 2020-9-25 08:32:26

thepresent 发表于 2020-9-22 09:20
跟这个有关系吗?

一般R20接个4.7K左右就不用下拉了,如果PLC光耦有变化,电平读不到有可能是软件问题

初音之恋 发表于 2020-9-25 08:34:24

初音之恋 发表于 2020-9-25 08:32
一般R20接个4.7K左右就不用下拉了,如果PLC光耦有变化,电平读不到有可能是软件问题 ...

带仿真跑,监视一下寄存器变化,看看输入口寄存器有没有发生变化,再量量电压

thepresent 发表于 2020-9-25 08:54:10

初音之恋 发表于 2020-9-25 08:34
带仿真跑,监视一下寄存器变化,看看输入口寄存器有没有发生变化,再量量电压 ...

树莓派怎么带仿真跑啊?要自己改写驱动程序吗?我在python程序里面用print把相关信息都打印出来了。

cheng-8yang 发表于 2020-9-25 08:54:23

thepresent 发表于 2020-9-22 09:20
跟这个有关系吗?

树莓派和PLC是通过接插件连接的?

thepresent 发表于 2020-9-25 09:01:01

本帖最后由 thepresent 于 2020-9-25 09:18 编辑

cheng-8yang 发表于 2020-9-25 08:54
树莓派和PLC是通过接插件连接的?

对,左边通过排线连到树莓派,右边通过接插件连到PLC

cheng-8yang 发表于 2020-9-25 09:04:35

thepresent 发表于 2020-9-25 09:01
对,左边通过排线连到树莓派,右边通过接插件连到PLC

在树莓派的输入接3.3V的ESD管试下?ESD静电管,SOD-523,ESD3V3D5-TP

thepresent 发表于 2020-9-25 09:11:18

cheng-8yang 发表于 2020-9-25 09:04
在树莓派的输入接3.3V的ESD管试下?ESD静电管,SOD-523,ESD3V3D5-TP

麻烦问一下,加ESD管的作用是什么啊?我之前从淘宝上买了一个电平转换板,上面的电路基本上跟当前的一样,也没有加ESD管,这个ESD是必要的吗?

矩阵时间 发表于 2020-9-25 09:27:49

PC817 是线性光耦。
一路可以,一路不可以,现象很诡异。
可以交换一下接线来测试,另外,还可以换个板子的来测试。
一个板子,说明不了啥。

cheng-8yang 发表于 2020-9-25 09:30:17

thepresent 发表于 2020-9-25 09:11
麻烦问一下,加ESD管的作用是什么啊?我之前从淘宝上买了一个电平转换板,上面的电路基本上跟当前的一样 ...

在实际的产品上,IO连接插件的都会加ESD或TVS的,你这个是和PLC连接的,我觉得需要。但也不确定是不是这个问题,我只是提个建议,如果你找不到其他问题可以试下。

thepresent 发表于 2020-9-25 10:20:21

cheng-8yang 发表于 2020-9-25 09:30
在实际的产品上,IO连接插件的都会加ESD或TVS的,你这个是和PLC连接的,我觉得需要。但也不确定是不是这 ...

好的,谢谢了

thepresent 发表于 2020-9-25 10:30:40

矩阵时间 发表于 2020-9-25 09:27
PC817 是线性光耦。
一路可以,一路不可以,现象很诡异。
可以交换一下接线来测试,另外,还可以换个板子的 ...

现在这个故障出现的频率也不高,连续24小时运行,一个月出了两次。下次出问题了再仔细分析一下。
目前是在PLC的程序里里面增加一个检验,树莓派检测到电平变化后会往PLC输出一个标志位的变化,PLC检查标志位,如果与当前的PLC的输出不符的话就报警,这样使用的话问题也不大,主要是不明白这是什么原因造成的。

矩阵时间 发表于 2020-9-25 10:36:18

thepresent 发表于 2020-9-25 10:30
现在这个故障出现的频率也不高,连续24小时运行,一个月出了两次。下次出问题了再仔细分析一下。
目前是 ...

你没有注意到 线性 这两个字吗?
电压落在临界区,就会检测不到。但是,三用表放上去,临界条件就会改变,因此,借助仪器,看不到。
检测到变化,发标识去确认,如果检测不到呢?
你们现在的问题就是检测不到啊。

thepresent 发表于 2020-9-25 13:10:04

本帖最后由 thepresent 于 2020-9-25 13:12 编辑

矩阵时间 发表于 2020-9-25 10:36
你没有注意到 线性 这两个字吗?
电压落在临界区,就会检测不到。但是,三用表放上去,临界条件就会改变 ...

你说的临界区是什么原因造成的?PLC的电压不正常造成的吗?我理解的是如果PLC的输入电压不变,树莓派的电压也不变,经过光耦的电压应该是一致的吧?
另外说检测不到的问题,我说的是现在在找不到原因的情况下采取的方案。如果树莓派检测不到电压,树莓派发往PLC的信号就不会有变化,PLC知道自己的输出和输入是什么,PLC检测不到变化就报警,就停止后续的程序执行,提醒维护人员重启设备。

bigharpoon 发表于 2020-9-25 15:37:00

去掉下拉R21,增大R20到1K、4.7K、10K试一试

thepresent 发表于 2020-9-25 17:33:08

bigharpoon 发表于 2020-9-25 15:37
去掉下拉R21,增大R20到1K、4.7K、10K试一试

好的,现在PLC程序还没有修改,等修改完成之后试一下
页: [1]
查看完整版本: 求助,树莓派与PLC电平转换故障