﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>TAS-HMITalk Support</title>
    <description>Answers to technical questions about TAS-HMITalk made by customers and registered users.</description>
    <link>http://www.cpksoft.com/Free/tabid/69/BlogId/2/Default.aspx</link>
    <language>en-US</language>
    <webMaster>admin@cpksoft.com</webMaster>
    <pubDate>Thu, 29 Jul 2010 12:54:27 GMT</pubDate>
    <lastBuildDate>Thu, 29 Jul 2010 12:54:27 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.4.0.39853</generator>
    <item>
      <title>I cannot register hmitalk.ocx in Windows Vista</title>
      <description>&lt;p&gt;Some users have reported problems when registering the hmitalk.ocx file under Windows Vista. We have found that the solution to this is running the registration tool as Administrator.&lt;/p&gt; &lt;p&gt;For example, if you use VB5 or VB6 to register the ocx (by adding it to the toolbox using the rigth-click menu), make sure to launch the VB exe file with the "Run as Administrator" option.&lt;/p&gt; &lt;p&gt;With Visual Basic.Net 2008 Express, we have found that it is not necessary to run it as administrator.&lt;/p&gt; &lt;p&gt;We have found problems to register the ocx correctly with regsvr32.exe under Windows Vista, so we recommend that you use VB5, VB6, VB.Net 2008 or the development environment that you are using in order to register the ocx. Recently we have included an utility named RegHMITalk.exe that registers the ocx correctly in your Vista system.&lt;/p&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/46/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/46/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=46</guid>
      <pubDate>Wed, 18 Mar 2009 18:31:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=46</trackback:ping>
    </item>
    <item>
      <title>Quick steps to install TAS-HMITalk</title>
      <description>&lt;p&gt;&lt;strong&gt;To install TAS-HMITalk in your machine follow these steps:&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
- Download the TAS-HMITalk distribution .zip file from http://www.cpksoft.com.&lt;br /&gt;
- Extract the .zip file contents to a local folder.&lt;br /&gt;
- Locate the hmitalk.ocx file, right-click over it and select "Open with...".&lt;br /&gt;
- Browse to 'C:\Windows\System32' and select 'regsvr32.exe' and Accept.&lt;br /&gt;
- The ocx file should now be registered by Windows in your machine.&lt;br /&gt;
- Repeat the same steps with linechrt.ocx and grid32.ocx.&lt;br /&gt;
- Now you can add TAS-HMITalk to your Visual Basic toolbox and/or open the examples.&lt;/p&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/45/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/45/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=45</guid>
      <pubDate>Sat, 22 Nov 2008 21:34:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=45</trackback:ping>
    </item>
    <item>
      <title>New TriggerAndWait method</title>
      <description>&lt;div&gt;A new method called &lt;strong&gt;TriggerAndWait&lt;/strong&gt; has been added to the TAS-HMITalk activex. This method triggers a new communication and then blocks the execution of the application thread until the communication has finished. This way it is easier to implement a communication strategy where several TAS-HMITalk objects must be cascaded in a particular order.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Following is an example of a routine to handle a button event in an application written in C# with Visual Studio 2005 that reads data from a relay:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;private void button1_Click(object sender, EventArgs e)&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;{&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;            axHMITalk1.CommPort = HMITalkLib.enumCommPort.COM1;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;            axHMITalk1.CommBaudRate = HMITalkLib.enumCommBaudRate._19200_Bauds;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;            axHMITalk1.CommParity = HMITalkLib.enumCommParity.None;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;            axHMITalk1.CommDataBits = HMITalkLib.enumCommDataBits._8_Bits;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;            axHMITalk1.CommStopBits = HMITalkLib.enumCommStopBits._1_Bit;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;&lt;span&gt;            &lt;/span&gt;axHMITalk1.DriverP0 = "1"; // Numero de rele&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;            if (&lt;strong&gt;axHMITalk1.TriggerAndWait())&lt;/strong&gt; // Se dispara la lectura y si resulta exitosa, se muestran los valores recibidos&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;            {&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Clear();&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Numero de Rele: " + axHMITalk1.DriverP0);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Eventos disponibles (0=No/1=Sí): " + axHMITalk1.get_PointValue(5).ToString());&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Alarma declarada (0=No/1=Sí): " + axHMITalk1.get_PointValue(6).ToString());&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Disparado (0=No/1=Sí): " + axHMITalk1.get_PointValue(7).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 0 (0=No/1=Sí): " + axHMITalk1.get_PointValue(50).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 1 (0=No/1=Sí): " + axHMITalk1.get_PointValue(51).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 2 (0=No/1=Sí): " + axHMITalk1.get_PointValue(52).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 3 (0=No/1=Sí): " + axHMITalk1.get_PointValue(53).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 4 (0=No/1=Sí): " + axHMITalk1.get_PointValue(54).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 5 (0=No/1=Sí): " + axHMITalk1.get_PointValue(55).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 6 (0=No/1=Sí): " + axHMITalk1.get_PointValue(56).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Relay 7 (0=No/1=Sí): " + axHMITalk1.get_PointValue(57).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Corriente en fase A [I0 en Amp]: " + axHMITalk1.get_PointValue(94).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Corriente en fase B [I1 en Amp]: " + axHMITalk1.get_PointValue(95).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Corriente en fase C [I2 en Amp]: " + axHMITalk1.get_PointValue(96).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Corriente en fase N [IN en Amp]: " + axHMITalk1.get_PointValue(90).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Frecuencia [Hertz]: " + axHMITalk1.get_PointValue(8).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Cantidad de operaciones del relay: " + axHMITalk1.get_PointValue(122).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Tensión en fase A [V0 en Volts]: " + axHMITalk1.get_PointValue(104).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Tensión en fase B [V1 en Volts]: " + axHMITalk1.get_PointValue(105).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;font face="Courier New"&gt;                        listBox1.Items.Add("Tensión en fase C [V2 en Volts]: " + axHMITalk1.get_PointValue(106).ToString());&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;&lt;span&gt;                        &lt;/span&gt;listBox1.Items.Add("Tensión en fase N [VN en Volts]: " + axHMITalk1.get_PointValue(100).ToString());&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;            }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;            else MessageBox.Show("Se produjo el siguiente error durante la lectura: " + axHMITalk1.DriverStatus);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt;&lt;/div&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/43/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/43/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=43</guid>
      <pubDate>Thu, 02 Oct 2008 21:46:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=43</trackback:ping>
    </item>
    <item>
      <title>What cable should I use to connect TAS-HMITalk to my Siemens S7-200 PLCs?</title>
      <description>&lt;p&gt;The &lt;a href="http://www.cpksoft.com/Drivers/tabid/55/ProductID/87/Default.aspx"&gt;xs7ppi.tlk&lt;/a&gt; driver was successfully tested in several applications with PLCs belonging to the S7-200 family using the following cable:&lt;/p&gt;
&lt;p&gt;- Cable PC/PPI multimaster&lt;br /&gt;
- 6ES7 901-3CB30-0XA0&lt;br /&gt;
- E-STAND:03&lt;/p&gt;
&lt;p&gt;&lt;img height="121" alt="" width="134" src="/Portals/0/Blogs/ppi_cable.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;This cable can be ordered to Siemens as follows:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&amp;lang=en&amp;siteid=cseus&amp;aktprim=0&amp;extranet=standard&amp;viewreg=WW&amp;objid=16896180&amp;treeLang=en"&gt;Smart RS232/PPI cable with built-in RS232/RS485 level converter (6ES7 901-3CB30-0XA0)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suggested Cable Dip Switches Configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- 1    0    &lt;br /&gt;
- 2    1    9600 bauds &lt;br /&gt;
- 3    0    &lt;br /&gt;
- 4    X    Spare&lt;br /&gt;
- 5    1    Multimaster&lt;br /&gt;
- 6    0    Local DCE&lt;br /&gt;
- 7    0    11 bits&lt;br /&gt;
- 8    X    Spare&lt;br /&gt;
 &lt;br /&gt;
&lt;strong&gt;Important Note: &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The suggested configuration will only work with TAS-HMITalk. If you want to communicate using MicroWin, you will need to set dip switch 5 to 0 in order tohave the cable work as Freeport/PPI instead of Multimaster. Besides, you will need to uncheck the "Multimaster" and "Advanced PPI" options in the MicroWin configuration. Set dip switch back to 1 if you want to communicate using TAS-HMITalk.&lt;/p&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/41/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/41/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=41</guid>
      <pubDate>Tue, 12 Aug 2008 20:56:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=41</trackback:ping>
    </item>
    <item>
      <title>How can I get connected to my devices with TAS-HMITalk?</title>
      <description>&lt;p&gt;&lt;span class="Normal"&gt;TAS-HMITalk and any of its drivers can be used in any of the following configurations, with direct RS-232 connections, connections through RS-232/485 converters, connections through ethernet/serial converters, connections through virtual serial ports, etc.:&lt;/span&gt;&lt;/p&gt;
&lt;p align="left"&gt;&lt;img alt="Drivers de comunicación" vspace="10" border="0" src="/Portals/0/drivers.gif" /&gt;&lt;/p&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/37/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/37/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=37</guid>
      <pubDate>Mon, 21 Jul 2008 22:23:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=37</trackback:ping>
    </item>
    <item>
      <title>MOXA Serial-to-Ethernet NPort 6150 module tested wiith TAS-HMITalk</title>
      <description>&lt;p&gt;
	Last week we had the chance to test the Moxa NPort 6150 Secure Serial Port Server Module with TAS-HMITalk to communicate with the serial port of a DanLoad 6000 electronic preset through the ethernet LAN at a fertilizer plant from Petrobras in Campana, Argentina.&lt;br /&gt;
	&lt;img height="133" alt="" width="153" src="/Portals/0/Newsletters/moxa6150.jpg" /&gt;&lt;br&gt;
	The Moxa device was provided by &lt;a href="http://www.rclsystems.com.ar"&gt;RCL Systems&lt;/a&gt;, a company specialized in integrating InTouch factory suite applications for oil&amp;gas industries.&lt;br /&gt;&lt;br /&gt;
	The loopback tests worked great, showing that TAS-HMITalk could talk to the MOXA module directly, without the need of installing any COM port redirector software. TAS-HMITalk could properly recover from our intentionally-caused communication errors, such as cable disconnections and module power-off and on.&lt;br /&gt;&lt;br /&gt;
	The DanLoad 6000 didn't notice any difference between a true serial communication and a serial-over-ethernet communication managed by the MOXA device. A wonderful solution that can allow you to access serial devices in your plant from PCs in any node of your tcpip network. You can visit the Moxa website &lt;a href="http://www.moxa.com/Zones/Serial_To_Ethernet/index.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;
</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/33/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/33/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=33</guid>
      <pubDate>Sun, 01 Jun 2008 21:06:00 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=33</trackback:ping>
    </item>
    <item>
      <title>Comments about sending outputs</title>
      <description>&lt;ol&gt;
    &lt;li&gt;Configure your HMITalk object properties according to what the driver help file says for the chosen driver and command. Leave default values for properties not mentioned in the help file.&lt;/li&gt;
    &lt;li&gt;Leave the ScanActive=False and uncheck the ScanAutoTrigger property.&lt;/li&gt;
    &lt;li&gt;Create a Button to send the data&lt;/li&gt;
    &lt;li&gt;In the Button_Click event, place this code:&lt;br /&gt;
     HMITalkxxx.PointValue(0) = &lt;the value to be sent&gt;&lt;br /&gt;
     HMITalkxxx.Trigger ' To dispatch the writing action&lt;/li&gt;
    &lt;li&gt;Then just listen to the OnSuccessfullySent event or the OnErrorSending event.&lt;/li&gt;
&lt;/ol&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/14/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/14/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=14</guid>
      <pubDate>Mon, 26 May 2008 23:59:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=14</trackback:ping>
    </item>
    <item>
      <title>Example configuring a Modbus RTU communication</title>
      <description>&lt;p&gt;All drivers are configured using the same set of properties DriverP0 to DriverP9 and the meaning of these properties changes from one driver to other.&lt;/p&gt;
&lt;p&gt;For example, to read a register value at address D0000 from a device supporting Modbus RTU, you should configure one TAS-HMITalk object as follows:&lt;br /&gt;
 &lt;br /&gt;
DriverName = “XModbusb”&lt;br /&gt;
DriverDataType = Analog_Input (because you will be reading words this time)&lt;br /&gt;
DriverNumPoints = 1 or whatever number ob registers you want to read (up to 125)&lt;br /&gt;
DriverP0 = PLC station number (project1.exe uses 1, which seemed to work OK)&lt;br /&gt;
DriverP1 = 3 or 4, depending on what your PLC supports.&lt;br /&gt;
DriverP2 = the starting address to be read (32768 for D0000)&lt;br /&gt;
DriverP3 to DriverP9 are not used for this case.&lt;br /&gt;
 &lt;br /&gt;
If you want the HMITalk object to periodically read your device, you don't need to call the .Trigger method each time. You can set the ScanActive property to ON and the object will automatically do the poll every ScanInterval milliseconds (no need to setup a Timer object in your application).&lt;br /&gt;
 &lt;br /&gt;
In order to WRITE data to your device, you can use the Force Single Coil command to force one single digital output (on/off), Force Multiple Coils to write several digital outputs at once, Preset Single Register as 16-bit Integer to write one single analog value (one word) or Preset Multiple Registers as 16-bit Integers to write several words at once. If you check in the xmodbusb.htm file, you will find how to set the properties for each command. You will have to add HMITalk objects to your application in order to support more commands and more PLCs. We suggest that you use the Trigger method when you send data instead of the ScanActive property. This way, data is only sent on demand and not on a periodic basis.&lt;/p&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/13/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/13/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=13</guid>
      <pubDate>Mon, 26 May 2008 23:50:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=13</trackback:ping>
    </item>
    <item>
      <title>Periodic reading vs. On-demand reading</title>
      <description>&lt;p&gt;The best approach to read data on a periodic basis is:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Set the ScanActive to True&lt;/li&gt;
    &lt;li&gt;Let the OnSuccessfullyReceived event or the OnPointValueChanged events do the work for you.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The best approach for on-demand reading is:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Call the Trigger method&lt;/li&gt;
    &lt;li&gt;Again, let the OnSuccessfullyReceived event or the OnPointValueChanged events do the work for you.&lt;/li&gt;
&lt;/ol&gt;
</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/12/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/12/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=12</guid>
      <pubDate>Mon, 26 May 2008 23:38:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=12</trackback:ping>
    </item>
    <item>
      <title>Comments about configuring a PID loop</title>
      <description>&lt;ol&gt;
    &lt;li&gt;To build a closed PID loop, you will need two TAS objects. One to read the process variable and the other to send the control signal back to the plant.&lt;/li&gt;
    &lt;li&gt;Only the TAS object that is reading the process variable needs to have its PID properties set. The TAS object which sends the output is configured as you do with any other normal TAS object.&lt;/li&gt;
    &lt;li&gt;The EnablePIDs TAS general property must be True for PIDs to operate.&lt;/li&gt;
    &lt;li&gt;You will need to devote one PointValue for each PID loop you need.&lt;/li&gt;
    &lt;li&gt;The PointPIDEnable property of that point must be set to True&lt;/li&gt;
    &lt;li&gt;As a minimun, the PointPIDSetpoint, PointPIDKp, PointPIDKi and PointPIDKd must be set to appropriate values.&lt;/li&gt;
    &lt;li&gt;The PointPIDLowPhysic and PointPIDHighPhysic properties will scale the control signal between 0% and 100%.&lt;/li&gt;
    &lt;li&gt;The value of the control signal generated by the PID algorithm can be read from the PointPIDControlSignal property.&lt;/li&gt;
    &lt;li&gt;To close the loop, use the OnPointControlSignalChanged event to write the code that assigns the PointPIDControlSignal property value to the corresponding PointValue of the TAS in charge of sending the output. Use the same event to trigger the sending of the output.&lt;/li&gt;
    &lt;li&gt;You can use the PointPIDDeadBand property to determine the minimum variation in the control signal that produces a call to the OnPointControlSignalChanged event.&lt;/li&gt;
    &lt;li&gt;You can use the PointPIDMinControlSignal and PointPIDMaxControlSignal to limit the values the control signal can take (for example, between 0 and 100 only).&lt;/li&gt;
&lt;/ol&gt;</description>
      <link>http://www.cpksoft.com/Free/tabid/69/EntryID/11/Default.aspx</link>
      <comments>http://www.cpksoft.com/Free/tabid/69/EntryID/11/Default.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.cpksoft.com/Default.aspx?tabid=69&amp;EntryID=11</guid>
      <pubDate>Mon, 26 May 2008 23:33:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.cpksoft.com/DesktopModules/Blog/Trackback.aspx?id=11</trackback:ping>
    </item>
  </channel>
</rss>