Jump to content

Citect

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 203.19.130.241 (talk) at 05:56, 9 November 2007 (History). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Citect
Company typePrivate Limited
IndustryIndustrial Automation
FoundedAustralia Sydney, Australia, 1973
HeadquartersAustralia Sydney, Australia
ProductsCitectSCADA
CitectSCADA Reports
Ampla
Citect Facilities
RevenueA$61.5 million in 2004
Number of employees
390 in 2007
Websitewww.citect.com

Citect is a software development company specialising in the Automation and Control industry. The main software products developed by Citect are CitectSCADA, CitectScadaReports, and Ampla.

History

Citect began as a subsidiary of Alfa Laval. The company was then known as Control Instrumentation. A name change of the company took place to Ci Technologies, and then to Citect to take advantage of the well known name of its flagship software product, CitectSCADA.

Whilst Citect is considered to be a software development company, it also has a large Professional Services division, which has been core to the success of the business.

In 2006, Citect Pty Ltd was acquired by the Schneider Electric group.

Software History

Citect for DOS

Martin Roberts wrote Citect for DOS, released in 1987, as a response to the limited range of PC-based operator interface software available at the time. Citect for DOS consisted of a configuration database (in dBase format), a bitmap (256 colour raw format) and an animation file. The user would draw a representation of a facility using the readily available Dr Halo graphical package and placing "Animation Points" in the desired location. "Tags" were assigned in the configuration databases, equating to addresses within the programmable electronic devices Citect was communicating with. By referencing these tags at animation points using other configuration databases, the user could show the state of equipment such as running, stopped or faulted in real-time.

Citect for DOS could communicate with various programmable electronic devices via the various serial links offered by the device; some through direct PC serial port connections, others through 3rd party PC based cards designed to communicated with the target programmable electronic device. Software drivers were written for many protocols; its ability to communicate with a variety of devices - and to have new drivers written when required - became a primary selling point for Citect.

The runtime software ran on a DSI card; a 32 bit co-processor that was inserted into an available ISA slot in the PC. This was due to insufficient processing power available in the 286 and 386 PCs available at the time.

Citect for Windows Version 1

During the early 90's PC computational power had caught up and Microsoft Windows based software was becoming popular, so Citect for Windows was developed and released in 1992. It no longer needed the DSI card to run on a PC. The configuration methodology remained similar to Citect for DOS but became more intuitive under MS Windows. Citect for Windows was written as a direct response to a request by Argyle Diamonds. The company was originally intending to use a Honeywell system until a number of Arygle's site engineers talked Argyle around to Citect after high lighting the existing problems they were having with Honeywell systems on site. Argyle contributed $1 million to the development of Citect for Windows. To this day the "ArgDig" alarm database (ie Argyle Digital) is still part of Citect.

Version 2

In 1993 BHP Iron Ore upgraded its Port Hedland operator interface to Citect for Windows. Being the largest installation attempted by Citect at the time, Version 1 was showing many limitations. Version 2 was developed to improve on these limitations. Key changes were made to the graphics configuration by Andrew Allan, including a move away from Dr Halo/Animation Point to the new "CTG" (Citect Graphics) system. A CTG combined the old BMP/AN files into a single object based file that gave the user a WSIWYG look when using the new drawing package. The Port Hedland scope of work required additional functionality not inherent in Citect for Windows, but due to the versatile nature of the software (in particular by the use of Cicode) many additional features were programmed.

Version 3 and 4

Version 3 of Citect for Windows was developed to build in much of the functionality that previously had to be programmed, such as indication of a communications failure to any programmable electronic device displaying real-time data. While version 2 tended to be a bit unstable, version 3 was quite robust. Version 4 was the same as Version 3 but ported to suit the 32 bit platform of Windows NT.

Version 5 and 6

At this time Citect for Windows had the dominant market share of PC based operator interface software but new competitor software was catching up to the features and functionality of Citect and gaining in popularity. Citect began to focus more on remaining competitive; version 5 was released containing mainly features aimed at keeping the software at the leading edge of the market. Version 6 continued this trend and included more SCADA-like functionality in addition to the poll-based real-time control system that still remains the core of the Citect software today.

Version 7

Version 7 was released in August 2007 and currently is the latest version of CitectSCADA.

CitectSCADA

Screenshot of the steel mill demo in CitectSCADA V7.0

CitectSCADA is a HMI / SCADA software package controlling PLCs.

Cicode

Cicode is a programming language used by Citect SCADA software. The structure and syntax of Cicode is very similar to that of the Pascal programming language, the main difference being that it does not include pointers and associated concepts. Citect provides a rich programming API that includes sophisticated programming constructs such as concurrent tasks and semaphores.

A Cicode sample is shown below. The function is used to log information to a file.

FUNCTION I0_Trace(STRING sPrompt)

   INT    hDev;
   INT    hTime;
   STRING sText;

   IF hTraceOn THEN
      IF (StrLeft(sPrompt, StrLength(sMask)) = sMask) THEN
         TraceMsg(sPrompt);

         hTime = TimeCurrent();
         sText = TimeToStr(hTime, 2)+" "+TimeToStr(hTime, 1)+" "+sPrompt;

         SemWait(hDebugSem, 10);
         FileWriteLn(hDebugFile, sText);
         SemSignal(hDebugSem);
      END
   END
END