<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>ControlSystemWorks Blog</title>
  <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/" />
  <link rel="self" href="http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-07-27T09:26:01.384625-05:00</updated>
  <author>
    <name>ControlSystemWorks.com</name>
  </author>
  <subtitle />
  <id>http://www.controlsystemworks.com/blog/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>CSWorks 1.4.3860.0 released</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/07/27/CSWorks1438600Released.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,b6fe3e96-b0f4-4b3d-90d4-132b74a89c81.aspx</id>
    <published>2010-07-27T09:26:01.384-05:00</published>
    <updated>2010-07-27T09:26:01.384625-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <category term="release" label="release" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,release.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">What's new:<br /><ul><li><span>Oracle support tested with Oracle 11g R2, Devart dotConnect for Oracle 5.70.146,
Oracle.DataAccess.Client 2.112.1.0 </span><span></span></li><li><span>mySQL support, tested with mySQL 5.1.48, Devart dotConnect for mySQL 5.80.146 </span><span></span></li><li><span>Improved type control in LiveData stack </span><span></span></li><li><span>Minor fixes in Excel demo</span></li></ul><span><br /></span><p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=b6fe3e96-b0f4-4b3d-90d4-132b74a89c81" /></div>
    </content>
  </entry>
  <entry>
    <title>Error: LiveData Web Service is not available</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/07/22/ErrorLiveDataWebServiceIsNotAvailable.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,721db983-c590-4f21-9e8b-7d7455398537.aspx</id>
    <published>2010-07-21T23:41:09.796875-05:00</published>
    <updated>2010-07-21T23:41:09.796875-05:00</updated>
    <category term="setup" label="setup" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,setup.aspx" />
    <category term="troubleshooting" label="troubleshooting" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,troubleshooting.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">In some rare cases, after installing CSWorks
and running Pipes and Tanks Demo, you can see the following error:<br /><br /><img src="content/binary/2010-07-21-LiveDataWebServiceIsNotAvailable.png" /><br /><br />
This means one simple thing: ASP.NET cannot run LiveData Web Service code. There can
be different reasons for this. The first thing you should do in this case is to get
as much additional error information as possible. Check application event log - it
may give you some clues. Also, try to get LiveData Web Service definition from your
browser at http://localhost/CSWorksDemo/LiveDataWebService/Service.asmx.<br /><br />
The browser will probably give you some more details about the error. Consider the
following example.<br />
 <br /><img src="content/binary/2010-07-21-AccessDenied.png" /><br /><br />
The problem in this particular case is that ASP.NET cannot write temporary binary
it compiles for a specific page or web service. There can be several root causes for
that, for example: error in the ASP.NET installation, changing ASP.NET  worker
process account without modifying temp folder privileges etc. There is a lot of information
about this issue in the net, here are some good sources:<br /><br />
http://forums.asp.net/p/1060279/1520411.aspx<br />
http://weblogs.asp.net/rchartier/archive/2006/01/05/434626.aspx<br /><br />
The idea is to give the account ASP.NET runs under, say NETWORK SERVICE, or LocalSystem,
or "ASP.NET v4.0 Classic" account (depends on which account you are using, see your
IIS Manager settings, Application Pools, "ASP.NET v4.0 Classic" pool properties) full
access to all temporary folder it may use while compiling ASP.NET page or service.
Those folders include:<br /><br />
c:\WINDOWS\Microsoft.NET\...\Temporary ASP.NET Files<br />
c:\windows\temp<br /><br />
One would assume that ASP.NET setup (or aspnet_regiis command executed manually) should
do that, but it looks like there is no 100% guarantee. Fixing folder access manually
seems to be the best option. Unfortunately, there is nothing CSWorks installer can
do here - it's ASP.NET setup problem.<br /><br /><p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=721db983-c590-4f21-9e8b-7d7455398537" /></div>
    </content>
  </entry>
  <entry>
    <title>Trend data export to Excel</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/07/13/TrendDataExportToExcel.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,2ee02a22-af1b-4672-b62b-b186379369ad.aspx</id>
    <published>2010-07-13T11:14:41.457625-05:00</published>
    <updated>2010-07-13T11:14:41.457625-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <category term="trending" label="trending" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,trending.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Starting from version 1.4.3850.0, CSWorks Trend control is capable of saving trend
data to CSV (comma-separated value) files on the client machine. The following video
gives the idea how the export process works and how trend data can be used in Excel.
It's easy. 
</p>
        <p>
          <object width="640" height="385">
            <param name="movie" value="http://www.youtube.com/v/K2NrlRpjAOg&amp;hl=en_US&amp;fs=1" />
            <param name="allowFullScreen" value="true" />
            <param name="allowscriptaccess" value="always" />
            <embed src="http://www.youtube.com/v/K2NrlRpjAOg&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385">
            </embed>
          </object>
        </p>
        <p>
Watch the video in high resolution (1280x720) to see the details.
</p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=2ee02a22-af1b-4672-b62b-b186379369ad" />
      </div>
    </content>
  </entry>
  <entry>
    <title>CSWorks now speaks: en,no,de,ru</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/07/12/CSWorksNowSpeaksEnnoderu.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,df42e200-5fb7-4c24-9ef0-52f7f2eccfaf.aspx</id>
    <published>2010-07-12T15:10:30.676-05:00</published>
    <updated>2010-07-13T11:15:40.613875-05:00</updated>
    <category term="localization" label="localization" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,localization.aspx" />
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Starting from version 1.4.3850, CSWorks Alarm Summary and Trend controls support two
more languages: German and Russian:<br /><br /><a target="_blank" href="content/binary/2010-07-12-LocalizedAlarm.png"><img src="content/binary/2010-07-12-LocalizedAlarm-small.png" border="0" /></a><a target="_blank" href="content/binary/2010-07-12-LocalizedTrend.png"><img src="content/binary/2010-07-12-LocalizedTrend-small.png" border="0" /></a><br /><br />
Those are the screenshots of CSWorks demo applications included in CSWorks install
package. Please note that some of CSWorks demo applications now support culture parameter
that can be passed in the URL. If you want to run CSWorks demo application using one
of the supported cultures just specify "?culture=&lt;culture&gt;" parameter in the
address bar.
</p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=df42e200-5fb7-4c24-9ef0-52f7f2eccfaf" />
      </div>
    </content>
  </entry>
  <entry>
    <title>CSWorks 1.4.3850.0 released</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/07/06/CSWorks1438500Released.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,d8b2f4c2-b111-400f-9d4d-07b32526a0dc.aspx</id>
    <published>2010-07-06T09:38:33.05775-05:00</published>
    <updated>2010-07-06T09:38:33.05775-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <category term="release" label="release" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,release.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">What's new:<br /><ul><li>
Client development: integration with Expression Blend 4</li><li>
Improved downsampler engine now used on both client and server</li><li>
Alarm Summary and Trend control in German and Russian</li><li>
Trend Control: data export to comma-separated files</li><li>
Minor OPC emulator fixes</li></ul><p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=d8b2f4c2-b111-400f-9d4d-07b32526a0dc" /></div>
    </content>
  </entry>
  <entry>
    <title>Silverlight 4 - relative web service address support</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/06/25/Silverlight4RelativeWebServiceAddressSupport.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,dcf0c93f-e666-40b4-88e1-fa2ff2e16edb.aspx</id>
    <published>2010-06-25T11:59:41.25-05:00</published>
    <updated>2010-06-25T12:00:37.54725-05:00</updated>
    <category term="demo" label="demo" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,demo.aspx" />
    <category term="wcf" label="wcf" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,wcf.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Silverlight 4 supports the resolution of relative service addresses. Provided the
Silverlight XAP package is hosted at http://somesite.com/application/ClientBin/Application.xap,
the following address resolve as indicated: 
</p>
        <p>
"../Service1/Service.asmx" resolves to “http://somesite.com/application/Service1/Service.asmx” 
</p>
        <p>
For you, CSWorks users out there, it means one good thing: no more ServiceReferences.ClientConfig
hassle, see <a href="http://www.controlsystemworks.com/blog/2010/02/25/RunningCSWorksDemoApplicationsFromRemoteClients.aspx">Running
CSWorks demo applications from remote clients</a> post for details. Now you can simply
specify relative service addres as follows: 
</p>
        <p>
&lt;endpoint address="../LiveDataWebService/Service.asmx" ...&gt;
</p>
        <p>
and your CSWorks application will work from any website you deploy it to. Switching
to Silverlight 4 pays off!
</p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=dcf0c93f-e666-40b4-88e1-fa2ff2e16edb" />
      </div>
    </content>
  </entry>
  <entry>
    <title>CSWorks 1.4.3830.0 released</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/06/15/CSWorks1438300Released.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,4d2d3f43-271a-4103-9227-af9a93179ef3.aspx</id>
    <published>2010-06-15T16:29:23.08975-05:00</published>
    <updated>2010-06-15T16:29:23.08975-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <category term="release" label="release" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,release.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">What's new:<br /><ul><li>
LiveData Service: open data sources asynchronously</li><li>
LiveData data source providers: improved logging</li><li>
LiveData Manager: response items 'Updated' event arguments</li><li>
LiveData server stack fixes</li><li>
Trend control: multiple minor additions and fixes</li><li>
LiveDataWebServiceDemo sample: learn to work with LiveData Web Service directly</li><li>
AlarmWebServiceDemo sample: learn to work with Alarm Web Service directly</li><li>
Alarm Summary and Trend: support for multiple configurations</li></ul><br /><p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=4d2d3f43-271a-4103-9227-af9a93179ef3" /></div>
    </content>
  </entry>
  <entry>
    <title>CSWorks on YouTube</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/05/26/CSWorksOnYouTube.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,f02fc4ab-5c48-4623-8af3-023c8f0dcfc4.aspx</id>
    <published>2010-05-26T18:07:28.731-05:00</published>
    <updated>2010-05-28T11:47:13.1225-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="html">&lt;p&gt;
A few CSWorks educational videos are available on YouTube. Watch them in high-definition
mode (1280x720):
&lt;/p&gt;
&lt;p&gt;
CSWorks - creating your first application
&lt;/p&gt;
&lt;p&gt;
&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/KJGyCrEOAUI&amp;hl=en_US&amp;fs=1&amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/KJGyCrEOAUI&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
CSWorks - using third-party OPC servers
&lt;/p&gt;
&lt;p&gt;
&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/_VHtmORV-MY&amp;hl=en_US&amp;fs=1&amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/_VHtmORV-MY&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=f02fc4ab-5c48-4623-8af3-023c8f0dcfc4" /&gt;</content>
  </entry>
  <entry>
    <title>CSWorks 1.4.3820.0 released</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/05/25/CSWorks1438200Released.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,69e9ddfe-789b-4d3a-aae7-47a95c34887b.aspx</id>
    <published>2010-05-25T16:11:01.294-05:00</published>
    <updated>2010-05-26T23:32:24.575625-05:00</updated>
    <category term="news" label="news" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,news.aspx" />
    <category term="release" label="release" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,release.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">What's new:<br /><ul><li>
Server requires .NET 4.0</li><li>
Client requires Silverlight 4</li><li>
Client development: integration with Visual Studio 2010</li><li>
Trend Control: specify date range explicitly</li><li>
Delayed alarms to avoid noise</li></ul><p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=69e9ddfe-789b-4d3a-aae7-47a95c34887b" /></div>
    </content>
  </entry>
  <entry>
    <title>Trending client performance - Lab 03</title>
    <link rel="alternate" type="text/html" href="http://www.controlsystemworks.com/blog/2010/05/19/TrendingClientPerformanceLab03.aspx" />
    <id>http://www.controlsystemworks.com/blog/PermaLink,guid,0d6a6133-fc63-4893-992e-46336e15c8ad.aspx</id>
    <published>2010-05-19T16:18:06.058-05:00</published>
    <updated>2010-05-19T17:04:58.776875-05:00</updated>
    <category term="historical data" label="historical data" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,historicalData.aspx" />
    <category term="performance" label="performance" scheme="http://www.controlsystemworks.com/blog/CategoryView,category,performance.aspx" />
    <author>
      <name>Sergey Sorokin</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are curious about the number of Trend controls you can run against your CSWorks
server infrastructure, you may find this post interesting. We will make minor changes
to historical data server configuration, run a few Trend control clients against it
and analyze what we see. 
</p>
        <p>
          <font size="4">Environment </font>
        </p>
        <p>
CSWorks 1.2.3800.0<br />
Server: Intel Core 2 Duo @ 2.40GHz, 2 GB RAM, Windows Server 2008<br />
Client: Intel Core 2 Duo T5300 @ 1.73GHz (notebook), 2 GB RAM, Windows XP SP3<br />
Network: Wireless 54 Mbps 
</p>
        <p>
          <font size="4">Server Configuration </font>
        </p>
        <p>
1. As usual, we have to configure History Recorder so it uses some scalable database.
Install SQL Server 2008 Express on your server machine. 
<br /><br />
2. Create database "CSWorks" 
<br /><br />
3. Create HistoricalData table - see "createCommand" parameter of &lt;dbtarget ...=""
name="Standard SQLServer DbTarget"&gt; in CSWorks.Server.HistoryRecorderService.exe.config. 
<br /><br />
4. Configure SQL Server data source and make it active in CSWorks.Server.HistoryRecorderService.exe.config:
</p>
        <font size="1" color="#0000ff" face="Verdana">
          <font color="#0000ff">&lt;dbTargetConfig&gt;<br />
  &lt;dbTargets <strong><font color="#ff0000">activeDbTarget="Standard SQLServer
DbTarget</font>"</strong>&gt;<br />
    &lt;dbTarget name="Standard SQLite DbTarget" ...<br />
      ...<br />
    /&gt;<br />
    &lt;dbTarget name="Standard SQLServer DbTarget"<br />
      providerInvariantName="System.Data.SqlClient"<br />
      connectionString="<font color="#ff0000">Data Source=localhost\sqlexpress;
Initial Catalog=CSWorks;user id=sa;password=...</font>;"<br />
      ...<br />
    /&gt;<br />
  &lt;/dbTargets&gt;<br />
&lt;/dbTargetConfig&gt;</font>
        </font>
        <br />
        <br />
5. Configure HistoryReaderWebService to read historical data from this database. In
the web.config, assign SQLServer target to the primary partition and specify correct
connection string:<br /><br /><font size="1" color="#0000ff">  &lt;historyTopology&gt;<br />
    &lt;historyPartitions&gt;<br />
      &lt;historyPartition name="partition1" primaryDbTarget="<b><font color="#ff0000">partition1
Primary DbTarget (SQLServer)</font></b>" secondaryDbTarget=""&gt;<br />
        ..<br />
      &lt;/historyPartition&gt;<br />
    &lt;/historyPartitions&gt;<br />
  &lt;/historyTopology&gt;<br /><br />
  &lt;dbTargetConfig&gt;<br />
    &lt;dbTargets&gt;<br />
      ...<br />
      &lt;dbTarget name="partition1 Primary DbTarget (SQLServer)"<br />
               
providerInvariantName="System.Data.SqlClient"<br />
               
connectionString="<font color="#ff0000">Data Source=localhost\sqlexpress; Initial
Catalog=CSWorks;user id=sa;password=...;</font>"<br />
               
...<br />
               
/&gt;<br />
    &lt;/dbTargets&gt;<br />
  &lt;/dbTargetConfig&gt;<br /></font><br />
6. Restart HistoryRecorder service and verify that it writes observation to the newly
configured database. 
<p><font size="4">Running clients </font></p><p>
Before running the clients, make sure you have prepared *.clientConfig in CSWorks.Client.TrendDemo.xap
to run from a remote machine. Please see <a target="_blank" href="http://www.controlsystemworks.com/blog/2010/02/25/RunningCSWorksDemoApplicationsFromRemoteClients.aspx">this
post</a> for details. 
<br /><br />
Now run a few Trend clients on your client machine using this command:<br /><br /><font size="1" color="#0000ff">start iexplore "http://myserver/CSWorksDemo/TrendDemo.html"</font><br /><br />
I ran 25 instances, increasing the load by 5-instance chunks. 
</p><p><font size="4">Results </font></p><p>
All 25 clients run without problems, trending data (both live and historical) arrives
without delays, server seems to be perfoming fine. <a target="_blank" href="content/binary/2010-05-19-ServerPerformance.png">Here
is a screenshot</a> made on the server machine. Clients consume about 200K of live
and historical data every second, server machine uses about 35% of its CPU capacity.
SQL Server and ASP.NET worker process are working hard (14% and 18%, respectively)
to deliver historical data to the clients. 
<br /><br />
The spikes in data transfer rates mark moments when Trend control were re-querying
bigger amounts of historical data - View-&gt;Tracking setting were set to On for all
Trend control instances, and all instances were refreshing the whole picture synchronously
(well, in chunks of 5 instances, of course). 
<br /><br />
The spikes in CPU consumption mark moments when I ran chunks of 5 IE instances. 
</p><p><font size="4">Summary </font></p><p>
Not bad for a commodity server box that runs every piece of the deployment: all CSWorks
services (LiveData, Alarm, HistoryRecorder), web services and database engine. Potential
bottlenecks are:<br />
- the database - not surprising;<br />
- web service layer - but we can scale it out using web farm. 
</p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=0d6a6133-fc63-4893-992e-46336e15c8ad" /></div>
    </content>
  </entry>
</feed>