程序图纸全部奉上,含远程模块,远程模块支持云端控制 西门子 ST30+ AI8模拟量输入 正弦变频器 欧姆龙接近开关 四路遥控装置
最近在厂区自动化改造项目中折腾了一套支持云端控制的远程监控系统,核心设备清单有西门子ST30 PLC、AI8模拟量模块、正弦变频器、欧姆龙接近开关和四路遥控装置。这套系统最骚的操作是通过手机APP就能远程启停产线设备,咱们直接上干货。
远程模块的骚操作
云端控制的核心是物联网网关,这里用了Node-RED做协议转换。想让PLC数据上云?先整段Python脚本抓取寄存器数据:
import requests from pyModbusTCP.client import ModbusClient plc = ModbusClient(host='192.168.1.10', port=502, auto_open=True) # 读取AI8模块的电流值 current = plc.read_input_registers(40001, 1)[0] * 0.1 # 推送到云平台 requests.post('https://iot.xxx.com/api', json={'device_id':'ST30', 'current':current}, headers={'Authorization':'Bearer xxxx'})这段代码每隔5秒就会把AI8模块采集的4-20mA信号转成实际电流值推送到云端。注意40001是Modbus地址,0.1是量程系数,不同传感器需要校准这个值。
变频器速度控制
控制正弦变频器用的是西门子的USS协议,在ST30里需要配置通信板。梯形图里关键的两条指令:
// 设置变频器频率 MOVE 50.0 TO "VFD_Frequency" // 发送控制命令 CALL SFC58(REQ:=TRUE, LADDR:=256, DONE:=DB1.DBX0.0)这里REQ触发通信,LADDR是硬件地址,DB1.DBX0.0是完成位。调试时最坑的是波特率必须设为19200,否则变频器根本不搭理你。
程序图纸全部奉上,含远程模块,远程模块支持云端控制 西门子 ST30+ AI8模拟量输入 正弦变频器 欧姆龙接近开关 四路遥控装置
接近开关防抖黑科技
欧姆龙E2E-X5ME1接近开关接在PLC的DI模块上,遇到金属时亮红灯。但机械振动会产生误信号,ST代码里加了个滤波:
IF #ProximitySwitch THEN TON(IN:=TRUE, PT:=T#200ms); IF TON.Q THEN #RealTrigger := TRUE; END_IF ELSE TON(IN:=FALSE); END_IF这个200ms的延时过滤了瞬间抖动,实测能干掉95%的误触发。不过别设太长时间,否则会影响产线节拍。
四路遥控的暴力破解
遥控装置用的433MHz射频,PLC端用了个转Modbus的接收器。解码信号时发现协议居然是明码传输:
# 抓取到的遥控信号 raw_data = 'A5 01 00 FF A5' # 解析控制位 relay1 = bool(int(raw_data[2],16) & 0x01) relay2 = bool(int(raw_data[2],16) & 0x02)后来发现这遥控器每个按键对应一个十六进制位,直接按位与运算就能判断哪个继电器动作。安全性?不存在的!赶紧让甲方加了IP防护罩。
整套系统调试完最魔幻的场景:在海南度假时用手机切了东北工厂的产线模式。当然最后甲方验收时被逼着加了三重安全互锁——毕竟云端掉线时,本地PLC的紧急停止回路才是保命符。