Java连接Plc实现数据传输/读取(最新教程)
Java连接Plc实现数据传输/读取
文章目录
- Java连接Plc实现数据传输/读取
- 一、引入HslCommunication依赖
- 二、创建Plc工具类
- 二、调用工具类读/写数据
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
()一、引入HslCommunication依赖
com.github.dathlin HslCommunication 3.4.0
注意:该依赖由胡工科技支持 点击跳转
二、创建Plc工具类
public class HslCommunicationWrite{ // PLC IP 端口 private static final String PLC_CLIENT_IP = "127.0.0.1"; private static final String PLC_CLIENT_PORT = "6666"; private MelsecMcNet melsec_net_shunt =createConnection(); // 打开连接 // 读数据 public synchronized int ReadPlcInt(String address){ return clientReadInt(address);// PLC操作 } // 写数据 public boolean SendPlcMsg(String address,int i){ return clientSendInt(address,i);// PLC操作 } // 获取PLC连接对象,并设置长连接 private MelsecMcNet createConnection() { lock.lock(); // 根据你使用的PLC型号选择适当的PLC类型 melsec_net_shunt = new MelsecMcNet(PLC_CLIENT_IP, Integer.parseInt(PLC_CLIENT_PORT)); melsec_net_shunt.SetPersistentConnection(); // 设置为长连接模式 return melsec_net_shunt; } // 关闭长连接 private void closeConnection() { melsec_net_shunt.ConnectClose(); } /** * 写入一个 int 类型的 * @param melsec_net_shunt PLC 连接对象 * @param address PLC 地址 * @param i 写入值 * @return 成功 true 失败 false */ private boolean clientSendInt(String address,int i){ try{ try { TimeUnit.MILLISECONDS.sleep(TIME_SLEEP); } catch (InterruptedException e) { throw new RuntimeException(e); } // 写入一个整数值 OperateResult writeResult = melsec_net_shunt.Write(address,i); if (writeResult.IsSuccess) { // 写入成功 return true; } else { // 写入失败 // 添加PLC连接失败日志 log.error(writeResult.Message); OperateResult connect = melsec_net_shunt.ConnectServer( ); if (!connect.IsSuccess) {//连接失败 closeConnection(); //关闭连接 createConnection();//打开连接 } return false; } }catch (Exception e){ throw new RuntimeException(e); } } /** * 读取PLC的某个地址 * @param melsec_net_shunt PLC 连接对象 * @param address PLC 地址 * @return 成功 true 失败 false */ private int clientReadInt(String address){ try { try { TimeUnit.MILLISECONDS.sleep(TIME_SLEEP); } catch (InterruptedException e) { throw new RuntimeException(e); } // 读取某个地址的信息 OperateResult readResult = melsec_net_shunt.ReadInt16(address); if (readResult.IsSuccess) { //是否成功 return (int) melsec_net_shunt.ReadInt16(address).Content; } else { // 添加PLC连接失败日志 log.error(readResult.Message); OperateResult connect = melsec_net_shunt.ConnectServer( ); if (!connect.IsSuccess) {//连接失败 closeConnection(); //关闭连接 createConnection();//打开连接 } } }catch (Exception e){ throw new RuntimeException(e); } return 5; } }
二、调用工具类读/写数据
//给PLC地址D3201写入1 hslCommunicationWrite.SendPlcMsg("D3201",1); //给PLC地址D3201.5写入1 hslCommunicationWrite.SendPlcMsg("D3201",(1
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!