Sleepy Wombat

CX-Programmer improvement requests

166 posts in this topic

As I've understood it, the displayed values are only read occasionly (I've seen update times in the second range - slow serial link + lots of data to update). That means you only see what value the signal has part of the time, and then at the end of the PLC cycle. To make the display show the memory's value at EXACTLY that point of execution would demand a huge hardware design (probably not impossible but certainly improbable, and I suppose it would force Omron to totally redesign hardware as well as communication protocols). This phenomenon gets painfully obvious if you use the internal flags (P_ER, P_EQ, P_LT, P_GT, P_CY, and probably a few obscure ones). They never show up correctly. Neither do "work" memories being used as temporary storage places all over the program.

Share this post


Link to post
Share on other sites
Attached is a piccy of what happens when a jump is live in monitor mode: Here my first rung is jumping over the next section of code - as you can see the activity trap in the 2nd rung (47) shows no action on its output and therefore the jump is occuring ok. And of course the JMP box should be Green as its a live 'output'? (JMP's when input is OFF) What it should do is show no activity on the rungs after the jump, after all the jump is live, it's a proper jump to the next JME and not one that makes the rungs following NOP. I don't want to see any green bits except the status of the bits, I dont want to see green lines going across the screen as in rungs 2&3 (47&49) as to me they look like 'activity' where I dont want it. If it were a JMP0 that causes NOP's for each rung then what I see is fine!? Or am I going nuts??? Edited by Mark The Spark

Share this post


Link to post
Share on other sites
Yes. I don't know. The senior Omron contractors on the site tell me they don't do it because it is not straight forward in CXP (v1.1)

Share this post


Link to post
Share on other sites
Hello dellae, To 'upload' the program (transfer the program from PLC to CX-Programmer), simply hit the toolbar button -"Transfer from PLC". Or via the menu - "PLC \ Transfer \ From PLC...". Or keyboard - "Ctrl + Shift + T". It really is that simple. The one thing that you won't get uploaded (using v1.1), are the symbol names / comments and rung comments etc. (This is probably why your contractors don't do it.). If you are looking for improvements to CX-Programmer, I would suggest that the first improvement you can make is get an up to date version of CX-P. (The later versions do allow transfer of symbols and comments). The latest version is v6.1, with version 7 not far off. v1.1 is extremely old, and quite limited compared to the later versions. Regards anonymous

Share this post


Link to post
Share on other sites
Here are my suggestions, I've sent these to Omron before but have not recieved any response. Suggestions for improvements to CxProgrammer: 1) When using program compare with symbols that are auto addressed the compare flags them as being different when they are the same symbol but have different addresses. Can an option to the compare be added to ignore different addresses if the symbol is identical? 2) When Compiling the program, a warning for duplicate outputs are given when using a "SET" & "RESET" for the same output. Also a warning is given for an "=" instruction when the data is BCD. Is there a replacement instruction for comparing a BCD # to a constant? Can this be changed so these do not give a warning or have some compile options to ignore certain warning 3) Index registers and Data registers do not show up in the address reference window, cannot be searched for, and cannot be looked at in the watch window. I've been told this is to improve the speed. It should only affect speed while you are looking at these and not normal operation. This makes it impossible to debug the use of IR and DR registers thus restricting the benefit of using them in a program compared to using Dm memory for doing indirect addressing. 4) Add shortcuts to toggle arising edge or falling edge trigger for contacts similar to how the "/" key functions on toggling a NO to NC contact. I forgot about the keyboard mapping, great feature that all programs should have. Edited by Wulfgar

Share this post


Link to post
Share on other sites
Wulfgar, You can assign keyboard shortcuts to perform this operation - tools - keyboard mapping. I use shift-u for diff up, shift-d for diff down and shift-n for no differentiation. Nibroc

Share this post


Link to post
Share on other sites
Another Request -- PLC Memory Component Table Editor. You can cut and paste values from Excel, however the data must be formatted into 10 columns in Excel prior to a cut and paste. We need an option to display different numbers of columns to improve flexibility, as this can be a very efficient way to preset bulk memory addresses. Nibroc

Share this post


Link to post
Share on other sites
I would like to be able to use the compile error to not tell me that there are duplicate outputs but that there is a SET without a RSET - or a SET with several RSET.

Share this post


Link to post
Share on other sites
Heres another simple editting enhancement... When adding symbols if you hit the space bar while enetering the Name (symbol name) that automatically underscores are placed in the name to save you from having to use the SHIFT underscore combo...AB had this and i found it cool.

Share this post


Link to post
Share on other sites
I, for one, do a lot of math functions within ladder. What I would really LOVE to do is be able to add, subtract, multiply, and divide in DECIMAL Converting number formats back and forth often times gets confusing and conversions get missed. It's also frustrating because my brain thinks in base-10, not base-16 so I usually end up using some hex to decimal converter just to verify simple math. Tig

Share this post


Link to post
Share on other sites
Improvements.... #1 The ability to use MY.opt file instead of the one the last programmer saved. #2 Free form comments that can be dropped anywhere on a ladder diagram (like a sticky note) #3 Free floating bookmark windows where one can drag and drop an address or program location so one could jump around a large program without having to try and remember every area of interest. There should be the ability to set up several different sets of bookmarks to aid in troubleshooting different sections of code. #4 The ability to directly enter and display i/o names everywhere, i.e. in data trace. #5 Each open window should have a 'tab' that is always visible so one could move easily between them. #6 The ability to disable functionality. Allow maintenance personnel to monitor programs and force i/o but not to make program changes. This could be setup using a password. All unenabled function icons should disappear so the interface does not look so busy. #7 Optionally, compare PC program with the one in the PLC in the background as soon as one connects to the machine. #8 When using the address reference tool, if a PLC is not selected from the program tree, automatically uses the PLC that is being monitored in the top window. #9 When connecting to a PLC that is different from the one defined in the project, offer a "Connect Anyway" option. #10 Provide a "backup and restore" everything option. This would create a single file that has the program, HR, DM, and EM data, special i/o setup info, special i/o programming (if available from the com of peripheral port, or across a network). A technician could then backup and restore a PLC into at least some sort of runable condition without have an intimate knowledge of the machine. That's all for the moment. T

Share this post


Link to post
Share on other sites
Like Mitsubishi?

Share this post


Link to post
Share on other sites
Yes, this would be probably the most valuable improvement. BTW, Allen Bradley RSLogix500 features it only partially- this does not work in the search window.

Share this post


Link to post
Share on other sites
That was in Version 1 of CX-Prog...as i remember...

Share this post


Link to post
Share on other sites
Good memory Sleepy! They were replaced by the 'Attached Annotation', whereby each individual element in a rung could have a comment added to it (right click the element and select 'Properties') which is then "attached" to the mnemonic of that element, rather than the address or symbol name. This of course allows (say) address 0.00 to have completely different comments added to it throughout the program. So in effect, they are "free-form comments". Regards anonymous.

Share this post


Link to post
Share on other sites
Also you can use the 'Alt-Enter' keyboard shortcut These annotations are handy ... Nibroc

Share this post


Link to post
Share on other sites
I get around the SET/RESET warnings by using KEEP instructions. It forces you to place the set and reset conditions on the same rung but it eliminates the compiler warnings. Now for my humble requests... 1- STOP CHANGING COM PORT ASSIGNMENTS! I use the Omron USB adapter set to COM4. All of my projects are set to use COM4. If I open a project on a machine that does not have a COM4, CX-P automatically changes the port assignment. No warning, no confirmation dialog. If I close the project without saving, no problema. If I make offline edits and save them I have to change the port assignment back to COM4 in order to connect/download. This is extraordinarily annoying and potentially dangerous. 2- Make BCMP work like BSET or give me a new compare block that does. I need to check ten contiguous registers and set a bit if they all match a certain value. I can set the value of those ten registers using BSET but I can't confirm the change without building a cascaded structure of CMPs. 3- How about letting me edit symbol comments while online from the symbol table (ALT-G). Right now changing symbol comments while online requires finding a ladder element with the target address, starting an online edit, editing the comment, and cancelling the edit. Very time consuming. I can think of more but they are too minor to list here. Thanks to everyone who contributes to this list. CX-P will be much better if Omron acts on it. Edited by Gary.Johnson

Share this post


Link to post
Share on other sites
You've got a point there Gary. I was thinking it would be ideal if one could save "connection profiles". Sometimes I connect using modem at the office, locally I use controller link, when necessary toolbus. But all the same program with only one connection setup. If I could store the settings under a profile like "office modem", "local controller link" and "local toolbus", that would be wonderful. Than you would never have to set FINS adresses again, selecting the modem and looking up the tel number etc. I like this thread a lot but let's hope big brother is watching....

Share this post


Link to post
Share on other sites
Following suggestions are not directly for CX-Programmer but CS1/CJ1 PLCs in general 1) As a minimum, all the string / ASCII processing instructions should be made available in Structured Text. It will be better if other ladder instructions are also made available. 2) The Email in ETN21 shall be configurable properly in cases where the SMTP/POP Server requires authentication. 3) The FWRT instruction should allow plain text data (prepared by using string processing instructions) to be stored as .TXT or .CSV file. Presently it allows to store this type of data in only .IOM file where it adds some 48 bytes binary header. Also presently there is no provision to store real, double or string data in .CSV file. 4) Many Omron competitors offer Web server in PLC. It would be very useful if a lightweight Web Server is added to CS1W-ETN21 and CJ1W-ETN21. 5) User-defined Datatype (like AB Controllogix) will be very useful addition for data processing application 6) It should be possible to set some area of DM and EM as read-only. C Series PLCs had read-only DM area which we were using to store critical data like alarm setpoints, fixed strings, APR Tables etc. SVN

Share this post


Link to post
Share on other sites
Gary, Try the TCMP instruction. it will set a bit in the result word for each register that matches the source value. BCMP instruction is really for checking that the value falls within a range. I know this is a couple of weeks "late", just checked the thread today. Hope this will help.

Share this post


Link to post
Share on other sites
.... more suggestions for CS1 / CJ1 ... Why not allow all memory areas to be addressed as bits ? Eg DM 1000.01 ? ... Nibroc Edited by Nibroc

Share this post


Link to post
Share on other sites
Having DM0 to DM32767 as WORDS is old fashioned - INT is one WORD, float is two, DINT is two. D101...what is it? INT? Part of a double? Giving a programmer a massive pile of memory with no pre-defined structure makes it akward to structure a program (unless someone can tell me different...) Should take a leaf out of AB's book - either SLC or CLX is better a better addressing method. Call tags whatever you want and let the compiler decide where the memory is. CXP's Automatic Allocation is a poor substitute I'm afraid. And, the 'Help' is rubbish. Tells you half a story for every instruction And, BCD has got to go. Not too keen on Hex, actually. And, what's with 'Binary Add Without Carry' and the other miriad of ways to add (or whatever) two numbers? Just add the numbers, and give me an answer - I'll work out the rest. Wow, thought it was pretty good until just now! Pp

Share this post


Link to post
Share on other sites
Bloody oath its rubbish.....and woeful....thats why i have the digital technical library installed on me comp....

Share this post


Link to post
Share on other sites
How about when putting an SIOU at, say unit 0, CIO 1500... is automatically given appropriate symbols? Pp ps - great thread

Share this post


Link to post
Share on other sites
These instructions are really handy - ths CS and CJ have a great instruction set except that there is no unsigned binary and and subtract. One thing I would like to see is a facility that Mitsubishi have where one can allocate DM (registers) to be retentive or non-retentive. I do have having to write zeros into my maths channels - or use BSET - when I want to clear them. Would rather have a non-retentive (user defined) where when the maths instructions are turned off the memory in that area automatically clears.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now