no message

main
HUOJIN\92525 2024-04-12 18:02:58 +08:00
parent a74b651dce
commit b129e0f404
2 changed files with 142 additions and 6 deletions

View File

@ -90,6 +90,7 @@
<version>0.1.55</version> <version>0.1.55</version>
</dependency> </dependency>
<!-- 获取系统信息 --> <!-- 获取系统信息 -->
<dependency> <dependency>
<groupId>com.github.oshi</groupId> <groupId>com.github.oshi</groupId>
@ -126,8 +127,11 @@
<version>4.1.42.Final</version> <version>4.1.42.Final</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.s7connector</groupId>
<artifactId>s7connector</artifactId>
<version>2.1</version>
</dependency>
</dependencies> </dependencies>

View File

@ -0,0 +1,132 @@
package com.youchain.utils;
import com.github.s7connector.api.DaveArea;
import com.github.s7connector.api.S7Connector;
import com.github.s7connector.api.factory.S7ConnectorFactory;
import com.github.s7connector.impl.serializer.converter.StringConverter;
import com.sun.mail.iap.ConnectionException;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.nio.ByteBuffer;
/**
* S7西PLC
*
* @author <NAME>
* @date 2024/04/12
*/
@Slf4j
public class S7ConnectorUtils {
public S7Connector connect() {
S7Connector s7Connector = null;
try {
s7Connector = S7ConnectorFactory
.buildTCPConnector()
.withHost("192.168.0.21")//设置PLC的IP地址
.withPort(102)//设置PLC的端口号
.withTimeout(10000)//设置连接超时时间
.withRack(0)//设置PLC的机架号
.withSlot(2)//设置PLC的插槽号
.build();
return s7Connector;
} catch (Exception e) {
return null;
}
}
/**
* PLC
*
*
* @param connector
*/
public void readMo(S7Connector connector) {
if (connector == null) {
throw new RuntimeException("PLC连接失败请检查!");
}
long startTime = System.currentTimeMillis();
/**
*
* DB
* 100
* 500
* 0
*/
byte[] PlcData = connector.read(DaveArea.DB, 100, 500, 0);
long endTime = System.currentTimeMillis();
log.info("读取耗时:" + (endTime - startTime) + "ms");
String str1 = "";
StringConverter converter = new StringConverter();
String extract1 = converter.extract(str1.getClass(), PlcData, 0, 0);
log.info("内置方法转换str=" + extract1);
try {
connector.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* PLC
*
*
* @param connector
*/
public Integer readStock(S7Connector connector) throws IOException {
Integer status = null;
try {
if (connector == null) {
throw new IllegalArgumentException("PLC连接失败请检查!");
}
long startTime = System.currentTimeMillis();
/**
*
* DB
* 100
* 1
* 0
*/
byte[] PlcData = connector.read(DaveArea.DB, 100, 1, 24);
long endTime = System.currentTimeMillis();
log.info("读取耗时:" + (endTime - startTime) + "ms");
Integer stock = null;
StringConverter converter = new StringConverter();
status = converter.extract(stock.getClass(), PlcData, 0, 0);
} catch (Exception e) {
throw new IOException("读取PLC数据异常", e);
} finally {
connector.close();
}
return status;
}
/**
* PLC
*
* @param connector
* @param instruct ;PLC120PLC
*/
public void write(S7Connector connector, Integer instruct) {
long startTime = System.currentTimeMillis();
ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES);
buffer.putInt(instruct);
byte[] bytes = buffer.array();
connector.write(DaveArea.DB, 100, 22, bytes);
long endTime = System.currentTimeMillis();
System.out.println((endTime - startTime) + "ms");
System.out.print("写入成功");
}
}