Release Notes

This section provides version-specific information about ScadaMobile or Modbus Gem releases. Release Notes summarize changes made in update releases or app upgrades, as well as useful tips specific to particular releases. A particular release is identified by a version number. To determine the version of your app, go to the Settings tab and scroll to the bottom.

Version 2.1.4

This version was meant to solve a few issues with the Omron and Allen-Bradley drivers and alarms. Unfortunately, a serious issue was indadvertedly introduced that prevents the app from accessing bits in PLC tags properly. The issue affects all apps, ScadaMobile, ScadaMobile ONE and Modbus Gem and all communication protocols.

To prevent affecting users this version has been removed from the App Store just a few hours following Apple review. We have already identified the issue and sent a patch to iTunes Connect for additional review. Unfortunately Apple starts the review process over with each new update and it takes some time for them to push any new update. We expect the fixed update will be available for download in about a week or so.

Version 2.1.3

Ability to play Audio form the iPod Library, audio files, or web sites based on user interaction or PLC tag values.

You can now play audio files based on PLC tag values or user interaction. The mechanism is similar to the recently added document viewer feature.
Particularly, a tag row can be of 'type=player' and a 'url' location of an iPod Library asset or document can be given to Play.
Tags with 'type=player;' attribute will pop up a player interface and will start playing an audio file when their associated tag value transitions from false to true. The particular audio file to be played is given as a string expression in the 'url' attribute. Items in the iPod Library must belong to a Playlist named "ScadaMobile" and the given url must begin with "iPod-Library://" followed by the name of the song or item to play. For audio files in the documents category you simply provide the file name.
Example: type=player; url="mySpeechSound.mp3"; will play the audio file 'mySpeechSound.mp3' under the Documents category in the files tab, when the tag value associated with this row transitions to true.
Example: type=player; url="iPod-Library://You And Me"; will play an asset named "You And Me" from the "ScadaMobile" playlist on the device's iPod Library when the tag value associated with this row transitions to true.

Ability to run the app in the background for unlimited periods of time.

The ScadaMobile and Modbus Gem apps have obtained authorization to run in the background indefinitely. This allows users to keep the app running in the background for unlimited time. To enable this feature the "Background Process" switch on the settings tab has changed semantics and is now intended to put the app in the unlimited running time mode. Optionally a periodic "Tick" sound can be enabled to make obvious to users that the app is still running. The "Keep Connected" switch now is meant to set the app to run in the background for the previously allowed 10 minutes.

Added new system variables for accessing to Alarm Counters and User Data from within expressions.

Several system variables for use in expressions have been added:

$SMPulse1s : Generates a 1 pulse every second.
$SMActiveAlarmCount : Returns the current number of active alarms.
$SMUnacknowledgedAlarmCount : Returns the current number of unacknowledged alarms.
$SMCurrentUserName : Returns the name of the currently logged in user as a string.
$SMCurrentUserAccessLevel : Returns the access level of the logged in user.

New settings allowing for a finer control of Alarm Alerting and Sounding behavior.

The settings tab adds additional options to determine the behavior of Alerts and Sound when alarm conditions are triggered.

New example, CustomAlarms-ONE.csv showing how to play custom sounds based on alarms.

A new example was added to demonstrate the use of the player feature in combination with alarms. Particularly, the $SMUnacknowledgedAlarmCount system variable is tested for not Zero to start an audio player using a custom sound. One particular alarm is linked to a different audio file to demonstrate how to play custom sounds based on different conditions.

Updated Formula-ONE.csv example.

The Formula-ONE.csv example now features the new playing feature on the Viewer/Player page.

Solved a reported issue with Timers/Counters for the Omron protocol.

Solved an issue with Omron counter tags and Timer activation flags not properly handled.

Solved a reported issue with multiple writes of Modbus Coils in some circumstances.

Solved an issue affecting writes of multiple Modbus Coils triggered by expressions executing at once.

Solved a reported issue with invalid references in expressions.

Invalid expression references due to undefined if clause results should now clear once executed, instead of re-appearing when the app is launched again.

Fixed an issue affecting long running trend graphs.

The last version introduced a bug preventing long running trend graphs to fill the 10 minutes graph. This has been fixed.

Version 2.1.2

New setting and attribute for defining polling rate on a per connection basis.
For Source files with communication attributes, a new attribute 'polling_interval' allows for specifying the desired polling rate in seconds for reads. The default is 2 seconds. A value of zero (0) is also possible, this means top speed, i.e. no delay between reads.

Example: poll_interval = 0.5 ;

A new entry on the Settings tab allows for configuring the default polling rate for source files that do not include communication settings. Selected polling rate, and actual reads and commands sent to PLCs per second are now dynamically shown on a per connection basis on the Communications tab.

Asynchronous updating of values on devices with multicore CPUs (iPad II and iPhone 4S).
Extended use of multithreaded code on multicore devices allows for fully asynchronous updating of tag values on the interface even while the user is scrolling. The result is no more blank rows when sliding up or down the interface.

Ability to display documents, files and web sites based on user interaction or PLC tag values.
New attributes have been added for this purpose. Particularly, a tag row can be chosen to be of 'type=viewer' and a 'url' location of a document or web site can be given for display.

Tags with 'type=viewer;' attribute will present a file or web site when their associated tag value transitions from false to true. The particular file or web site to be presented is given as a string expression in the 'url' attribute.

'url' attribute: In a row with the type attribute set to “viewer”, the String Expression assigned to the 'url' attribute provides the actual File Name of a document stored under the Documents Category to be presented when the tag value for this row transitions to the true state. Alternatively, a http Link to a Web Site or a link to a remote file residing on a web server can be provided to be presented instead.

Example: type=viewer; url="myManual.pdf"; will display the file ‘myManual.pdf’ under the Documents category in the files tab, when the tag value associated with this row transitions to true.

Example: type=viewer; url="http://www.apple.com"; will display Apple’s web site when the tag value associated with this row transitions to true.

Example: type=viewer; url=”http://www.myserver.com/myManual.pdf"; will display the file ‘myManual.pdf’ at the www.myServer.com site.

Example: type=viewer; url=format(“doc%03d.pdf”, number); will display a file from the Documents category with generic name ‘docXXX.pdf’ given XXX replaced by the value of the variable ‘number‘.

Solved an issue affecting csv file open from mail app attachment.
It has been possible for some time to send Files and Documents to the ScadaMobile app from a mail attachment. However, a bug prevented it from working properly or could even crash the app. This has been solved in this version. Additionaly, files with an extension name of '.smcsv' are owned by ScadaMobile and thus they are offered the option to be opened with this app.

Other bug fixes and corrections.
Some bugs have been addressed. Most significant ones are:
- Solved an issue with the button_label attribute when used with particularly complex expressions.
- Updated Aphorism-ONE, Formula-ONE and ColorfulControls-ONE examples so that they can run concurrently without lookup table conflicts.

Version 2.1.1 (Maintenance Update)

Moved default validation tag for Siemens Controllers to MW998.
Several users reported the inconvenience of having the validation tag set at MW3998 by default, since some Step 7 controllers do not support M addresses that high. So it has been moved now to MW998 by default. This will help beginning users to quickly achieve connections with most S7 controllers before they even consider setting a validation code, thus flattening the SM learning curve and preventing some frustration.

A basic example demonstrating access to Siemens controllers, DataTypesSiemensS7.csv, is available.
As part of this update, a new basic example designed for use with Siemens controllers has been added to the full version. The example shows how to configure several tags for reading and writing onto different S7 memory areas. This example is also available for download from the site.

Fixed an issue with the Siemens driver that caused PLC disconnections.
A bug present in v2.1 prevented the app to correctly report errors given by the controller in the proper way, instead the app just triggered a disconnection. This has been addressed and the app does not longer disconnects when a S7 controller reports an error for a tag.

Other bug fixes and corrections.
- Fixed an issue with the embedded web server that caused the 'Re-Submit' button to fail in some circumstances.
- Corrected a circular reference on the ColorfulControls-ONE.csv example.
- Replaced an incorrect text on the Siemens-ONE.csv example

Version 2.1 Release Notes

Siemens Support. We added support for Siemens Simatic S7 controllers. Supported controllers include S7-1200, S7-300, and S7-400. You can use all common areas and data types including 'M', 'MB', 'MW', 'MD'; 'I', 'IB', 'IW', 'ID' (or the equivalent 'E' if using German notation prefix) ; 'Q', 'QB', 'QW', 'QD' (or 'A' for German notation); and DBn.DBX, DBn.DBB, DBn.DBW, DBn.DBD.

Just use the above prefixes followed by the address number in Column C of your CSV project file. For example, write DB3.DBW10 to read a 16 bit value at address 10 of Data Block number 3. Bit access is also supported for reads and writes, therefore you can type M3.1 to access bit 1 of M3. In general this syntax is borrowed from the S7 usual conventions.

All data types supported in ScadaMobile are available for accessing values in S7 controllers in the obvious way. However STRINGS need a special consideration. STRINGS in S7 contain a size field that must be generally specified. This is usually done in Siemens software by appending the size in square brackets just after 'STRING'. However, ScadaMobile already uses square brackets to identify arrays so this notation conflicts with S7 notation.

To work around this we chose to use normal parentheses to indicate size.

Thus, STRING sizes must be indicated in column B using round parentheses. The square notation is still reserved for arrays, so when you use them you will be referring to ARRAYs. Consider the following cases:

STRING(20)
This refers to a STRING with a capacity of 20 characters and should not be confused by STRING[20]

STRING(20)[3]
This is an ARRAY of 3 elements, each element is a string with a capacity of 20 characters

STRING[20]
This is an ARRAY of 20 STRINGs. This is NOT a string of 20 characters!. Since the default string size for S7 is 254 (256 bytes including the size and length fields) you will end having an array of 20 STRINGs with a capacity of 254 characters each. Actually you will end reading (or writing) a range of 20*256 = 5120 bytes on your PLC for this tag alone and your PLC will probably reply with an out of range error.

Front Camera and Zoom on Bar Code Reader. The bar code reader now supports the front camera if available. A camera icon will appear on the reader interface to swap cameras if available.

Color attributes available for Switches and Sliders. You can now use custom color on Switches and Slider controls (iOS5 only). Previously this was only supported on read only elements. To do so you can use Color Attributes as usual.

Display Pages of your project in two columns. You can now display project pages in two columns (iPad only). To use this feature, first rotate the interface to show both left and right panels. On the left panel go to 'home' and then tap on the 'tag' icon on the top toolbar. You will be able to scroll to a different page on the left and right panels.

Display two columns in portrait. Now you can display two columns both on landscape and portrait (iPad, iOS5 only). There is a setting to enable this feature on the settings tab of the app. You must rotate the interface at least once for it to take effect.

Version 2.0.5

- Minor bug fixes.
- Overall stability and performance improvements.

Version 2.0.4

- Fixed a bug that crashed the app when attempting to use INTERNAL alarm tags with Logix controllers.
- Fixed a bug that caused the app to rebound a switch control after taping it on slow network connections.
- The app now correctly reports devices with no camera available when attempting to use the bar code scanner.

Version 2.0.3

Added support for reverse string byte order on modbus strings (Wago PLC). Use the new str_byte_swap attribute to tell SM to reverse bytes when reading/writing modbus strings.

Version 2.0.2

Support for International String Encodings. International Characters and Strings in any language are fully supported. Integrators can therefore chose to present their project interface in any language. Strings will also be stored in PLCs without breaking the chosen Encoding, enabling for a true International Language experience.

Version 2.0 Release Notes

If you are a ScadaMobile end user, please do not upgrade to this version until you have contacted your SM Integrator. If you are an Integrator please test your source file(s) on the new version 2.0 before deploying them or asking your users to upgrade. This version include the following enhancements: (also see the User Manual)

Updated Examples. By design, ScadaMobile keeps intact the files you already have on the files tab including the examples. Version 2.0 includes some new examples and incorporates updates on existing ones. If you are upgrading from an earlier version you should update the examples. While on the administrator account please go to files tab and tap on 'load examples'.

Smarter tag optimizer. An improved, smarter algorithm is now used to sort out and group tags in a more efficient way. At all times, the optimal combination among the available communication commands for a protocol is automatically calculated to assure minimal network overhead and to maximize communications performance.

Stricter checking of EIP data types. EIP tag data type checking is stricter and all types must be explicit now. For example, given int_tag to be of type INT the following row will no longer be valid.

value    BOOL    int_tag.3      label="This should be INT" ;

A new "bool" style has been introduced to allow for a correct representation of tags with bit indication. The above row should be entered thus:

value    INT    int_tag.3      label="This should be INT" ; style = "bool" ;

Customizable validation tag. A custom Validation Tag can now be specified for some protocols. When explicitly specifying a custom validation tag you are required to set a non zero value in it for the test to pass. To specify a validation tag you use the global 'validation_tag' attribute as in the following examples:

for EIP/PCCC use  validation_tag = "N49:2"; only N files can be used and the code is stored as an INT (default is N98:0).
for FINS/TCP use  validation_tag = "D500"; only DM area can be used (default is D19998).
for EIP/NATIVE the validation tag name is always SMValidationTag, it can not be changed.
for MODBUS/TCP no validation tag is available.

Retentive Local tags. Local tags are now retentive. This means that their values are always kept between application launches. This helps users to keep intact particular settings on the project without being affected by successive application launches.

Application wide String and Array support. Expressions and the communications engine have been extended to fully support Strings and Arrays in addition to Numbers. Strings are represented by characters enclosed between quotes, such as "This is a string". An Array is represented by a comma separated list of elements enclosed in square brackets, such as [element1,element2,element3]. Array elements can be Numbers, Strings or other Arrays. Numbers, Strings and Arrays can be combined in complex expressions or stored in variables following the flexible Ruby Language syntax. Read/write Strings and Arrays from/to PLCs are fully supported. Some internal SM data has been made available through expressions, such as the current date/time and the project global lookup table.

Note about Blink support. Formerly, blinking was specified by simply setting a range by means of the 'blink_bounds' attribute. This still works, however a new attribute accepting expressions named 'blink' must now be specified to control when or whether blinking will actually take effect within said range. As a consequence blinking will get disabled on existing projects unless they are updated by setting the 'blink' attribute where necessary.

Highly extended data formatting support. With the addition of String and Array expressions and extended support of Ruby operators and methods, data presented to users can be formatted in a much richer way. Particularly any Numeric o String value can be combined in any way to present information to users in a more compelling way. Ruby 'format' function is fully supported. 

Support for entering and displaying Binary and Hexadecimal values. Row formatting options allow for specifying Binary and Hexadecimal format for entering and displaying numeric values. The most appropriate iPhone popup keyboard is now automatically chosen depending on data type, bounds and format options, making it easier for users to enter data according to what they need to type on each field.

Extended support of expressions in attributes. In addition to the 'value' and 'hidden' attributes, additional row attributes have been given the possibility to use expressions instead of fixed values. For example you can now give a 'color' based on an expression depending on other PLC tags or expression values.

Extended file import/export capabilities. In addition to the embedded File Server, Data Source Files can now be imported into SM by tapping on a mail attachment. Files can also be downloaded directly from an external http or ftp server. This will help integrators to distribute configuration updates to their users without having to rely on physical device access.

Bar code reader. Users can now use the iPhone camera to read barcodes within ScadaMobile and use the readings for any purpose within expressions and PLCs tags.

Syndicate content