| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.mes.ui;
- import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
- import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- /**
- * PLC 焊接参数定时读取测试。
- *
- * 每 3 秒读取一次 A/B 工位的焊接参数(电压、电流、送丝速度、job号)并打印到控制台。
- *
- * 焊接参数点位(参考 PlcUtil.getParamDyDl):
- * A 面:电压 DB1010.2 (Float32)、电流 DB1010.8 (Float32)、送丝速度 DB1010.14 (Float32)、job号 DB1010.20 (Int16)
- * B 面:电压 DB1010.26 (Float32)、电流 DB1010.34 (Float32)、送丝速度 DB1010.42 (Float32)、job号 DB1010.48 (Int16)
- *
- * 运行:直接运行 main 方法即可,按 Ctrl+C 退出。
- */
- public class PlcParamReadTest {
- /** PLC IP 地址(与 MesClient.s7PLC 一致) */
- private static final String PLC_IP = "192.168.7.100";
- /** 定时周期(秒) */
- private static final long PERIOD_SECONDS = 3;
- private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- public static void main(String[] args) {
- S7PLC s7PLC = new S7PLC(EPlcType.S1200, PLC_IP);
- s7PLC.setConnectTimeout(1000);
- s7PLC.setReceiveTimeout(1000);
- ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
- scheduler.scheduleAtFixedRate(() -> readOnce(s7PLC), 0, PERIOD_SECONDS, TimeUnit.SECONDS);
- // JVM 退出时关闭调度器
- Runtime.getRuntime().addShutdownHook(new Thread(scheduler::shutdownNow));
- }
- private static void readOnce(S7PLC s7PLC) {
- String now = SDF.format(new Date());
- try {
- // A 工位
- Float dya = s7PLC.readFloat32("DB1010.2"); // 电压
- Float dla = s7PLC.readFloat32("DB1010.8"); // 电流
- Float ssa = s7PLC.readFloat32("DB1010.14"); // 送丝速度
- Short joba = s7PLC.readInt16("DB1010.20"); // job号
- // B 工位
- Float dyb = s7PLC.readFloat32("DB1010.26"); // 电压
- Float dlb = s7PLC.readFloat32("DB1010.34"); // 电流
- Float ssb = s7PLC.readFloat32("DB1010.42"); // 送丝速度
- Short jobb = s7PLC.readInt16("DB1010.48"); // job号
- System.out.println("[" + now + "] A面 -> 电压=" + dya + " V, 电流=" + dla + " A, 送丝速度=" + ssa + ", job=" + joba);
- System.out.println("[" + now + "] B面 -> 电压=" + dyb + " V, 电流=" + dlb + " A, 送丝速度=" + ssb + ", job=" + jobb);
- } catch (Exception e) {
- System.err.println("[" + now + "] 读取PLC焊接参数失败: " + e.getMessage());
- }
- }
- }
|