IsoAgLib Documentation
2.1.2
| Section Overview |
| The following parts are described in this section:
|

ISOBUS overview
ISO
AgLib provides a free portable C++ source library for development of
ISO 11783 (ISOBUS) applications. The purpose of ISO 11783 is to provide an open interconnected system for on-board electronic systems. It is intended to enable electronic units to communicate with each other providing a standardized system. ISO 11783 consists of 13 parts which specify a communications system for agricultural equipment based on the CAN 2.0 B [1] protocol.
ISOAgLib is mainly developed on LINUX. The actual target device is typically an embedded system. There also exist some Win32 specific adaptations, as well.
To learn more about ISO
AgLib you can check the navigation menu for further topics or use one of the following links:
- (For more detailed information, please advise Changelog of IsoAgLib)
- Several important(!) bugfixes (including crashes, possible startup-problems)
- Several cleanups (most important: moved "comm/Scheduler" to "scheduler")
- DeviceDescription-Bytestream fix in proc2iso, Property Value was corrupt.
- Added basic FDIS FileServer-Client support (not yet IS)
- Added support for Tractor Facilities.
- Added WinCE-Support.
- External references hooked to fix-revision numbers now.
- Support for VT-Design Project-files
- IsoTerminalObjectSelection.inc was renamed to <projectname>-objectselection.inc
- More options for vt2iso: -o (other output-dir) and -g (group into namespace)
- remove "_" in following attribute values for better naming scheme: valid_characters, invalid_characters, no_fill, not_used, suppress_border, transparent_background, no_border
- can_server uses /tmp/can_server_key_dir if /root no accessable
- VT-Client: Fix Big Endian issue with setting float values, Add client command ESC, Fix VT-Client Scheduler timing, etc.
- Maintain-Power handling does now handle multiple power requests.
- overall enhancement of documentation (e.g. Tasking Compiler)
- remove obsolete #defines like CONFIG_CAN_STD_LOAD_REC_BUF_SIZE_MIN
- add documentation on usage of TC-Client (proc2iso, Device Description)
- add documentation about firmware size reduction with selective inclusion of VT-Client features - based on used pool definition
- replace symlinks to update_makefile.sh with short shell scripts, which call update_makefile.sh directly, so that this works also in Win32 with MSYS
- fix Broadcasted Transport Protocol PGN
- cleanup documentation of tutorial examples
- add Win32 EXE files for CAN server, vt2iso and proc2iso
- add new tutorial 2_11_TaskcontrollerClientVirtualTerminalClient which presents ECU with parallel support of TC-Client and VT-Client
- CAN HAL has its own central message FIFO implementation, to get better load balancing, more efficient processing and easier reconfiguration after addition or deletion of FilterBox_c instances and message processing in order as received. The amount of dedicated memory for BIOS specific CAN queues can be reduced, as the message queue for received message is now maintained by IsoAgLib (as normal memory - not in HEAP).
- PC can_server port vor Windows available (socket communication which can also be used under Linux)
- cleanup of all Windows CAN driver connection modules based on common can_server and small device specific connector modules
- fixed Working-Set-Master announce (TC client/server communication)
- Network Management rewritten (better handling of source address change and conflict)
- improved IsoAgLib scheduler
- enhanced application integration:
- in IsoAgLib thread scope: application can register individual scheduler clients for periodic activities with well definied timing
- in separate thread scope: central mutex, to allow safe access to ISOAgLib functions (no Scheduler_c::timeEvent() triggered internal activities of ISOAgLib are running)
- naming scheme of variables changed (member variables and function parameters)
- directory structure reordered:
- subdirectories naming follows the ISO standard (e.g. "Part7_ProcessData")
- svn checkout of separate parts possible (e.g. only library sources and managed BIOS files without examples)
- more user friendly layout and structure of html documentation pages
- automatic exclusion of unneeded VT-Client modules from compilation based on mask contents - More details at Reduction of VT-Client code dependent on mask contents
- remove any multiple inheritance, so that compilers like IAR, which support only single inheritance can process IsoAgLib - this should also simplify resolving of virtual functions, as only one inheritance path of vtables has to be analyzed
For previous changes see the IsoAgLib news archive or view the complete Changelog of IsoAgLib.
The ISO
AgLib provides the following features to facilitate the development of ISO 11783 applications (see
General Information for more information):
- A complete Open Source toolchain for ISO 11783 development
- A Virtual Terminal Client implementation: The ISOAgLib Virtual Terminal design has the following goals:
- Enable creation of one single mask pool, that fits all terminal configurations
- Provide attributes for project specification of runtime adaptations
- Allow for flexible addition of further attributes. This is useful where automatic layout control must be optimized for some terminal properties (e.g. the number of softkeys) All these actions are demonstrated in the tutorial example 3_0_VirtualTerminalIso.cpp on the tutorial examples page.
- XML notation for mask definition:
- XML mask files are converted to ROM-enabled variable arrays for inclusion in a project object module.
- ISOAgLib provides a simple function call to register the mask pool.
- ISOAgLib performs some runtime adaptations to terminal properties, e.g. choice of usable colour depth of bitmaps, scaling (including handling of cases where layout properties like text alignment should be conserved even if no font of scaled size is available)
- process completion using an automatic upload of the adapted pool.
- Active pools can be controled with simple access functions, and some simple handler functions are available for reaction on user input.
- TC-Client Device Description by XML notation: Device descriptions of task controller client applications can be designed in XML format (e.g.: device descriptions for sprayers with booms and bins). After converting from XML into C++ headers, the device description can be included into the application project. IsoAgLib handles the device description upload to the task controller. See for more details at Specification for ISO ProcessData XML files (device description for proc2iso) .
- Process Data Communication: Projects which use features like Process Data Communication based on ISOAgLib will probably have fewer compatibility problems than other projects. This gets more important the more implements, sensors, task controllers, core control units (e.g. expert systems) and other devices are integrated. The result is increasingly complex interaction networks with all sorts of dependencies. Here ISOAgLib can provide common patterns for the management of such interactions. This list can help to identify well supported device combinations.
- Multitasking: Perform all tasks which can be automated in the background to simplify application development and avoid different interpretations of low level communication (like message formatting).
- Central CAN FIFO: Strict filtering of recieved CAN messages, so that only the requested messages are stored in one central FIFO. This enables the check for any received message with one function call.
- Explicit Time Management: The central timer function IsoAgLib::iScheduler_c::timeEvent informs the application explicitly about the next needed call, so that application can adapt its own timing.
- A flexible and capable data implementation as the backbone for all documenting and control interactions (e.g. trigger dependent measurement value sends, MIN / MAX setpoint intervals, enable N --> 1 relation between user and provider of process data)
- Use of a Hardware Adaption Layer to minimize target adaptation to a small set of files. The majority of ISOAgLib source code can be used without any changes for different platforms
- Project specific feature selection
- Source code maintenance and extension with enforced strict modular design
- Design orientated to the requirements of networks with more then two devices
- IsoAgLib also supports the Default data logging of the task controller specification.
As the used license
GPL with exception requires from each user to accompany any distributed Program ( or a work based on it - see GPL §3) with some information on the used library, it would be quite kind to inform additionally the authors of your project, so that each using project can be listed here. This list can also serve as a prominent place for showing all contributing (by money and/or code) users.
Last but not least, projects which use features like process data communication based on ISOAgLib will probably have less compatibility problems than in other combinations. This gets the more important, the more implements, sensors, task controllers, core control units (expert system) and tractor builds more and more complex interaction networks with all sorts of dependencies. Here ISOAgLib can provide common patterns for the management of such interactions. This list can then help to identify well supported device combinations.
The following table contains a few commercial products which use ISOAgLib:
| Company | Used parts | Description |
| Agco Corp. |
-
Virtual Terminal (11783-6)
-
TC (11783-10)
-
GPS converter
| Based on ISOAgLib the development team of OSB AG implemented the ISO VT Server (11783-6) on the Terminal Opus A1 from Wachendorff. The operating system is a Linux platform and the OSB AG team managed to develop a running prototype within three months. At the Agritechnica 2005 a running ISO Terminal was presented.
After the Agritechnica 2005, the Task Controller Server (11783-10) and GPS Cinverter were integrated into the system. Which made operating data logging and transferring GPS information from RS232 to the ISOBUS in NMEA 2000 format possible. This is the next step of operating data logging; now the farmer has the possibility to synchronize his field recorder with relevant GPS data. |
| Zunhammer GmbH |
-
User Interface
-
ISO control system
| "The challenge was to bring Zunhammer liquid manure spreader to ISO compatibility within four weeks. The control of the spreader had to be done by ISO terminal. The open source library ISOAgLib was the right instrument and together with the Zunhammer development team we managed to build a running prototype punctual to the Agritechnica 2005. The time frame of four weeks was achived." |
Other known users are:
The ISOAgLib will be actively maintained by Achim Spangler at OSB AG as long as the invested time is affordable in relation to corresponding projects and support contracts.
Even in case the active maintenance by OSB AG might be stopped some day, the GPL license and the independent website at the Department of Bio Resources and Land Use Technology - Crop Production Engineering assure that any interested party can step in and continue the maintenance of the project. This guarantees, like in other Open Source projects, the open access for every user.
Also, in case the major part of the user community is unsatisfied with the maintenance by OSB AG, it is normal for Open Source projects like ISOAgLib to fork the project as a last resort, if OSB AG can't or doesn't want to change the style of maintenance as requested. As far as possible, OSB AG will do everything to avoid such a fork.
A comparable fork was performed by users and developers of the X11R6 server project for UNIX style operating systems - XFree86. Caused by some licensing issues, a fork of the XFree86 was created by the X.Org Foundation, which also appreciated by several graphic card manufacturers, as they can integrate their drivers with the new management method in a better way.
This way it is assured under all conditions, that the development time and money, which is invested in an application that uses the ISOAgLib can't be affected by the style and quality of future project maintenance.
The ISO
AgLib was initially created by
Achim Spangler who is now working for the company
OSB AG. This company started business at the beginning of 2003, and has already more than 160 engineers working in the five locations Munich, Stuttgart, Krefeld, Hamburg, Frankfurt, Köln and Berlin (all in Germany;
state November 2007).
The main business focus is project support at the customer location in software, electronic and mechanical engineering.
Some of the
OSB AG customers are:
AGCO GmbH/
Fendt,
Apparatebau Gauting GmbH,
BenQ Mobile GmbH & Co OHG,
EMAG GmbH,
FIDUCIA IT AG,
Infineon Technologies AG, MTU Aero Engines, Kassenärztliche Vereinigung Bayerns, Dr. Ing. h.c.F. Porsche AG, Siemens AG, ThyssenKrupp AutomotiveMechatronics GmbH, Valeo GmbH, Robert Bosch GmbH, IVM Automotive München Gmb
More information on commercial backing of ISOAgLib can be obtained in the General Support Information and the Contact & Support section.
Even if ISO
AgLib provides already most of the features, a agricultural device may need, there are still some functions, that are missing or that could ease application development. But their implementation can only be done, when people of the user community do at least part of the work, some sponsoring companies give OSB some money to do this, or if OSB has the option to refinance the work with surrounding customer contracts (we want at least to avoid that our competitors take the code for free and make their own business without even asking us).
Interested parties don't have to pay much money, as we are mostly interested in information about everybody who uses those additional features. So don't hesitate to contact Achim Spangler for registration to get access to the EXT part of ISOAgLib.
The following areas are examples for such extensions:
- tractor data level 2 + 3 server
- iTracLight_c for lightning information and control
- iTracMoveSetpoint_c for control of tractor moving parameters by implement
- iTracPtoSetpoint_c for control of PTO settings by implement
- iTracAux_c for management of axiliary valves of tractor (control and information)
- additional features for virtual terminal access like multi language framework (simple definition of variable language depend parts of the mask pool)
- Main Author: Achim Spangler designed the complete framework
- Virtual Terminal Expert: Martin Wodok implemented the tool vt2iso and the virtual terminal handling
- Pioneer Win32 User and First External Contributor: Brad Cox who helped to find several optimization needs for documentation, tutorial and project generation support. The resulting documentation helped him finally to implement all missing VT Object types, which weren't needed for the MiniVeg N project. He is already using ISOAgLib for some interesting test applications, and contributed all missing VT Objects, so that ISOAgLib imeplements also VT Objects like Macro and AuxiliaryInput. Some other extensions from him are moveChildLocation and setOriginSKM functions for VT Objects, where appropriate. Last but not least, he started with us to integrate multi language support.
- Thanks to the DFG, which finances the partial project 2 of the research group "IKB-Dürnast".
- Thanks to the research group of Prof. H. Auernhammer and to Martin Wodok, who developed LBS_Terminal.
- Thanks to DFG funded research group IKB Duernast
The initial creation of the ISOAgLib was enabled by the research project "IKB Dürnast" which is leaded by Prof. Auernhammer at the Department of Bio Resources and Land Use Technology - Crop Production Engineering. - Thanks to development by Sensortechnik Wiedemann (STW)
The development phase with some compiler issues was supported by the experts of the ESX engineering team at Sensortechnik Wiedemann (STW). Some of the main design goals were derived during a project with STW and AGCO Fendt . - Thanks to Fritzmeier for contribution of ISO 11783 Virtual Terminal support
The development of the central control unit for the chlorophyll sensor MiniVeg N was heavily based on the prior work at ISOAgLib, so that Fritzmeier accepted to fund the development of ISO 11783 virtual terminal support in ISOAgLib . - Thanks to eager and patient initial developers with Win32
As the ISOAgLib is mainly developed on LINUX, all Win32 specific adaptations including driver mappings and project file generation for Win32 IDEs weren't optimal until first users like Brad Cox started to try ISOAgLib in combination with Microsoft Visual Studio C++ . As a result, ISOAgLib:
- provides now an automatic project file generation for Microsoft Visual Studio VC++ version 6.0 (DSP file), with the requirement of installation of STLport, if version 7.0 and above isn't used
- Open Source Win32 IDE "Dev-C++" is used for Win32 compile of vt2iso, as there the several required utils can be installed a lot easier.