2025/12/26 10:58:13
网站建设
项目流程
网站网页设计多少钱,湖北省和建设厅网站,朋友圈发布到wordpress,网络营销是什么300字自动售货机MCGS7.7和西门子S7-1200PLC联机程序博途V14#xff0c;带注释和IO分配表最近在折腾自动售货机的控制系统#xff0c;用MCGS7.7触摸屏和西门子S7-1200PLC搭了个联机系统。这俩设备的通讯就跟谈恋爱似的#xff0c;得互相听懂对方的语言才能干活。今天咱们就聊聊这个…自动售货机MCGS7.7和西门子S7-1200PLC联机程序博途V14带注释和IO分配表最近在折腾自动售货机的控制系统用MCGS7.7触摸屏和西门子S7-1200PLC搭了个联机系统。这俩设备的通讯就跟谈恋爱似的得互相听懂对方的语言才能干活。今天咱们就聊聊这个联机程序怎么配重点说说程序里那些硬核代码和IO分配。先说硬件配置这台自动售货机主要控制货道电机、退币机构、纸币器和硬币器。PLC这边用CPU1214C DC/DC/DC数字量输入输出各占10个点。IO分配表大概长这样DI点I0.0 投币信号I0.1 退币按钮I1.0 货道1到位I1.1 货道2到位DO点Q0.0 出货电机Q0.1 退币电机Q0.2 找零指示灯Q1.0 故障报警TIA Portal V14里新建个工程先给PLC配个Modbus TCP通讯。这步关键得很就像给设备办身份证MB_SERVER_DB : Modbus_TCP_Server_DB; MB_SERVER( REQ : TRUE, MB_ADDR : 1, MB_HOLD_REG : P#DB1.DBX0.0 WORD 10, CONNECT : TCPServer_1);这段代码把PLC变成Modbus服务器MCGS屏作为客户端来读数据。DB1这块数据区专门用来存售货状态比如当前余额、库存数量这些。投币检测程序最有意思得防着熊孩子乱拍按钮。用了个带延时滤波的检测逻辑IF 投币传感器 AND NOT 投币锁定 THEN 投币计数器 : 投币计数器 1; TON(投币延时, T#200MS); IF 投币延时.Q THEN 当前余额 : 当前余额 1; RESET_TIMER(投币延时); END_IF; END_IF;这个TON定时器专门对付接触不良产生的抖动信号200毫秒内重复触发只算一次有效投币。出货控制部分用了个状态机比直接写逻辑清晰多了。比如选货电机控制CASE 出货状态 OF 0: // 待机 IF 选择货道 0 THEN 出货状态 : 1; 目标货道 : 选择货道; END_IF; 1: // 启动电机 出货电机 : TRUE; TON(出货计时, T#3S); IF 货道到位信号 THEN 出货状态 : 2; ELSIF 出货计时.Q THEN 故障标志 : TRUE; END_IF; 2: // 完成出货 出货计数器 : 出货计数器 1; RESET_ALL; END_CASE;这个状态机把复杂的时序控制拆分成几个明确阶段比一堆互锁触点靠谱多了。特别是那个3秒超时检测能有效防止电机堵转。MCGS那边配置Modbus TCP客户端时记得把数据地址对齐。比如余额显示对应DB1.DBW0用个数值显示元件绑定40001地址。要是通讯不上八成是IP没设对或者防火墙拦了502端口。调试时遇到的坑也不少。有次退币电机死活不动查了半天发现是Q0.1输出点烧了。后来学乖了在程序里加了个输出点自检功能// 上电自检 IF FirstScan THEN FOR i : 0 TO 9 DO 输出测试[i] : TRUE; WAIT TIME T#500MS; END_FOR; 输出测试 : FALSE; END_IF;这段代码在PLC启动时让所有输出点轮流闪一遍维修时拿个万用表挨个测电压就行省得拆线检查。整个系统调通后实测发现Modbus通讯周期控制在100ms左右最合适。太快了MCGS容易卡界面太慢了用户会觉得操作延迟。最后在OB35中断组织块里做的通讯处理保证实时性。这项目做下来最大的感悟就是好的联机程序得像双人舞PLC负责精准执行HMI专注人机交互。两者既要独立工作又要默契配合。下次打算加上支付宝支付功能到时候再跟大伙分享怎么在工控设备里接物联网模块。