springboot?通過博途獲取plc點(diǎn)位的數(shù)據(jù)代碼實(shí)現(xiàn)
springboot 通過博途獲取plc點(diǎn)位的數(shù)據(jù)
1.maven依賴
<dependency>
<groupId>com.github.dathlin</groupId>
<artifactId>HslCommunication</artifactId>
<version>3.6.0</version>
</dependency>這個(gè)版本盡量是新版本,不然有的返回的值對(duì)應(yīng)的類型不存在
2.代碼實(shí)現(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查詢對(duì)應(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());
}因?yàn)樾枨螅珼BW是整型,DBD是浮點(diǎn)數(shù),DBX是布爾值DBW/D/X后面對(duì)應(yīng)的是偏移量,
3. 測(cè)試方法
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("錯(cuò)誤信息:"+operateResultExOne.ErrorCode + "=====" + operateResultExOne.Message);
}*/
}(short)對(duì)應(yīng)的值是獲取幾位,因?yàn)樾枨?,沒辦法一起獲取,所以我是單個(gè)獲取的

到此這篇關(guān)于springboot 通過博途獲取plc點(diǎn)位的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)springboot 獲取plc點(diǎn)位數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
Java實(shí)現(xiàn)迷你圖書管理系統(tǒng)案例全程
簡(jiǎn)單談?wù)刯ava中final,finally,finalize的區(qū)別
Java組件commons fileupload實(shí)現(xiàn)文件上傳功能
springboot啟動(dòng)后卡住無日志的幾種情況小結(jié)
Java基礎(chǔ)之ArrayList的擴(kuò)容機(jī)制
Java設(shè)計(jì)模式之狀態(tài)模式State Pattern詳解

