python 报警灯控制

说明

在做项目时,遇到一个需求:当遇到图片效果NG情况时,需要控制报警灯闪烁。

简单的说就是通过串口或usb或socket发送信号给报警灯。我是搞软件的,没接触过工控,什么开关电源、plc、modbus、中继器、485串口、直流交流电源都不懂,所以疑问就很多了,

  • 用232、485、usb还是socket?

  • 发送什么协议给什么灯?

方案一

经过搜索一些资料,先给一个简单的方案:

  • 淘宝购买:悦欣 12V报警器串口RS485

按照提供的说明书,将串口线连接后,可以使用串口精灵发送数据([0X7E, 0XFF, 0X06, 0X3A, 0X00, 0X00, 0X00, 0XEF]),报警灯就会闪烁,同时还可以通过设置mp3,发出指定声音。

python 通过库 pyserial:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class yx02sCom:
def __init__(self):
if 'win' in sys.platform:
comName = 'com1'
else:
comName = '/dev/ttyTHS1'
self.com = serial.Serial(comName, baudrate=9600, bytesize=8, stopbits=1, timeout=1)

def __del__(self):
pass

def openAlarm(self):
if not self.com.isOpen():
self.com.close()
self.com.open()
myinput = bytes([0X7E, 0XFF, 0X06, 0X3A, 0X00, 0X00, 0X00, 0XEF])
self.com.write(myinput)

def closeAlarm(self):
"""
关闭报警灯
:return:
"""
myinput = bytes([0x7E, 0xFF, 0x06, 0x3A, 0x00, 0x00, 0x01, 0xEF])
self.com.write(myinput)
self.com.close()

这个方案比较简单,但也有缺点,就是报警器需要人工关闭,本身并不会自动关闭。

方案二

使用控制模块+普通报警灯。

控制模块的功能大概就是模块实现了很多复杂功能,程序只要发送指定的命令,就可以组合出很多功能,比如延时控制、脉冲控制……

我选择的是阿尔泰4路信号继电器DAM3944A,简单的组网:

upload successful

使用485串口连接DAM3944A,然后普通报警灯通过连接DAM3944A的一个中继口, 大概原理就是:pc通过发送开关信号给DAM3944A,DAM3944A通过中继器控制电源控制报警灯的开关。

同时,DAM3944A也可以通过脉冲信号,实现报警灯的自动关闭和心跳闪烁功能。

命令字可以通过厂家提供的软件获取。

缺点:就是接线有点复杂。

upload successful

upload successful