Skip to content

v0.5.3

Choose a tag to compare

@sergiogallegos sergiogallegos released this 09 Sep 02:33
· 64 commits to main since this release

🎉 Release v0.5.3 - Critical Bug Fixes

Release Date: January 15, 2025
Type: Bug Fix Release


🐛 Critical Issues Resolved

This release addresses critical issues reported by contributors where tag discovery and reading functionality was not working properly across different PLC types.

Issues Fixed:

Tag Discovery Failure

  • Problem: discover_tags() was returning empty results
  • Root Cause: Incorrect CIP service and response format
  • Solution: Updated to use proper GET_INSTANCE_ATTRIBUTE_LIST service with correct path structure

Program Tag Reading Failure

  • Problem: Reading tags like Program:LS18_Rewind.CoreDiamMin failed with "Path segment error"
  • Root Cause: Incorrect tag path building for program-scoped tags
  • Solution: Added proper program tag path splitting and segment building

Response Parsing Issues

  • Problem: Tag list response parsing was using wrong format
  • Root Cause: Expected simple format but actual response uses attribute list format
  • Solution: Updated parser to handle [InstanceID(4)][NameLength(2)][Name][Type(2)] format

🔧 Technical Improvements

CIP Protocol Enhancements

  • Updated Tag List Requests: Now uses correct GET_INSTANCE_ATTRIBUTE_LIST service (0x55)
  • Fixed Response Parsing: Properly handles attribute list response format
  • Improved Tag Path Building: Correctly handles program prefixes (Program:ProgramName.TagName)
  • Enhanced Error Handling: Better debugging output for troubleshooting

Compatibility Improvements

  • Aligned with Node.js Implementation: Changes based on working reference implementation
  • Better PLC Compatibility: Works across various PLC manufacturers and models
  • Improved Error Messages: More descriptive error messages for debugging

📊 Testing & Validation

Comprehensive Testing

  • Unit Tests: All 17 unit tests passing
  • Integration Tests: 11 comprehensive tests passing
  • Documentation Tests: 11 doc tests passing
  • Code Quality: Clippy clean with 0 warnings
  • Build Verification: All targets compile successfully

🚀 Performance Characteristics

Optimized Operations

  • Tag Discovery: Now properly discovers and caches tag metadata
  • Program Tag Access: Efficient path building for program-scoped tags
  • Memory Usage: Improved memory management for tag operations
  • Error Recovery: Better error handling and recovery mechanisms

📦 Package Updates

Core Library

  • Rust Library: rust-ethernet-ip = "0.5.3"
  • Python Wrapper: rust_ethernet_ip = "0.5.3"
  • C# Wrapper: RustEtherNetIp = "0.5.3"

Example Applications

  • ✅ Updated Vue.js example to v0.5.3
  • ✅ Updated TypeScript example to v0.5.3
  • ✅ Updated Go backend example to v0.5.3
  • ✅ Updated all C# examples to v0.5.3

🔄 Migration Guide

For Existing Users

  1. Update Dependencies: Update to v0.5.3 for improved stability

    [dependencies]
    rust-ethernet-ip = "0.5.3"
  2. Tag Discovery: Now works correctly across all PLC types

    let mut client = EipClient::connect("192.168.1.100:44818").await?;
    client.discover_tags().await?; // Now works properly!
  3. Program Tags: Can now read program-scoped tags

    let value = client.read_tag("Program:MainProgram.MyTag").await?;

Breaking Changes

  • None: This is a bug fix release with no breaking changes

🐛 Bug Reports Resolved

Contributor Issues Fixed

  • Issue: Tag discovery returning empty results
  • Issue: Program tag reading failing with path segment errors
  • Issue: Inconsistent behavior across different PLC types

Root Cause Analysis

  • CIP Protocol: Incorrect service usage and response parsing
  • Path Building: Missing program tag handling logic
  • Compatibility: Not aligned with standard EtherNet/IP implementations

📈 Quality Metrics

Code Quality

  • Clippy: 0 warnings
  • Tests: 100% pass rate
  • Documentation: Complete and up-to-date
  • Examples: All updated and tested

Compatibility

  • PLC Support: Enhanced compatibility across manufacturers
  • Protocol Compliance: Better adherence to EtherNet/IP standards
  • Cross-Platform: Works on Windows, Linux, macOS

🎯 Next Steps

Immediate Actions

  1. Update Dependencies: Upgrade to v0.5.3 immediately
  2. Test Tag Discovery: Verify tag discovery works with your PLCs
  3. Test Program Tags: Verify program tag reading functionality

Future Improvements

  • Enhanced UDT (User Defined Type) support
  • Improved batch operation performance
  • Additional PLC manufacturer support

📞 Support & Feedback

Getting Help

Contributing

  • Pull Requests: Welcome and appreciated
  • Bug Reports: Help us improve the library
  • Feature Requests: Let us know what you need

🙏 Acknowledgments

Special thanks to the contributors who reported these issues and provided detailed debugging information. Your feedback helps make this library better for everyone!


📋 Full Changelog

Full Changelog: v0.5.2...v0.5.3


�� Quick Links