Jump to content

Recommended Posts

Posted (edited)
I have a heap of values being entered into data memories from a screen. These values will be utilised as timer set points. I also have a variety of timer value multipliers. The values being entered are for a total 20 second run time - the multipliers are 2, 3 and 4 to give 40 second, 60 second and 80 second run times. I can set the multiplier easily in a data memory from bit values - multiplier 1, 2, 3 and 4. I would like to be able to multiply the whole table of 40 words by the multiplier instead of having to multiply each value separately - lot of code. There are 2 sets of these so a total of 80 words to multiply. I guess I am looking for a block multiply that works in a similar way to BSET - multiply a range of DMs. Any thoughts at all? I have racked my small brain all day over this one. Hope the thread makes sense. Later I will have another stupid question re calculating percentages for timers - that also may be interesting - but not for now - have to get a job out the door. Edited by BobB
Posted (edited)
Hi Stu Ah!! Data memories and BSET gave it away. CJ2M-CPU33 - same as CJ1M except USB + Ethernet IP. Screen is Beijer 10" sunlight readable - dislike Red Lion immensely. Have had to find some decent bitmaps though - they use the same horrible library as Red Lion. I only use the CJ2, CS1 and CP1 in various forms these days - basically the same instruction set and CX-P. Good software, good hardware, 2 year warranty. I have been unable to figure out a way to block multiply - would sure make my life easier. Pretty good on Omron to be honest but this one had me stumped. The next one will be interesting too - will have to use floating point but FIX truncates the decimal point and the timers only accept decimal or BCD - lose the decimal point - next job though. Regards Bob Edited by BobB
Posted (edited)
Hello Bob I know how much you love function blocks, but there's no better way, I'm afraid! This FB wants the multiplier, the D location of the input table, and the D location of your results table. The D area is implied internally, so it just wants the address. All data types are UINTs, but changing to another is easy. In the example, the input table starts at D0, and the results appear at D40. The multiplier is hard coded as &4; make this your variable. Pp ForBob.cxp Edited by ParaffinPower
Posted
May favourite pastime - thought that would probably be the only way. Thank you.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...