Вы можете попробовать использовать ознакомительную версию ProSys OPC Java SDK. Это довольно простой SDK, который предоставляет вам руководство по созданию сервера и клиента с нуля. Ниже приведен код того, как просто создать сервер без адресного пространства:
private String APPNAME = "yourappname";
private String SERVER = "nameoftheserver";
private int PORT = 52000; #choose whatever
public void CreateOPCUAserver() {
server = new UaServer();
final PkiFileBasedCertificateValidator validator = new PkiFileBasedCertificateValidator();
server.setCertificateValidator(validator);
validator.setValidationListener(validationListener);
ApplicationDescription appDescription = new ApplicationDescription();
appDescription.setApplicationName(new LocalizedText(APPNAME, Locale.ENGLISH));
appDescription.setApplicationUri("urn:localhost:UA:"+SERVER);
appDescription.setProductUri("urn:snorre.com:UA:"+SERVER);
appDescription.setApplicationType(ApplicationType.Server);
try {
server.setPort(PORT);
server.setUseLocalhost(true);
server.setUseAllIpAddresses(true);
server.setServerName("OPCUA/"+APPNAME);
final ApplicationIdentity identity = ApplicationIdentity.loadOrCreateCertificate(appDescription, "NTNU",
/* Private Key Password */"opcua",
/* Key File Path */new File(validator.getBaseDir(), "private"),
/* Enable renewing the certificate */true,
/* Additional host names for the certificate */server.getHostNames());
server.setApplicationIdentity(identity);
server.setSecurityModes(SecurityMode.ALL);
server.addUserTokenPolicy(UserTokenPolicy.ANONYMOUS);
server.addUserTokenPolicy(UserTokenPolicy.SECURE_USERNAME_PASSWORD);
server.addUserTokenPolicy(UserTokenPolicy.SECURE_CERTIFICATE);
server.init();
String endpoint = String.format("opc.tcp://%s:%s/OPCUA/%s","localhost", PORT, APPNAME);
server.addEndpoint(endpoint, SecurityMode.NONE, UserTokenPolicy.ANONYMOUS);
server.start();
logger.info("*********important parameters for event transmission**********");
logger.info("Servername "+endpoint);
logger.info("Publishing interval: " + server.getSubscriptionManager().getMaxPublishingInterval());
logger.info("Retransmition queue size: " + server.getSubscriptionManager().getMaxRetransmissionQueueSize());
logger.info("Session timeout: " + server.getSessionManager().getMaxSessionTimeout());
logger.info(logger.getClass().getCanonicalName());
logger.info("****************************end ********************");
} catch (UaServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecureIdentityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Вы также должны создать прослушиватель проверки, что довольно просто. Просто чтобы заставить его работать
public class MyCertificateValidationListener implements CertificateValidationListener {
@Override
public ValidationResult onValidate(Cert certificate, ApplicationDescription applicationDescription, EnumSet<CertificateCheck> passedChecks) {
// Do not mind about URI...
if (passedChecks.containsAll(EnumSet.of(CertificateCheck.Trusted, CertificateCheck.Validity, CertificateCheck.Signature))) {
if (!passedChecks.contains(CertificateCheck.Uri)) {
try {
System.out.println("Client's ApplicationURI (" + applicationDescription.getApplicationUri() + ") does not match the one in certificate: " + PkiFileBasedCertificateValidator.getApplicationUriOfCertificate(certificate));
} catch (CertificateParsingException e) {
throw new RuntimeException(e);
}
}
return ValidationResult.AcceptPermanently;
}
return ValidationResult.Reject;
}
}
Это не имеет никакой аутентификации, но это поможет вам в пути. Теперь вы можете использовать бесплатную клиентскую программу для подключения к вашему серверу и просмотра. Вы увидите, что там есть несколько папок, но это потому, что сервер поставляется с этими папками изначально.
Теперь сервер запущен и работает, вам нужно создать AddresseSpace, а затем модель данных ПЛК, чтобы добавить ее к вашему текущему серверу. Затем эта модель данных имеет подключение к вашему ПЛК и его возможные методы, позволяя клиентам OPC-UA подключаться к вашему серверу на основе простого uri, такого как «opc.tcp://localhost:52000/OPCUA/servername» или http. Это вы запускаете его локально. В противном случае это должен быть IP на этом.
Когда клиенты затем просматривают это, они могут видеть переменные, методы, события, тревоги и т. Д., Которые вы создали в своей модели данных. И можно использовать методы и много разных классных вещей.
person
vonGohren
schedule
24.11.2013