西门子1200plc程序实例,TCP/IP及modbus通讯,博图14以上可以打开,程序已在设备上运行相对稳定了,比较成熟的一款程序,包含plc程序以及威纶通hml程序,以及伺服说明,具体功能如下: 1,西门子1200控制4台步进电机; 2,西门子1200与4台MS300变频器modbus485轮询读写参数; 3,西门子1200与上位机TCP/IP通讯控制相机照,反馈数据; 4,设备为多工位联动控制; 5.程序包含基本很多通讯以及伺服控制,可以做成模板,直接调用,更适合新手学习,以及借鉴用的
这个项目用西门子1200PLC搭建的自动化平台有点意思,特别是对于刚入行的小伙伴来说,可以直接抄作业。咱们先看硬件配置:CPU1215C带两个信号板,一个CM1241 RS485模块搞Modbus,另一个是常规的网口模块走TCP。这个组合拳打下来,基本上覆盖了中小型项目80%的通讯需求。
步进电机的控制用了PTO脉冲输出,重点是把轴控做成FB块。比如这个轴控函数块:
// 步进轴控制FB FUNCTION_BLOCK Axis_Control VAR_INPUT JogForward: BOOL; // 点动正转 JogBackward: BOOL; // 点动反转 SetPosition: REAL; // 目标位置 END_VAR VAR_OUTPUT CurrentPos: REAL; // 当前位置 StatusWord: WORD; // 状态字 END_VAR封装好之后,主程序里调用四次这个FB,分别对应四个工位的步进电机。这种模块化写法新手可以直接套用,改改参数就能用在别的项目里。
Modbus轮询这趴有点讲究,四台变频器共用一条485总线。关键是要错开轮询时间,这里用了个状态机:
CASE State OF 0: // 读取1#变频器频率 MB_MASTER(REQ:=TRUE, UNIT_ID:=1, ...); IF NOT BUSY THEN State := 10; END_IF; 10: // 写入1#变频器参数 MB_MASTER(REQ:=TRUE, UNIT_ID:=1, ...); IF NOT BUSY THEN State := 20; END_IF; // 类似处理剩下3台... END_CASE;实测下来每台变频器的通讯间隔控制在150ms左右最稳,太快了容易丢包。这里有个坑要注意:西门子的Modbus库函数必须用沿触发,直接给TRUE会死循环。
西门子1200plc程序实例,TCP/IP及modbus通讯,博图14以上可以打开,程序已在设备上运行相对稳定了,比较成熟的一款程序,包含plc程序以及威纶通hml程序,以及伺服说明,具体功能如下: 1,西门子1200控制4台步进电机; 2,西门子1200与4台MS300变频器modbus485轮询读写参数; 3,西门子1200与上位机TCP/IP通讯控制相机照,反馈数据; 4,设备为多工位联动控制; 5.程序包含基本很多通讯以及伺服控制,可以做成模板,直接调用,更适合新手学习,以及借鉴用的
TCP通讯这块和上位机玩的是自定义协议,用TSENDC和TRCVC这对黄金搭档。重点是要处理好粘包问题,这里在接收回调里搞了个环形缓冲区:
// 接收数据处理 IF LEN > 0 THEN FOR i := 0 TO LEN-1 DO Buffer[WrPtr] := DATA[i]; WrPtr := (WrPtr + 1) MOD 1024; END_FOR; END_IF;相机控制指令格式类似"SHOT,1,1024x768",用字符串分割函数提取参数。建议新手用ASCII码处理,比用STRING类型更省资源。
多工位联动的精髓在工艺控制OB里,这里用了个相位差算法。比如四个工位的运动曲线:
FOR i := 0 TO 3 DO Axis[i].SetPosition := SIN(2*PI*(SysTime/Period + i*0.25)); END_FOR;这种波形叠加实现起来简单,修改Period参数就能调整整机节奏,比用凸轮表更灵活。
模板设计方面,把常用的功能都封装成了全局库:
- 通讯处理:自动重连机制+心跳包
- 运动控制:带加减速的S曲线算法
- 报警管理:8级报警分级处理
- 配方管理:CSV格式导入导出
新手直接调用这些块,比自己从头撸代码至少省三天工时。比如伺服使能用一个背景DB搞定所有轴:
// 伺服使能统一处理 IF NOT Axis_Group.Enabled THEN FOR i := 0 TO 3 DO Axis[i].Enable := FALSE; END_FOR; ELSE // 逐个轴处理使能状态... END_IF;这套框架在六个不同项目里验证过,跑个把月不出问题是基本操作。特别适合需要快速交付的场合,改改IO配置就能上新项目。