OPC Console Command Application
Budget: €250 – €750 EUR
Mode Selection and Configuration
Flexible Mode Configuration: The application must support running as an OPC DA/UA to either an OPC UA or a Modbus TCP Slave bridge. The mode selection must be configurable through a text-based configuration file. The configuration file should specify:
Source Protocol: Either "OPC_DA" or "OPC_UA".
Target Protocol: Either "OPC_UA" or "MODBUS_TCP".
The configuration file should be easy to edit and contain parameters for all supported protocols, including security settings, server details, and data mapping.
OPC DA Client Functionality
Connection to OPC DA Server: Establish and maintain a connection to the specified OPC DA server using the provided ServerName and configuration parameters.
Item Subscription and Polling: Subscribe to or read OPC DA items at a configurable update rate. Allow stopping and starting data polling via console commands.
Status Display: Show the status of the OPC DA connection, including connection health and errors, in the console.
OPC UA Client and Server Functionality
OPC UA Source Mode:
Connect to an OPC UA server using the specified Endpoint, SecurityPolicy, UserName, and Password.
Support secure communication using different OPC UA security policies.
Read or subscribe to OPC UA items as defined in the configuration file.
OPC UA Target Mode:
Expose OPC items as nodes in an OPC UA server when configured to operate as an OPC UA target.
Provide secure connections with configurable security policies and user authentication.
Display the status of the OPC UA server, including connection information and data subscription status.
Modbus TCP Slave Functionality
Modbus Server Setup: Act as a Modbus TCP slave and map OPC item values to Modbus registers based on the configuration.
Protocol Support: Ensure compatibility with standard Modbus TCP, configurable IP address, port, and device ID.
Status and Error Reporting: Show the status of the Modbus TCP slave connection, including connected clients and any data transmission errors.
Tag Mapping and Data Handling
Flexible Tag Mapping: Define mappings in the configuration file to link OPC items to either OPC UA nodes or Modbus registers. Each OPC item should be mapped to a unique target node or register.
Real-Time Data Updates: Ensure real-time data synchronization from OPC items to the target (OPC UA or Modbus TCP) with minimal latency.
Polling Control: Provide options to start, stop, and reload polling from the configuration file through console commands.
Console Interface and Commands
User-Friendly Console: The console interface should display the current status of OPC connections, Modbus communication, errors, and general health of the application.
Interactive Commands:
Start/Stop Polling: Commands to manually start or stop data polling.
Reload Configuration: Reload the configuration file without restarting the application.
Show Data: Option to display the current value of specific OPC items.
Continuous Operation: The console application must remain running even if the data source (OPC DA/UA) or target (OPC UA/Modbus) is unavailable. The application should periodically attempt to reconnect to unavailable sources or targets.
Watchdog Mechanism for Reliability
Application Watchdog: Implement a watchdog mechanism to monitor the application’s health. If the application crashes or stops unexpectedly, the watchdog must automatically restart it.
Automatic Recovery: Ensure that the application can recover gracefully from unexpected terminations and resume normal operations using the last known configuration.
Log Watchdog Events: Log all events related to the watchdog, including application crashes and restarts.
Licensing Mechanism
License Check: The application must check for a valid license file. If no valid license file is present, the application will operate for a maximum of 2 hours and then terminate.
Console License Display: Show the license status and the remaining runtime (if applicable) in the console.
License Key Customization: The developer must provide source code that allows easy customization of the license key for different clients.
Error Handling and Logging
Comprehensive Error Handling: Implement robust error handling to manage connection losses, data mismatches, and other failures.
Event Logging:
Maintain a log file that records all important events, such as:
Connection Events: Times when connections are established or lost (for OPC DA/UA and Modbus).
Errors: Detailed descriptions of any errors encountered, including timestamps.
Configuration Changes: Records when the configuration file is reloaded or when polling is started/stopped.
Application Status: Periodic updates on the health and performance of the application.
Log File Details:
The log file should be in a readable text format, with each entry including a timestamp and a description of the event.
The console should provide basic feedback about recent log entries, especially error messages.
Graceful Degradation: If data sources or targets are unavailable, the application should continue running and provide periodic status updates while attempting to reconnect.
Performance Optimization
Lightweight and Efficient: The application must be designed to consume minimal system resources, ensuring smooth operation on all supported Windows versions from Windows 2000 to Windows 11.
Automatic Reconnection: Implement automatic reconnection logic for OPC and Modbus communication in case of temporary network failures.
Security Considerations
OPC UA Security: Ensure secure communication using configurable security settings, including encryption and authentication.
Data Protection: Protect sensitive information (e.g., passwords) by implementing secure storage and transmission methods.
Compatibility and Portability
Operating System Compatibility: The application must run on all major Windows versions:
Windows 2000, XP, Vista, 7, 8, 8.1, 10, and 11 (both 32-bit and 64-bit versions).
Ensure backward compatibility for legacy systems without sacrificing performance on modern platforms.
Portability:
Single Executable: The application must be a standalone executable, requiring no additional dependencies or installations. It should be easily portable and runnable on any Windows system without needing complex setup procedures.
Minimal Resource Usage: Optimize the application to have a small memory and CPU footprint, making it suitable for use on older or resource-constrained systems.
Development Framework:
The application must be developed using cross-platform frameworks like Lazarus, Delphi, Builder, or QT to ensure broad compatibility and ease of maintenance.
Portable Codebase: The source code must be organized and documented for easy compilation and deployment on various Windows environments.
Flexible Mode Configuration: The application must support running as an OPC DA/UA to either an OPC UA or a Modbus TCP Slave bridge. The mode selection must be configurable through a text-based configuration file. The configuration file should specify:
Source Protocol: Either "OPC_DA" or "OPC_UA".
Target Protocol: Either "OPC_UA" or "MODBUS_TCP".
The configuration file should be easy to edit and contain parameters for all supported protocols, including security settings, server details, and data mapping.
OPC DA Client Functionality
Connection to OPC DA Server: Establish and maintain a connection to the specified OPC DA server using the provided ServerName and configuration parameters.
Item Subscription and Polling: Subscribe to or read OPC DA items at a configurable update rate. Allow stopping and starting data polling via console commands.
Status Display: Show the status of the OPC DA connection, including connection health and errors, in the console.
OPC UA Client and Server Functionality
OPC UA Source Mode:
Connect to an OPC UA server using the specified Endpoint, SecurityPolicy, UserName, and Password.
Support secure communication using different OPC UA security policies.
Read or subscribe to OPC UA items as defined in the configuration file.
OPC UA Target Mode:
Expose OPC items as nodes in an OPC UA server when configured to operate as an OPC UA target.
Provide secure connections with configurable security policies and user authentication.
Display the status of the OPC UA server, including connection information and data subscription status.
Modbus TCP Slave Functionality
Modbus Server Setup: Act as a Modbus TCP slave and map OPC item values to Modbus registers based on the configuration.
Protocol Support: Ensure compatibility with standard Modbus TCP, configurable IP address, port, and device ID.
Status and Error Reporting: Show the status of the Modbus TCP slave connection, including connected clients and any data transmission errors.
Tag Mapping and Data Handling
Flexible Tag Mapping: Define mappings in the configuration file to link OPC items to either OPC UA nodes or Modbus registers. Each OPC item should be mapped to a unique target node or register.
Real-Time Data Updates: Ensure real-time data synchronization from OPC items to the target (OPC UA or Modbus TCP) with minimal latency.
Polling Control: Provide options to start, stop, and reload polling from the configuration file through console commands.
Console Interface and Commands
User-Friendly Console: The console interface should display the current status of OPC connections, Modbus communication, errors, and general health of the application.
Interactive Commands:
Start/Stop Polling: Commands to manually start or stop data polling.
Reload Configuration: Reload the configuration file without restarting the application.
Show Data: Option to display the current value of specific OPC items.
Continuous Operation: The console application must remain running even if the data source (OPC DA/UA) or target (OPC UA/Modbus) is unavailable. The application should periodically attempt to reconnect to unavailable sources or targets.
Watchdog Mechanism for Reliability
Application Watchdog: Implement a watchdog mechanism to monitor the application’s health. If the application crashes or stops unexpectedly, the watchdog must automatically restart it.
Automatic Recovery: Ensure that the application can recover gracefully from unexpected terminations and resume normal operations using the last known configuration.
Log Watchdog Events: Log all events related to the watchdog, including application crashes and restarts.
Licensing Mechanism
License Check: The application must check for a valid license file. If no valid license file is present, the application will operate for a maximum of 2 hours and then terminate.
Console License Display: Show the license status and the remaining runtime (if applicable) in the console.
License Key Customization: The developer must provide source code that allows easy customization of the license key for different clients.
Error Handling and Logging
Comprehensive Error Handling: Implement robust error handling to manage connection losses, data mismatches, and other failures.
Event Logging:
Maintain a log file that records all important events, such as:
Connection Events: Times when connections are established or lost (for OPC DA/UA and Modbus).
Errors: Detailed descriptions of any errors encountered, including timestamps.
Configuration Changes: Records when the configuration file is reloaded or when polling is started/stopped.
Application Status: Periodic updates on the health and performance of the application.
Log File Details:
The log file should be in a readable text format, with each entry including a timestamp and a description of the event.
The console should provide basic feedback about recent log entries, especially error messages.
Graceful Degradation: If data sources or targets are unavailable, the application should continue running and provide periodic status updates while attempting to reconnect.
Performance Optimization
Lightweight and Efficient: The application must be designed to consume minimal system resources, ensuring smooth operation on all supported Windows versions from Windows 2000 to Windows 11.
Automatic Reconnection: Implement automatic reconnection logic for OPC and Modbus communication in case of temporary network failures.
Security Considerations
OPC UA Security: Ensure secure communication using configurable security settings, including encryption and authentication.
Data Protection: Protect sensitive information (e.g., passwords) by implementing secure storage and transmission methods.
Compatibility and Portability
Operating System Compatibility: The application must run on all major Windows versions:
Windows 2000, XP, Vista, 7, 8, 8.1, 10, and 11 (both 32-bit and 64-bit versions).
Ensure backward compatibility for legacy systems without sacrificing performance on modern platforms.
Portability:
Single Executable: The application must be a standalone executable, requiring no additional dependencies or installations. It should be easily portable and runnable on any Windows system without needing complex setup procedures.
Minimal Resource Usage: Optimize the application to have a small memory and CPU footprint, making it suitable for use on older or resource-constrained systems.
Development Framework:
The application must be developed using cross-platform frameworks like Lazarus, Delphi, Builder, or QT to ensure broad compatibility and ease of maintenance.
Portable Codebase: The source code must be organized and documented for easy compilation and deployment on various Windows environments.