I'm sorry but I am not English and I speack English very bad.
My question is: How connect a PC Embedded to Vending Machine? I know
that exist a protocol MDB that is used by vending machine, but this
conector is different to pc conector (RS232, USB, i2c, etc). Can I
connect a PC Embedded by MDB? How?
Anybody understand me?
Thanks you!
We understand you.
Read the spec to understand what is required to connect.
However, even once you have done the hardware to be able to connect to a
PC's RS232 port you will, more than likely run into the problem of the 9bit
char format not being supported on a std PC serial port.
You can fudge it using the mark/space parity control but it is not very
nice.
Why don't you use ccTalk instead? www.cctalk.org
regards
PhilW
Thanks you.
I dont understand all, what is "ccTalk"??
regards.
Juanma.
Here is a USB to MDB bridge :
http://www.geocities.com/bonusdata/analyzer/mdb_interface/mdb_interface.
htm
(sorry for the spanning)
Here is the protocol :
http://www.vending.org/technical/MDB_3.0.pdf
www.vending.org is where you need to go for any info about MDC/ICP
Thanks you!!
I know this all, but the "USB to MDB" is not a good solution for me,
should be others solutions...
I am interesting in ccTal PhilW but i dont understand how apply this
to the vending machine.
Thanks you.
regards.
If the vending machine does not speak CCTalk then there is no way to
apply it at all, in this case. MDB/ICP is the way you will have to go.
CCTalk was designed more along the lines of gaming systems and MDB was
designed for vending machines and the like. Not that you couldn't use
CCTalk in a vending machine, but MDB was standardized for use in them
(vending machines) long ago.
Oh James Beck, i think that you have reason.
My problem is how comunicate the pc embedded with vending machine with
the protocol MDB... If the unique solution the "MDB --> USB adapter"?
If you sum the price that a pcembedded+adapter ... for one for machine
is very expensive no? it must of having another solution, no?
Thanks you!
regards.
Oh, I see that you understand me :)
I need to create adapter for MDB to any port (serial?) the PC ... it
is difficult? I know computer science, but the electronic... :( any
idea?
Thanks you!
regards.
>
><juanma.f...@gmail.com> wrote in message
>news:c4d5b1b0-ea81-446b...@l64g2000hse.googlegroups.com...
>> Hi!
>>
>> I'm sorry but I am not English and I speack English very bad.
>>
>> My question is: How connect a PC Embedded to Vending Machine? I know
>> that exist a protocol MDB that is used by vending machine, but this
>> conector is different to pc conector (RS232, USB, i2c, etc). Can I
>> connect a PC Embedded by MDB? How?
>>
>> Anybody understand me?
>>
>> Thanks you!
>
>We understand you.
>
>Read the spec to understand what is required to connect.
>
>However, even once you have done the hardware to be able to connect to a
>PC's RS232 port you will, more than likely run into the problem of the 9bit
>char format not being supported on a std PC serial port.
This is the tricky part.
Unless you are prepared to do very low level coding, the only thing I
have found so far is some ethernet to 9bit serial converters done by
Port Box in Prague.
>You can fudge it using the mark/space parity control but it is not very
>nice.
This is OK for slow speeds and as long as you are able to disable the
interrupts.
Paul
> I need to create adapter for MDB to any port (serial?) the PC ... it
> is difficult? I know computer science, but the electronic... :( any
> idea?
How about doing your own MDB-USB adapter using either the FT232 or
related (if it can do 9-bit serial) or some more capable USB
microcontroller.
You could even use a microcontroller as a bridge between 8 and 9 bit
serial.
What you would want to do is check microcontrollor data sheets and
find one with a serial port that can be programmed to 9 bits.
Thanks you!
regards.
An adaptor is not an easy thing to do, simply due to the fact you need to
maintain the timing specifications of the MDB protocol. An adaptor that just
recieves a command from the PC, re-formats it for MDB and then sends it on,
waits for the response and forwards that to the PC will easily break the
timing criteria of the protocol, considering that each char takes 1mS to
transmit or receive.
Concerning USB adaptors. Can be good providing they support, and implement
the mark/space parity support correctly. However, you still have to provide
low level coding to fudge the 9 bits via the mark/space parity. In addition
you will be required to add timing delays to ensure the parity changes are
sent over USB before transmitting the next data or parity change. We have
had success with the CP2102 from silicon Labs. It is sure however, from
experience, that supporting MDB over USB is a lot more painful than a
standard serial port.
Another alternative is to acquire an add-on serial port that natively
supports 9 data bits at the hardware level. Not cheap, hard to find and
expensive.
As for the vending machine implementation, you have not said, but I conclude
that YOUare building the vending machine and YOU therefore have control over
the protocol to use. Unless by some specification requirement that you use
MDB, I see no reason why you cannot use ccTalk. I believe the "protocol" is
purely for internal machine use, aimed at connecting all peripherals to a
host controller, namely your embedded PC. Any external communications is
usually by some other communications link, modem, ethernet, wifi, etc. Why
ccTalk? It's simple and most importantly can be easily supported by any PC
serial port, USB adaptor etc that supports the standard 8bit char length. It
could be any other protocol besides, that uses the 8bit data length as well.
It's just that ccTalk is well documented, well supported and widely used.
We produce products that support both MDB and ccTalk in addition to others.
We much prefer ccTalk for its non requirement of the 9bit data format.
regards
PhilW
Oh, no, I am not a building the vending machine and I haven't control
over the protocol to use, it is the problem. I need use the protocol
standard in the most vending machine, that is, MDB.
Do you understand me PhilW? Sorry for my English.
regards.
Ok, then you have no choice but to write low level code to fudge the 9bit
char by using the mark/space parity control.
You do this by programming the UART 8bit with parity, that makes the 9
bits.
The parity you program to be manually controlled using the mark/space
controls to simulate the ninth bit.
When you sent the first byte of the message, you first make parity to be
Mark, this makes effective 9th bit set = address byte. Send the address
byte.
You then make parity to be Space for remainder of message = 9th bit clear.
To receive a reply just set to space parity and look for parity error for
end of message. Since this is a fudge you will be at risk to
miss-interpreting a real parity error, but that is the consequences of not
having full 9 bit support in hardware.
Anyhow good luck. It can be done, I know because we support it. It's just
not an ideal solution. Until you really know what you doing in it's
implementation, stay away from virtual serial ports over USB because they do
not act the same as a standard serial port. They move data in blocks and
will not maintain the parity manipulation synchronously with the data bytes.
They will need delays to allow the control commands to transfer before
sending the data etc. This will slow down your effective data rate under
MDB.
Also you should make an investment in a good serial coms monitor tool, that
can capture and timestamp every event on the link between the host and the
device. It will pay for itself easily in the time you save discovering what
is really happening in the transfer. We used a tool called "ViewComm Async"
from www.greenleafsoft.com. Such a tool is worth it's weight in gold.
regards
PhilW
Oh, I think that I understand you.
But, I have a question. How connect MDB to Serial Port, for use the
monitor tool??
Thanks you!!
regards.
Juan.
I'm not english, and I speack very bad it, i'm sorry.
My question is: How connect a PC Embedded with a Vending Machine?? I know
that the protocol used is MDB, but it is different to the pc conector
(RS232, USB, I2C, etc). Anybody understand me?
Thanks you!!
>
>Ok, then you have no choice but to write low level code to fudge the 9bit
>char by using the mark/space parity control.
Sorry for jumping in here so far down in the thread, but to throw out
another option for the OP: Add a microcontroller as the glue between the
embedded PC and the MDB device.
There are probably other chips but one family that I'm familiar with
that could handle this easily is the Atmel AVR ATmega. These natively
support 9-bit serial (in addition to the usual other formats) and, in
addition, can filter on the 9th bit set (MDB address mode). Almost like
they were made to support this protocol.
Pick one with dual UARTS and talk to it serially, or get one with a USB
peripheral and communicate with it that way. It would take a teeny bit
of work but may be cleaner, in the end, than trying to dance with the
parity bit.
--
Rich Webb Norfolk, VA
Thanks you!!
regards.
Juan.
Juan,
I think you need to read the spec. There are to many details to deal with
here.
To connect to the PC you must build and interface circuit. How you do that
is up to you.
Sect 4 of the spec tells you all you need to know. It even gives a sample
schematic.
The bus is a multi drop bus, many slaves with one master.
You still have not made clear which one you want to be. I know you have said
you are not building the vending machine, but you also have not said what
you want to be, Host or slave. Are you the host controller or are you one of
the slave devices.
I assume you do understand that the protocol is an internal machine protocol
and that you do not talk to the machine from the outside using MDB?
Anyhow, as for connecting to the PC. Assuming you are the host, the
interface you build will give an output of RS232 that you can connect to the
PC. The monitor you simply insert in between the interface and the PC.
regards
PhilW
Hi Rich,
If you have look back through some of the posts I mentioned why your
suggestion is not really a viable solution. It has to do with the msg
response time. In Sect 3 it says that a device, or host, must respond to a
msg within 5mS (5 char times).
Therefore if you place a translator in series you will probably blow that
out of the water. By how much will depend on your implementation. If you
simply receive the command into the translator, convert it and resend it to
the device, your response time will be msg length(in chars @ 1mS each) * 2 +
device response time at best. with a message up to 36 bytes in length will
be 72mS + device response time. See what I mean.
A better way would be to receive the msg from the host and convert on the
fly, retransmitting 1 char behind. At least you may be able to reduce it
down to 2mS + device response time. That only gives you a 3mS response time
window in the device to meet spec. On top of that, in both the above cases,
you will need to implement how you are going to talk to the PC and keep the
msgs in synch without an address/msg end byte (9th bit).
Am I making sense?
regards
PhilW
Yes, I want that my pc embedded will be a Slave.
I want that my pc embedded will be as a Communications Gateway
(Section 8) for to receive all the information from the VMC. It is
possible?
regards.
Juan.
Yup, totally. Interesting thread ;-)
I wouldn't do this as a byte-wise buffer device, but rather as a higher
level gateway. Implement the MDB state machine in the microprocessor to
behave as the communications gateway, peripheral, or bus master as
required/desired. The side facing the PC could run at a higher baud (or
even over a different medium) and would not necessarily use the MDB
message structure.
Personally, on the side facing the PC I'd try very hard to push
everything into a plain-text format. Easy to monitor and log, simple to
debug, and it can be digested by lots of analysis tools without a
separate binary -> ASCII translator pass.
> Anyhow good luck. It can be done, I know because we support it. It's just
> not an ideal solution. Until you really know what you doing in it's
> implementation, stay away from virtual serial ports over USB because they do
> not act the same as a standard serial port. They move data in blocks and
> will not maintain the parity manipulation synchronously with the data bytes.
I don't think one should try to do the parity trick with a virtual
serial port.
However, some of the USB serial chips may be flexible enough to
implement a 9-bit
mode without resorting the parity trick.
Alternatively, some of the USB-capable microcontrollers certainly are.
And then there's the possibility of a parallel interface chip, and a
small CPLD.
None of these would be presented to the host PC as a serial port, but
instead as a custom interface.
regards.
Juan.
Hi Juan,
Yes it is possible, but everything I mentioned previously remains the same.
To be honest we have not looked at Section 8, we are mainly involved in
coin/note validation. However, nothing else changes. The device you want to
build is still just a device that must meet the standard MDB interface
specification.
Connection to the MDB bus for you as a device is much simpler than that of a
host. You can get away with a couple of opto couplers, just like in the
sample schematic in that section 4. You would be for eg slave 1.
PhilW
Yes I agree with you that would be the better way to go. However, it is
stepping away from the MDB protocol concept. It also adds a lot of work and
maintainance.
PhilW
Hi,
I'm not aware of any USB chips that support full 9 bit mode. Probably for a
couple of reasons (off the top of my head). They are designed emulate a PC
serial port, the CDC spec does not really support it. The CDC spec is rather
broad in its possible applications, but the section that is utilised for
virtual serial ports is based on the modem type interface. As far as I'm
aware modems don't use 9bit.
Even though some USB-capable chips are able to support 9bit serial,
supporting it through the USB is another question.
PhilW
PhilW, Have you anyone schematic to make a adapter MDB to RS232 or any
pc port (usb, rj45, etc...)??
Thanks you!
Juan.
Anybody Can answer me?
Talking about mdb I've found only the PC2MDB product, but I haven't
used it.
Let us know if you try it..
>I'm not aware of any USB chips that support full 9 bit mode ...
>Even though some USB-capable chips are able to support 9bit serial,
>supporting it through the USB is another question.
I'm unsure if there are affordable off-the-shelf
USB to 9 bit adapters
(Black Box probably has an adapter for $$$).
Atmel AVR and Microchip PIC chips (such as the PIC18F14K50, PIC18F66J50
as featured in the October 2008 Circuit Cellar magazine)
have 9 bit UARTS and USB 2.0 on chip, but require your own programming.
Manufacturer's Application Notes and user support might give you all
the building blocks, perhaps entire programs to handle the problem.