View previous topic :: View next topic |
Author |
Message |
f20flyer
Joined: 03 Jan 2009 Posts: 3
|
Newbie Question re MODBUS over USB |
Posted: Sat Jan 03, 2009 7:00 pm |
|
|
Hi,
I am contemplating buying the CCS compiler to enable me to complete a project I have. However, I have some questions regarding using MODBUS over USB, and whilst I program in C and have used the 8 bit 16F series PICs, I have little or no experience using the 18F4550, or writing for MODBUS or USB.
In comparing the compilers ( HI-TECH, CCS etc ) I noticed that the CCS version supports both MODBUS and USB.......BUT, are there examples showing how to run MODBUS over USB ?
In my project I have to link an industrial control interface to a PC running an application ( on Win XP ) that acts as a MODBUS slave and requests data from the master via a COM port.
I am assuming that if I use CCS and use the CDC USB code version I can effectively make the USB PIC device appear to be a virtual COM port.
Can I then "overlay" the MODBUS onto the USB to send / receive the data ? Is this supported ? If not, how much re writing am I going to have to do in terms of either the USB or MODBUS code ? Or is it a complete waste of effort ?
Thanks in advance, and Happy New Year
TK |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
|
Posted: Sat Jan 03, 2009 8:22 pm |
|
|
MODBUS is a communications protocol and USB is a signaling standard.
MODBUS can be implemented over USB, RS232, RS485, TCP/IP, CAN,
Devicenet etc.
So, the answer is yes, it can be done. The example is set up for use on
RS232/RS485 but it can be rewritten to use USB. Using a USB capable PIC
(i.e 18F4550) would make the change pretty simple. |
|
|
f20flyer
Joined: 03 Jan 2009 Posts: 3
|
|
Posted: Sat Jan 03, 2009 8:46 pm |
|
|
Hi, Thanks for the response.
When you say "pretty easy" to modify, do you mean for a newbie to CCS / USB / MODBUS, or easy for an experienced programmer ?
My experience is mainly in hardware, with the odd embedded project thrown in for good measure. My last serious work related embedded project was 15 years ago using the 8051.
From what I can see of the code snipets on the forum, the people who have done something similar, are at a much higher experience level than me!
My PIC experience is mainly in the hobby arena, so you can understand my caution with regard to this.
Thanks
TK |
|
|
dyeatman
Joined: 06 Sep 2003 Posts: 1934 Location: Norman, OK
|
|
Posted: Sat Jan 03, 2009 9:31 pm |
|
|
It would take someone fairly experienced with C programming and a good knowledge of PICs. For a "newbie" to PIC C embedded programming it may be more than you would want to tackle expecially if this is a project for school or something similar. It would take some fairly significant changes to the existing driver code. Actually, implementing the USB would likely be the hardest part. |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Sun Jan 04, 2009 6:22 am |
|
|
Basically, you can regard the CDC driver as existing communbication channel with a well defined interface. The CCS supplied MODBUS example has to be modified in part, e. g. the timeout has to be redefined (or simply omitted). As modbus.c is including the UART RX interrupt, the resepective parts have to be modfied. The example code also has some bugs, so you should have basic knowledge of the MODBUS protocol to be able to correct them.
The other option is not to use the existing MODBUS code and rewrite the MODBUS interface from the scratch. If you have a working MODBUS code from another project, it may be meaningful. |
|
|
f20flyer
Joined: 03 Jan 2009 Posts: 3
|
|
Posted: Sun Jan 04, 2009 6:40 am |
|
|
Hi, Thanks for this.
Unfortunately, I have no other option but to use MODBUS and USB. The PC Program interface is fixed with regard to MODBUS, and other parts of the program will be developed to rx/tx data via MODBUS too.
Has anyone on the forum "done" MODBUS over USB ? Code snips, ideas ? Have CCS updated the MODBUS.c program to remove bugs ?
Thanks
TK |
|
|
|