All features of TMCM-DLL become features of your own software through a DLL
interface. It saves time in programming.
Those, who do not want to create their own computer programs, can use TMCM-DLL in its
"EXE" form.
It allows fast learning, prototyping, and troubleshooting. It helps even those who do create their own computer programs.
So it is of a benefit to have the software as early as possible.
If you commit to buying from me hardware, I may provide the software even before you buy. Negotiation is easy.
Some people do readily understand the benefits of a ready control software, made by an expert on the device... Some need explanation. For the time being I will refrain from further formal descriptions. Below you find parts of discussions with various potential users.
Michael:
I have no any idea, how your DLL can help me (or what a DLLL is)
I already wrote you.
You just forgot.
I described my DLL on the Forum here:
http://www.trinamic.com/ttdg/viewtopic.php?t=30
I posted the article long ago. Since then I already extended the software. See the list of extensions below. I am blocked on the forum,
so I can't update the article. Still it gives a good idea of the functions in TMCM-DLL, and its GUI.
A Dynamic Link Library (DLL) is a Windows term for a collection of functions compiled in a "*.DLL" file. A "*.DLL" file is a form of an executable file. Windows does not allow to run such file directly. Usually you write a program, which runs (calls) certain functions, which are contained in the file. You may call such function from any software. See the sample list of software below.
Certain knowledge about the functions is required. But clever programmers may design them in a way, which is easy to understand and use. I am one such clever programmer. The programmer at least makes the calling conventions convenient for a user of a particular software package.
I work freelance. I may adapt it even for a particular user.
Below I provide a sample list of software, for which samples are available, or will be available, in order to access my TMCM-DLL software and its GUI.
The GUI is cramped with texts of instant help. Some extra help is located in additional accompanying files. Because TMCM-DLL is a learning tool, you first learn its functions through the GUI. Later you access them via a "*.DLL" with confidence that you know what they do.
The TMCM-DLL will not help you, if all you do is send a command,
receive a reply, and do nothing with the reply. Because there's nothing else to do by definition.
But I am deceiving you... It could actually help you even with this seemingly dumb task.
Because there are a few pitfalls even with it. My software works them out in your stead.
This does not mean that the operation is obscure. You still may learn it, using my software, when you have time.
But initially you just want to build a quick prototype.
By buying my software you do not relinquish your right to develop your own source code "in house".
You do not yield to me the control over your code.
On the contrary: you obtain a tool for creation of code.
My DLL and your source code may coexist. You may use its features for prototyping of your code.
You may use the complex features, like macros, or simple ones, like wrapping (see below).
If your code ever replaces mine entirely, even then my tool proves useful.
Alternatively, you may choose to stay with my software, and not to develop your own.
The more complex task you have, the more help you get from my software.
It helps you to study the controller, and its capabilities. Help comes not just from
the software... I provide it too...
The software is even of more help, if you want extra features, which I constantly add.
For example, you may use the "TMCM-Loader" software with your customers,
if any buys a motorized system from you.
In the same way I may use this small software with you - my user -, so I can troubleshoot
your controller, while you prototype your application.
TMCM-DLL has the same troubleshooting functionality. Just its
GUI is designed for experienced users.
In comparison, TMCM-Loader is for complete dummies - they do not even know
what it does.
If the system, which you sell, constitutes a part of a greater system,
I can make programmatic extensions to provide integrated troubleshooting of all related parts,
in a single piece of software - the TMCM-Loader.
Similar adaptation I can do with the main TMCM-DLL,
if you decide to resell it to your users.
My software served not just my customers. It served as a tool for me as well.
It is this software of mine, which helped me to study the modules of Trinamic in depth.
Using it, I discovered lots of bugs, peculiarities of behaviour, issues with dynamics...
That's how I compiled all my bugs and suggestions. Without it this would be mostly impossible.
Consider, for example, how could you connect programmatically to a TMCL-IDE.
Do not even try... There's no way.
How could you program (automate) TMCL-IDE to perform certain tasks? Again - no way.
You have to create your own program in Visual Basic (VB), or other compiler.
Using TMCM-DLL you could both explore a module, program the module, and program the computer (create computer programs) without using any extra software or compiler like VB. Then you implement in VB only the top level of your code, which actually does what you are concerned with - imaging, presentation, calculations, etc.
Suppose you lack the skills for a certain programming task...
Then simply ask me to extend the TMCM-DLL, or to create
a new DLL, or entire new software, not even necessarily
integrated with TMCM-DLL.
The TMCM-DLL is not finished. Neither it is fixed.
As I mentioned above, when you buy it, you buy updates and support as well.
Maybe you still would need it...
This depends on what do you want to do. TMCL-IDE allows only to create standalone mode
programs for a TMCL FirmWare.
It can also run commands in direct mode. But we can't call them "programs".
Because you don't have much control over them. The only control you have is to send
the commands dumbly one after another.
If you need the software to make decisions (like waiting for arrival to a target position),
then you can't do it in TMCL-IDE. It can't make decisions. With it you need to upload a "TMCL" program for standalone execution in a module.
There the commands can make decisions.
If you do it once, then TMCL-IDE is fine.
But if you have to upload the program every time, then you destroy the module,
because its non-volatile memory EEPROM has a limit of about 100000 writes,
after which it wears out.
For a variable code, it is more efficient to run it in direct mode using a computer program.
In this sense TMCL-IDE is not a computer program.
TMCM-DLL - is.
In it you can create and run programs in "TMCL with macros".
They may run on your computer. Not just on a module.
Here, by efficiency I mean a conveniece. It is important during prototyping.
Of course a standalone mode is more efficient in terms of swiftness of execution,
because it eliminates a communication line (RS232, RS485, USB, CAN).
You can still address the issue with swiftness, at least in some cases, by mixing the modes of execution.
TMCM-DLL can combine (mix) standalone mode with direct mode.
TMCL-IDE - can't.
You launch a program in standalone mode. It runs in a module.
Then you run another program in TMCM-DLL. The latter may query or wait for the module
at any time. It can also use notifications from standalone commands "UF1
", or "Notify on arrival
".
By the way, the function "UF1
" is my invention. Trinamic has introduced it by my suggestion. "Notify on arrival
"
is a similar function. It is more specialized. They introduced it later.
Seems like not anyone could do it. Have you taken a look at Trinamic support Forum?
Without my articles the Forum would become shallow. I did it... nobody else did.
Similarly I could characterize my software.
Consider this topic:
http://www.trinamic.com/ttdg/viewtopic.php?t=263
Initially it had 3 pages. Mostly it was filled with my articles (10 pieces).
On December 13th, 2007 Trinamic wrote me a nasty letter of betrayal.
I immediately proceeded to remove my articles. In total I removed only 20 articles.
The next day I intended to remove the rest. But Trinamic blocked my profile by then.
257 of my articles remain.
Also remain on the forum some of the removed articles as empty remainders.
Technically I cannot remove an article. I can only remove its content.
Trinamic removed the empty remainders from the article #263 later, when they discovered the content is gone.
Now you may appreciate for yourself how empty the topic has become without me:
http://www.trinamic.com/ttdg/phpBB3/viewtopic.php?t=263
Without my knowledge TMCM-DLL could not be created, and maintained.
So, my support is essential in the offer.
Suppose TriTanic manages to create a TMCM-DLL... - The same thing as mine...
But as it appears, they would not have the knowledge to extend it properly.
So, although still quite useful, it soon might become limited.
And of course they would not create it in the first place.
So, it does matter not only what is created, but also who creates the same thing.
In theory TMCL-IDE may provide the same features as TMCM-DLL.
But since about 8 years of conception it still does not, and probably will not,
unless TriTanic plagiarizes me. ... Which is quite plausible, given they still have a copy from me free.
Even now that I have revealed the description of my software, you might imagine,
that you simply take it up as a technical task, and implement it in your own software.
I call this type of plagiarism: "plagiarism by mimicking".
You would still spend huge time trying to mimic it... Yet you would not nearly get all
the functionality. Especially that I have deliberately withheld specifics.
The description is still vague.
And why plagiarize?.. You simply may buy it. Consider that I have invested 2 years into it.
You would invest even more on a far lesser thing.
It is better for everyone to simply offer me some kind of financial deal, which suits both of us.
See about pricing.
I already mentioned above that you can't program the TMCL-IDE. You also can't mix modes. It is passive.
You can program my TMCM-DLL. It is active. It can substitute a computer program of a user. In some cases you don't have to create your own programs. In other cases you create just your own unique bit, and connect it to TMCM-DLL.
TMCM-DLL substitutes TMCL-IDE in many respects. But this is not the purpose.
The purpose is to have a tool for learning and prototyping. Also a convenient DLL.
TMCL-IDE still has some features, which are not present in TMCM-DLL.
But they are rarely used. Some are even useless, or poor quality anyway.
TMCM-DLL complements TMCL-IDE in this respect.
Previously you could upload updated FirmWare to TMCM only through TMCL-IDE.
But now my TMCM-DLL also does this. Now there's less in TMCL-IDE,
which you don't get from my software.
You still could combine both pieces of software:
For some features, which you need rarely, you would use TMCL-IDE.
And for the main part of work you would use TMCM-DLL.
A bit more insight into the comparison, and comparison to some software from another distributor of Trinamic
is here:
http://www.trinamic.com/ttdg/viewtopic.php?t=845
Since the article was written, the function of interpolation is already implemented.
By the way, this article was my last.
A few minutes later Trinamic wrote me a nasty letter of betrayal.
Patrick wrote about an evaluation version of TMCM-DLL:
Your software is great.
In the most things it is better than the TMCL-IDE.
Only the use of labels I miss in your software.
The evaluation version ignores labels.
In a commercial version I have added support for "backwards" labels already.
"Forward" labels will come later. "Forward" means ahead of a jump.
But TMCM-DLL is a binary tool first of all.
So it does not show not only labels, but comments too.
Hence you may better use TMCL-IDE to compile text into binary code, and transfer it to TMCM-DLL.
Gao:
Some customers need interpolation. But TMCM can not provide.
TMCM can in fact do some interpolation.
You simply have to program a fixed path by yourself.
My software "TMCM-DLL" may help do it. It has a functionality of paths.
My software may also drive non-fixed (variable) paths into a controller module.
But then every point of a path needs to be transferred to a module from computer. This is slow.
Special controllers, which have the functionality of paths built in, may of course do paths quicker.
The main question to your customer about the path to be interpolated:
Is it fixed, or not?
Fixed paths can be performed by TMCM as quickly as by special controllers.
In year 2009 I have started to design various custom FirmWare for TMCM.
As usual, I would bundle it, if you buy hardware from me (modules made by Trinamic, or others).
You may buy it separately as well. But then you have to pay something to me, unless now or later you buy some hardware,
with which to bundle.
In partnership with one of my customers, we developed another kind of interpolation. It does not utilize custom FirmWare. The principle of operation is the same: you define points, and velocities between them. The software feeds them to controller gradually. Controller moves (interpolates, produces microsteps) between the points. Computer does not have to drive every pixel. Controller does this. Computer only defines major waypoins.
In year 2009 there was another user on the Forum - Thomas Linden. He tried to learn how to draw circles with TMCL:
http://www.trinamic.com/ttdg/phpBB3/viewtopic.php?t=1589
"Circle" translates as "kreis" in German.
I tried to post a reply that my software TMCM-DLL already makes circles, and other shapes (see above).
Trinamic blocked my post, and instead wrote that this is impossible.
I tried to post again that my solution is readily available, and it may be free.
Trinamic again blocked it. Instead, they wrote that a ready solution
is available from... another distributor. - Of course that is not me. And the statement, which
promotes another distributor, may not even be true.
I write more about this here.
TMCM-DLL is not necessary, and cannot help you only in one case:
if you stopped all development in TMCL,
and stowed the stuff away into a dark closet.
Such may be the case, described above, where you use
TMCL-IDE to upload a standalone program just once.
If you have already done the prototyping, and you intend to forget all afterwards, then you don't need my software.
But if you are just starting to learn... Or if there is a chance that you return to the project later...
Then TMCM-DLL is handy. It allows quick exploration,
quick troubleshooting, quick learning, quick reminder of forgotten meaning,
and behaviour of commands and parameters...
You may still not want to spend money on my software...
You may rather spend huge time on "reinventing the wheel"... You may have plenty of time on your hands, and few money...
That's fine...
Those people, for whom time is not money, may still acquire my software.
They obviously still buy hardware from someone...
Buy the hardware from me, and I may bundle the software.
You don't even have to buy a module made necessarily by Trinamic...
As I mentioned, I can adapt my software to any other hardware.
I also supply various equipment, some of which is not electronics at all.
- Mechanical drives, for example. See my offer.
Michael:
Whenever I read about your DLL, these descriptions give me no idea or imagination
how the workflow looks for me. No any imagination.
Maybe yours is the case where you do not need my software indeed. Hence no imagination.
I have mentioned such cases just above.
Maybe you have no money, and lots of spare time...
... Strange:
but you do have the money for expensive hardware...
And you still do not have the time to learn all by yourself... you still came to the support forum,
and to me, for free advice. My software is part of that support.
It is a ticket to my support too. See about pricing.
Another case: maybe you have just finished your prototype, and do not intend to return to it later...
In other cases you do need the software. Remember that it is worth 2 years of development.
Can you afford such a long time to invest?
All developers eventually do spend a year or two on software for TMCM.
Initially they are in denial. But inevitably this is what they just run in to.
No imagination? And you call yourself an engineer?
There's no particular work-flow in TMCM-DLL.
It is a tool, like any Integrated Development Environment (IDE).
Unlike any IDE, it provides immediate access to a controller.
You use parts of the software intuitively. You may combine them into programs (with macros). Or you may explore them individually.
For example, you may continuously watch a parameter like "current position" even during execution.
Without TMCM-DLL you would have to devise a lot of code by yourself.
In TMCL-IDE this is impossible.
Michael:
do you have a pdf with some screenshots for visual explanation of the benefits?
The screen-shot is one window, from which you have a view and control
of the whole module, and your code. It also contains readily available indicators
of status, instant help, and some extra gadgets, which you would have hard time
in programming on your own.
... All those features help you create your programs both as "TMCL", and as "TMCL with macros".
If you are serious about buying it, I may send you a trial. It would be a live screen-shot. See about pricing.
The TMCM-DLL is like a LEGO bricks for children...
It is like WORD.EXE with "Visual Basic" for text editors, and writers...
It is like a self filling trough for corrupt bureaucrats, and their puppets...
Because you can program the TMCM-DLL, it becomes your user software.
Or it can be part of such, as a DLL.
Just take it, and execute parts of it, like LEGO. All "bricks" are
pre-connected, preprogrammed.
There's no magic wand though.
A user still has to compose programs, and think.
But it is easier, and it works like a user program. Not like a dumb composer of text (text processor).
For example, instead of writing a Visual Basic code, you simply compose code
in GUI of TMCM-DLL.
My software has macros. So it can work as a user program.
This is very different to TMCL-IDE. Which can only send, or upload
TMCL commands to a module.
The emphasis in TMCM-DLL is on binary operation, and on making the controller operational.
So, if you prefer text, you would still have to write your program in a separate composer of text... Or better edit it in some compiler. Compilers display code of programs well formatted, and easily readable. For example, examine the "Visual Basic" editor in "MS Word".
TMCM-DLL can import some text.
It does open binary files. In order to surely transform text to binary
you may better use TMCL-IDE. Compile text into binary code,
and transfer it to TMCM-DLL.
The GUI of the TMCM-DLL allows to write binary programs directly within it, as well.
It is convenient in a way that you immediately learn how each command works.
The programs are in the format of "TMCL with Macros".
The GUI of TMCM-DLL is not
convenient in the way that the program text is contiguous, when displayed. It is not broken
down into logical segments, like icons, notes, or paragraphs of a book.
It can import text. But it strips comments.
On the other hand, the TMCM-DLL software allows to keep several blocks of code.
You may separate them logically. You may combine them at will into a single program.
Each block may be named individually, like functions.
This is less convenient than a text format. Still this is useful in debugging,
and prototyping.
I would improve and extend the behaviour of formats in the future.
As I mentioned. The emphasis now is on making a controller operational,
on implementing a binary operation, which is most effective.
Please note that "binary" does not mean that you see only a mess of zeroes,
and ones on screen.
No... You see code as comprehensible text (mnemonics).
The term "binary" here means an underlying operation, and a lack of freedom in editing,
which you would have with ordinary text.
Michael:
i have some sensors in my concept, on them motors react ... and some mathematical crunchings
and dip switch looks, as i can preselect some 'characteristics' by these dip.switches.
Like LEGO bricks, my software provides you with ready to use features, and pieces.
Consider its GUI, and various macros.
You combine and run them directly within TMCM-DLL.
If they are not enough, you connect to the TMCM-DLL from Visual Basic,
and do extra number crunching on your own.
TMCM-DLL does the low level technical work.
You do the high level brain work.
Again and again...: if you do not have any expertise in programming, you may ask me to make
custom extensions. The price does include a ticket to custom programming. See about pricing below.
Ask for custom extension to the DLL.
So it does more on your behalf. I can add new macros to handle your task better.
You would then use the macros on your own accord, like extra LEGO bricks.
Alternatively, you may ask for a complete custom program.
The commands, which you send, may be custom. They may not exist in TMCL. That's fine as long as you need it so. My software does not preclude you from this. It gives you the utmost control.
My software may sound advanced. And perhaps it is.
Yet it does also allow to simply forward commands from your software to a controller, and back.
This is called wrapping - a functionality of a wrapper driver.
"Wrapping" means that the sole role of a function is to call another one, simply passing the arguments, if any.
A "wrapper" acts as a mere translation between various programming languages.
Dia:
What is the difference between the DLL that Trinamic is providing (with TMCM610) and your DLL?
Trinamic provides "wrapper" DLLs with any module. They are not limited to TMCM610.
My software also works with any module (including TMCM303, TMCM610, TMCM351; also TMCM for BLDC, and piezo).
Since October 2007 I have extended my software.
On the page, which you are reading now, you find the description of the software,
and the latest extensions. It complements the original description at:
http://www.trinamic.com/ttdg/viewtopic.php?t=30
Both articles explain the difference between a "wrapper" DLL, and TMCM-DLL.
For example, my DLL has a GUI, and macros, which may replace the need for your own software completely.
"Wrappers" never have this.
"Wrappers" only "wrap" certain functions, or actions. They rarely provide any greater value.
See the list of "wrapper" functions here:
http://www.trinamic.com/ttdg/viewtopic.php?t=296
My DLL allows direct access to a module with TMCL commands.
The "wrapper" DLL from Trinamic only contains task specific functions.
Consider: "TMCLGetInput(...)
"
Why use this command? You would not understand what it does, unless you learn TMCL.
My DLL simply allows: TMCM_Command(GIO, x, x, x)
Using my DLL you may perform any command in any sequence. Simultaneously you learn the underlying TMC language (TMCL).
The "wrapper" DLL does not have such command. A "wrapper" is fixed.
So, you are still bound to bypass it, when you need to perform custom commands.
When you bypass a DLL, you "reinvent the wheel".
My DLL avoids that. It serves your commands in any custom sequence, and in a uniform manner.
Consider the other two functions in my DLL.
The complete list is as follows:
TMCM_Command(Command, Type, Axis, Value)
;
TMCM_Dialog(Parent window)
;
TMCM_Run(Program)
.
I list them here:
http://www.trinamic.com/ttdg/viewtopic.php?t=30
The "wrapper" DLLs are too small. You still are supposed to do the bulk
of work by yourself.
My DLL has achieved the most of low level work, so you concentrate on the main logic.
DLL from Trinamic is a mere wrapper. No function at all.
You can make the same on your own in a few minutes.
My TMCM-DLL performs several checks in background.
Some of them you can see occasionally.
Some you can not see this in it (in for of EXE, or DLL), or in the evaluation version (EXE only).
Some of them I do not mention in documentation.
Consider this topic:
http://www.trinamic.com/ttdg/viewtopic.php?t=1470
Olav Kahlbaum:
maybe the answer telegramme from the module has not reached the PC yet (especially when using the RS232 version of the DLL)
Oh dear me! My software works far better! There would be no problems like this.
Maybe other problems... But not as trivial.
My software does what has to be done... and far more efficiently. You only do the rest.
Still, Trinamic staunchly conceals me, and my software from users.
Thus they cause damage to users.
Jeff:
We have already deployed our application using the basic TMCL software from Trinamic,
as your software did not provide any features we needed that were beyond the features provided
by their software.
He wrote this after he asked me for my software, and received the version for evaluation.
Why ask then?
He knew in advance that a DLL by Trinamic exists, and how it compares to mine.
I explain the difference on this Web page above.
He refused to buy, and claimed that he deleted the software.
It is possible that he retained it.
The version for evaluation is an EXE.
He never received it in form of a DLL.
He could not really test, and compare a DLL by Trinamic to my EXE, contrary to what he claims.
The evaluation only proves that it works. You know in advance what it does.
Jeff:
The main purpose to consider your DLL, was to utilize this
within our own dedicated HMI code. This was not required.
He asked for my TMCM-DLL, and assured that he is prepared to pay.
He evaluated the software with the sole aim to buy it.
Not just to think about using it at all.
He does not write "we changed out minds".
He writes: purpose
. This means "required".
But in the next sentence: not required
.
In the same manner he could go to a university, learn everything,
then refuse to pay, and justify oneself: This was not required.
Vincent:
They could say me that you are selling a DLL. I would win one week.
Your software works great, you are a magician !!!!!
He means that Trinamic keeps me a secret. They harm users.
By 1 week he means not the time that my software saves. It saves a lot more time. He means the time it took him to find me, and my help.
And indeed, after he wrote that, I did help him solve a hopeless situation. - Urgently, in just a few hours; on weekend, when others wee not working, and would not help, even if they had the wits to.
He was in such a hurry that he forgot his dire promise to buy my software, or to buy hardware
from me, or to pay just anything. He vanished. Perhaps he forgot to come back.
But he did not forget to take an evaluation version of my software. He still uses it.
If you are serious about buying it, I may send you a trial.
If you don't like it, you do not buy it.
You may defer payment until the software works the way you want.
As I write below, the price may include a subscription fee (a ticket)
to extensions, custom programming, and support.
I may bundle my software partially, or fully, if you buy some hardware from me.
See my offer.
You may claim a bundle (your money back) even if you buy hardware intermittently,
in installments. After you buy about a 10th controller from me, I refund you for software completely.
For example, you may buy one today, and 9 pieces a year later. You still qualify for a bundle.
In the story about my relations with Trinamic I provide a suggestion on how could you help me in that ordeal.
The essence is as follows.
If you do not want to buy from me directly, then you may still bargain with your distributor.
Ask them to bundle my services with their's.
They have benefited from my work. They may agree to pay me.
If you buy directly from Trinamic, then please bargain with Trinamic.