OPC是接口协议,开放式通讯,通过OPC仪表和上位机数据库建立联系,软件实现,然后由于OPC是开放的,可以通过OPC同前台 *** 作建立连接,功能扩展很强。
MODBUS只是数字通讯的协议,可以用于手持终端,也可以通过MODBUS卡件建立DCS/PLC与现场仪表的通讯。相当于下位。
MODBUS把仪表数据读进系统,然后通过OPC在PC上实现控制/显示等功能。但具体的各家厂家都有自己的软件,最好还是问厂家了。
OPC和MODBUS不是一个概念,MODBUS是控制设备之间,或者设备与组态之间对话的一种对话协议。而OPC是组态的核心技术,是一种分布式技术手段,用于设备变量点的组织、数据收发、数据共享等。组态与设备通讯,既可以通过MODBUS协议,也可以是PPI等其他协议,而组态实时数据或历史数据,对其他系统共享,如OPC客户端,组态扩展系统等,通过OPC方式实现分布式系统中各节点的数据同步。
package comzsc;
import javautilArrayList;
import javautilDate;
import javautilList;
import combatterybeanCommunityExceptionRecord;
import comserotoninmodbus4jModbusFactory;
import comserotoninmodbus4jModbusMaster;
import comserotoninmodbus4jexceptionModbusInitException;
import comserotoninmodbus4jexceptionModbusTransportException;
import comserotoninmodbus4jipIpParameters;
import comserotoninmodbus4jmsgModbusRequest;
import comserotoninmodbus4jmsgModbusResponse;
import comserotoninmodbus4jmsgReadHoldingRegistersRequest;
import comserotoninmodbus4jmsgWriteRegistersRequest;
import comserotoninmodbus4jmsgWriteRegistersResponse;
import comserotoninutilqueueByteQueue;
public class ReadAWriteUtil {
public static void modbusWTCP(String ip, int port, int slaveId, int start, short[] values) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
paramssetHost(ip);
if (502 != port) {
paramssetPort(port);
}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
//
参数
1
:
IP
和端口信息参数
2
:保持连接激活
tcpMaster = modbusFactorycreateTcpMaster(params, true);
try {
tcpMasterinit();
Systemoutprintln("===============" + 1111111);
} catch (ModbusInitException e) {
// Systemoutprintln("11111111111111=="+"
此处出现问题了啊
!");
//
如果出现了通信异常信息,则保存到数据库中
CommunityExceptionRecord cer = new CommunityExceptionRecord();
cersetDate(new Date());
cersetIp(ip);
// cersetRemark(bgName+"
出现连接异常
");
// batteryGroupRecordServicesaveCommunityException(cer);
}
try {
WriteRegistersRequest
request
=
new
WriteRegistersRequest(slaveId,
start,
values);
WriteRegistersResponse
response
=
(WriteRegistersResponse)
tcpMastersend(request);
if (responseisException())
Systemoutprintln("Exception
response:
message="
+
responsegetExceptionMessage());
else
Systemoutprintln("Success");
} catch (ModbusTransportException e) {
eprintStackTrace();
}
}
public static ByteQueue modbusTCP(String ip, int port, int start,int readLenth) {
ModbusFactory modbusFactory = new ModbusFactory();
//
设备
ModbusTCP
的
Ip
与端口,如果不设定端口则默认为
502
IpParameters params = new IpParameters();
paramssetHost(ip);
if(502!=port){paramssetPort(port);}//
设置端口,默认
502
ModbusMaster tcpMaster = null;
tcpMaster = modbusFactorycreateTcpMaster(params, true);
try {
tcpMasterinit();
Systemoutprintln("==============="+1111111);
} catch (ModbusInitException e) {
return null;
}
ModbusRequest modbusRequest=null;
try {
modbusRequest
=
new
ReadHoldingRegistersRequest(1,
start,
readLenth);//
功能码
03
} catch (ModbusTransportException e) {
eprintStackTrace();
}
ModbusResponse modbusResponse=null;
try {
modbusResponse = tcpMastersend(modbusRequest);
} catch (ModbusTransportException e) {
eprintStackTrace();
ByteQueue byteQueue= new ByteQueue(12);
modbusResponsewrite(byteQueue);
Systemoutprintln("
功能码
:"+modbusRequestgetFunctionCode());
Systemoutprintln("
从站地址
:"+modbusRequestgetSlaveId());
Systemoutprintln("
收到的响应信息大小
:"+byteQueuesize());
Systemoutprintln("
收到的响应信息值
:"+byteQueue);
return byteQueue;
}
}
以上就是关于工业监控里边OPC和MODBUS怎么运用全部的内容,包括:工业监控里边OPC和MODBUS怎么运用、opc和modbus的区别、java jamod实现modbus 如何读取浮点数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)