springboot?通過博途獲取plc點位的數(shù)據(jù)代碼實現(xiàn)
springboot 通過博途獲取plc點位的數(shù)據(jù)
1.maven依賴
<dependency> <groupId>com.github.dathlin</groupId> <artifactId>HslCommunication</artifactId> <version>3.6.0</version> </dependency>
這個版本盡量是新版本,不然有的返回的值對應(yīng)的類型不存在
2.代碼實現(xiàn)
public void sendHttpRequest() { System.out.println("==================================執(zhí)行命令==================================" + System.currentTimeMillis()); List<SysPlcIpEntity> ipList = plcIpDao.getIpList(); if (ipList != null && ipList.size() > 0) { for (SysPlcIpEntity plcIp:ipList) { SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, plcIp.getIpAddress()); siemensS7Net.SetPersistentConnection( ); // 根據(jù)ip查詢對應(yīng)的命令 List<SysPlcMlEntity> plcMlList = plcMlDao.getListByIpId(plcIp.getId()); if (plcMlList != null && plcMlList.size() > 0) { for (int i = 0; i < plcMlList.size(); i++) { if (plcMlList.get(i).getMlContent().contains("DBW")) { OperateResultExOne<Short> dbwVal = siemensS7Net.ReadInt16(plcMlList.get(i).getMlContent()); if (dbwVal.IsSuccess){ plcMlList.get(i).setMlValue(String.valueOf(dbwVal.Content)); } } else if (plcMlList.get(i).getMlContent().contains("DBD")){ OperateResultExOne<Float> dbdVal = siemensS7Net.ReadFloat(plcMlList.get(i).getMlContent()); if (dbdVal.IsSuccess) { plcMlList.get(i).setMlValue(String.valueOf(dbdVal.Content)); } } else if (plcMlList.get(i).getMlContent().contains("DBX")) { OperateResultExOne<Boolean> dbxVal = siemensS7Net.ReadBool(plcMlList.get(i).getMlContent()); if (dbxVal.IsSuccess) { plcMlList.get(i).setMlValue(String.valueOf(dbxVal.Content)); } } } plcMlDao.batchUpdateMlList(plcMlList); } } } System.out.println("==================================結(jié)束命令==================================" + System.currentTimeMillis()); }
因為需求,DBW是整型,DBD是浮點數(shù),DBX是布爾值DBW/D/X后面對應(yīng)的是偏移量,
3. 測試方法
public static void main(String[] args) { // DB5.DBX8.5 SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, "192.168.1.105"); siemensS7Net.SetPersistentConnection( ); //DBD OperateResultExOne<float[]> read = siemensS7Net.ReadFloat( "DB3.DBD10", (short) 4); if (read.IsSuccess) { for (float f: read.Content) { System.out.println("dbd:" + f); } } //DBW Short content = siemensS7Net.ReadInt16("DB3.DBW0").Content; System.out.println("content" + content); OperateResultExOne<Short> long_array = siemensS7Net.ReadInt16("DB3.DBW0"); if (long_array.IsSuccess){ System.out.println("dbw:" + long_array.Content); } // DBX /* OperateResultExOne<boolean[]> operateResultExOne = siemensS7Net.ReadBool("DB5.0.1", (short) 4); if (operateResultExOne.IsSuccess) { for (Boolean boo:operateResultExOne.Content) { System.out.println("------------"+boo); } } else { System.out.println("錯誤信息:"+operateResultExOne.ErrorCode + "=====" + operateResultExOne.Message); }*/ }
(short)對應(yīng)的值是獲取幾位,因為需求,沒辦法一起獲取,所以我是單個獲取的
到此這篇關(guān)于springboot 通過博途獲取plc點位的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)springboot 獲取plc點位數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

Java實現(xiàn)迷你圖書管理系統(tǒng)案例全程

簡單談?wù)刯ava中final,finally,finalize的區(qū)別

Java組件commons fileupload實現(xiàn)文件上傳功能

springboot啟動后卡住無日志的幾種情況小結(jié)

Java設(shè)計模式之狀態(tài)模式State Pattern詳解