Search the Community

Showing results for tags 'Citect'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 35 results

  1. Hi, I'm wanting to know from anyone using Citect 7.X and above, about how your systems are set up when using a primary/secondary redundant server setup. With the advice from some consultants I've changed from a couple of stand alone units to a redundant server setup and multiple clients plant wide. There's about 8 PLCs currently with more coming. However it was recommended to split the IO server of Citect over the two physical servers, so that 1 physical server is the Primary IO server for 4 PLCs and secondary server for the other 4, then the other physical server has the same setup just opposite Primary/Secondary setup for the devices of the first physical server. I get that it splits the work load, but our engineering team is updating the servers multiple times a day most days and we will be for at least the next year, I'm finding that this system isn't very friendly constantly shutting down and restarting etc interrupting trending also, and want to switch from this split IO Server setup, to just one server that's primary, one server that's secondary. My Question, is it fine for one physical server to be primary and for how many PLC's? Server is a 6 Core Intel 2011 socket CPU (Not sure on exact specs at this stage). System INFO TAG count is about 5000, and Manufacturing is a slow process so no need for split second updates on anything. about 500 Trends polling every 1 second. Cheers.
  2. Hi team, The installer i am using is an old installer. The guys on site do not wish to upgrade the Servers at this stage (I don't think they will be doing many modifications anyways). It is v7.10r1 SP2/SP3. I cannot seem find the SP2 installer on the net for Citect 7.10, at least Schneider does not seem to supply it? (screenshot attached). If I install and use SP3 on the engineering workstations, will this still be OK to deploy to the Servers running SP2. I can't really foresee any issues? Cheers.
  3. Hi friends, I have this need to declare a few arrays of string variables and intialize them with a particular value, in Citect. In citect, on the forms for variable declaration, there is a place given for entering the array-size. In the case of other data-types such as INT or REAL, entering a number here will imply that the declared variable is an array with the size mentioned in the Array-size. In the case of string variables, the array size represents the size of the string ie. one element for 2 characters. If we declare the size of the array as an extension of the variable name, such as StrVariable_array[30] then Citect throws up a compile error. We are of course able to declare an array of string variables in the cicode editor, but then this is not 'Global' for use as variable tags. So the question begs.. How do you declare an array of string variables, preferably using local variables. Thanks for looking in, regards and best wishes.
  4. Hi Guys, I wish to know if there is a method by which one can use string substitutions in Cicode functions.. It is a very useful thing, when used with structured tag names. In my current project, there are 200 Energy meters, each having 8 tags, hence 1600 tags. Each group of 8 tags has the same pattern ie <prefix> being the identity of a given meter. <prefix>_Vavg, <prefix>_Iavg, <prefix>_MaxkW, <prefix>_kWh, <prefix>_kVAr, <prefix>_kW, <prefix>_RunHrs I wish to log this data onto a SQL database table named "METER_LOG", carrying out the logging actions for each meter in a record, that has these fields(Columns) |Meter_Id |----|Vavg|---|Iavg|----|MaxkW|----|kWh|----|kVAr|----|kW|----|RunHrs| My goal now to do this in a loop, so that all the logging actions are done with a few lines of code. There is a table-"METER_IDs" that gives the list of all Meter_IDs or <prefix> And the code I wish to implement is a cicode function that would look like this.- It is not correct, I've used genie substitution syntax and that won't work here. FUNCTION LogAllMeters() int hSQL; string %Cur_ID%;// --This is the string that will be substituted in the loop hSQL = SQLConnect("DSN=<DSN_name>; UID =xxxx; PWD=yyyy"); IF hSQL <> -1 THEN Status = SQLExec(hSQL, "SELECT Meter_ID FROM METER_IDs ORDER BY Meter_ID"); IF Status = 0 THEN WHILE SQLNext(hSQL) = 0 DO // --Scan till the end of the list for all meters %Cur_ID% = SQLGetField(hSQL, "Meter_Id"); INSERT Into METER_LOG VALUES ( %Cur_ID%, %Cur_ID%_Vavg, %Cur_ID%_Iavg, %Cur_ID%_MaxkW, %Cur_ID%_kWh, %Cur_ID%-kVAr, %Cur_ID%_kW, %Cur_ID%_RunHrs); END SQLEnd(hSQL); SQLDisconnect(hSQL); END ELSE SQLDisconnect(hSQL); Message("Error", SQLErrMsg(), 48);END//----outer IF End// of FunctionI would greatly appreciate it if someone could guide me with a way to substitute strings so that the structured tags are correctly referenced inside the loop. Thanks a million for looking in.
  5. Hi All, I'm adding a system to my current project which is used to keep product labels correctly moving around the plant (On Screen) and then end up in their correct destination silos and stay there until manually cleared. The labels are determined by referring to an INT in the PLC DM register for that particular part of the plant and then references that to a preset String Variable Tag to display. Now I've made a Genie that is to be attached to each Silo which opens up a small super genie which will just have - a Title, - the label of the current product in the silo(Var Tag), - a label of the previous product to be in that silo (Var Tag), - and a button with a function that I've written to clear that particular label and then store the current label value into the previous product label. The function in the button works fine on it's own but the problem is I'm trying to have it so that I can just pass through the arguments to it from the original genie, but I have had no luck trying to do this. The function in the button is as such: Previous_Label(INT Current_OilCode_tag, STRING Previous_OilCode_tag) <these are the correct data types for these tags as set in citect. Which when I Set it up in the SG is: Previous_Label(?INT 1?, ?STRING 2?) In the genie Itself im using AssMetadataPopUp() and I'm just setting it up in the Metadata Section as: - Name: 1 Value: %Current_OilCode% - Name: 2 Value: %Previous_Oilcode% As said it works if i just set the button up on the Silo Page (Outside of the SuperGenie) and use it there, but having the button in the SuperGenie and trying to pass the Variable Tags into it has been a Nightmare. I should note that I went to the lengths of just Duplicating the button 20 different times and the function also was tweaked to just work for one silo each, then set the Hidden When field to: ?INT 3? <> 1 (For Silo 1 for example) then just having all of the buttons on top of each other in the SG, but much to my frustration this also did not work as all the buttons were hidden, I believe that this is because for ?INT 3? I was simply just typing in 1, not an actual variable tag so I am yet to test this. Hopefully someone here can perhaps spot something I'm doing wrong. Also I can upload the actual codes, I just don't have them on me right now. Many Thanks.
  6. Hi Friends, I am working on a small project that needs to log data from energy-meters (about 200) onto a SQL database. I have written a function for logging in Cicode that is connecting to a DSN with multiple tables. It gets the customer's Id, one by one in a loop from one table assigns the readings, and logs it to another table. Problem observed with my method is that the loop does not move beyond the first entry in the Cust_ID table. I suspect that there may be a need to use different handles for different tables. OR - The TagRead() function is blocking further execution of the loop. PS:- The use of SqlNext(hSql) has worked well in a similar function to load combo-boxes with All Cust_IDs. Something causes the While loop to end Greatly will appreciate any help in resolving the error. PS:- The use of SqlNext(hSql) has worked well in a similar function to load combo-boxes with All Cust_IDs. Something causes the While loop to end Greatly will appreciate any help in resolving the error.
  7. I have 4 General Electric Multilin PQMII-T20-A power quality meters connected on a daisy chain RS485 2 wire half duplex network with baud of 19200. they are addressed as nodes 1,2,4 & 6. the RS485 network is connected to a Modbus Ethernet/RS485 convertor which i have setup with IP 10.15.35.126 for my network, the port used in the convertor documentation is port 502. i need some help to get Citect to pull a tag out of this network. my issue is the comms setup of citect. i have attached my screen shot of citect setup (Citect is V7.2). thanks in advance for any help on this issue.
  8. Hi friends, In genie substitutions For example, in a genie%Tag%_MaxValue, %Tag%_MinValue, %Tag%_PV, are done for subsitution of %Tag% with TIT_101as TIT_101_MaxValue,TIT_101_MinValue, TIT_101_PV . In this example, when the genie is pasted, we give TT_101 as the genie's argument. However, if sTag is a string variable, that can take multiple values, -say TIT_101, TIT_102, TIT_103 I find it does not work. When I try using sTag in the genie, %sTag%_XXX it is not getting accepted. So also referencing the prefix as "%sTag%"_XXX is again useless. What is needed to substitute %Tag% by the value of a string variable? so that the tag name referenced is correctly calculated by concatenation of the prefix? Regards,
  9. OMRON PLC's and CITECT Comunication

    Hi All; I am struggeling to get my CITECT to talk with my CJ1MCPU12 with ETN21 module. I can ping the IP address from the citect PC and also connect CXONE using ethernet with supplied IP Address. I do not have FINSGATEAY installed as the PC is Windows 8 with CITECT 7.4. Any Ideas would be most welcome as I am drawing a blank. My settings are OMRON ETN21 IP: 192.168.0.3 Unit number: 0 Citect SCADA Primary Server IP: 192.168.0.24 Citect.INI [OMFINS] Source = 1/3/0 (not too sure what this should be...) COMMUNICATION settings: [bOARD] Name: BOARD1 Board Type: TCPIP Address: 0 [PORTS] Name: PORT1_BOARD1 Board name: BOARD1 Special Opt: -I192.168.0.3 -P9600 -U [i/O DEVICES] Name: Internal Number: 1 Address: 1/3/0/S Protocol: OMFINS3 Port Name: PORT1_BOARD1 Startup Mode: Primary Prioirity: 1 Memory: True
  10. Dear All, I have a little problem in reading data from Power Meter to Vijeo Citect v6.0 I'm using Schneider PM810MG for Energy reading from Power Meter and for the SCADA I'm using Vijeo Citect v6.0. I can do some simple data reading like current, voltage and the others using variable tags from Vijeo Citect with Data type INT. But i dont know how to read the data for "Real Energy In" since the data range from 0 to 9,999,999,999,999,999. Waiting for all your help soon. Thx. Best Regards, Budiman Chandra