核心内容摘要
C++保留几位小数
西门子1200博途程序与威纶触摸屏画面实例 博图版本V15及以上内容涉及上位机通讯modbus485伺服等。
具体有 1西门子1200控制4台步进电机 2西门子1200与4台MS300变频器modbus485轮询读写参数 3西门子1200与上位机TCP/IP通讯控制相机拍照反馈数据 4设备为多工位联动控制。
在自动化产线中多工位设备联调是个技术活最近用S
威纶通触摸屏做了个四工位打标机正好把踩过的坑和实现方案分享给大家。
这个项目用到了Modbus轮询、以太网通信和运动控制咱们边撸代码边聊实战细节。
步进电机四轴协同控制直接上硬核的轴配置代码// 轴使能 MC_Power(Enable:TRUE, Axis:Axis_1, Status#Status_
; MC_Power(Enable:TRUE, Axis:Axis_2, Status#Status_
; // 相对定位 MC_MoveRelative( Positions:
5
0, Velocity:
3
0, Axis:Axis_1, Execute:#StartMove);这里有个骚操作四个轴必须用MC_SyncMove做同步启动否则工位会出现累积误差。
注意DB块里每个轴要单独分配背景数据块我第一次调试时四个轴全动不起来就是DB块地址冲突了。
Modbus485轮询四台变频器Modbus主站轮询最麻烦的是时序控制来看我的轮询逻辑// 轮询状态机 CASE #modbus_state OF 0: // 读取1号变频器频率 MB_MASTER(REQ:TRUE, MB_ADDR:1, MODE:0, DATA_ADDR:40001, DATA_LEN:
; #modbus_state : 10; 10: IF #MB_DONE THEN #Frequency[0] : MW100; // 数据存放在MW100 #modbus_state : 1; END_IF; 1: // 写入2号变频器目标频率 MB_MASTER(REQ:TRUE, MB_ADDR:2, MODE:1, DATA_ADDR:40002, DATA_LEN:
; #modbus_state : 11; 11: IF #MB_DONE THEN #modbus_state : 2; END_IF; // ...后续从站处理关键点每个从站操作后必须插入50ms延时用TON定时器实现否则会出现报文粘连。
实测MS300变频器的响应时间约35ms别把轮询周期设得太紧。
西门子1200博途程序与威纶触摸屏画面实例 博图版本V15及以上内容涉及上位机通讯modbus485伺服等。
具体有 1西门子1200控制4台步进电机 2西门子1200与4台MS300变频器modbus485轮询读写参数 3西门子1200与上位机TCP/IP通讯控制相机拍照反馈数据 4设备为多工位联动控制。
上位机拍照控制TCP/IP通信这里有个坑1200的TSEND_C最多只能建立4个连接我们这里要同时连接相机和MES系统得做好连接管理// 建立TCP连接 TCON(REQ:#Connect_Request, ID:1, CONNECT:DB_Camera_Conn); // 发送拍照指令 TSEND(REQ:#Camera_Trigger, ID:1, DATA:P#DB_Camera.SendBuffer, LEN:
; // 接收图像数据 TRCV(EN_R:TRUE, ID:1, DATA:P#DB_Camera.RecvBuffer, LEN:
;注意数据块要设置为非优化访问否则上位机解析会错位。
实测发现每次发送前需要用MOVE指令更新发送区数据直接操作DB块指针有时会丢包。
多工位联动核心是采用状态矩阵法每个工位独立状态机// 工位状态机 FOR #i : 0 TO 3 DO CASE #Station_State[#i] OF 0: // 待机 IF #Start_Signal THEN #Station_State[#i] : 1; END_IF; 1: // 物料到位 IF #Sensor[#i] THEN StartMotor(#i); #Station_State[#i] : 2; END_IF; 2: // 加工中 IF #Motor_Done[#i] THEN TriggerCamera(#i); #Station_State[#i] : 3; END_IF; END_CASE; END_FOR;重点各工位状态变量必须用ARRAY存储单独用不同变量会导致扫描周期不同步。
联动时通过ANYTOJSON函数将状态打包上传给MES系统这比传统的数据映射方式更灵活。
最后在威纶通画面上做了个骚操作用宏指令实现设备运行状态的伪3D效果把四个工位的动画层叠加显示。
其实HMI开发比PLC编程更费时间特别是要做报警履历的时候...此处省略被甲方逼着改界面布局的800字吐槽