They are slightly different. "Honest" simply means that a person always tells the truth. It can also mean that a person never cheats in business dealings, and is generally a person of integrity.
"Frank" means that a person says something truthful that, customarily people would not say.
Often it means that someone speaks the whole truth and the plain truth without regard for hurt feelings.
Woman: "Do I look fat in this dress?"
Polite answer: "No, dear, you look wonderful."
Frank answer: "Actually, you do. You're just a little chubby and those horizontal stripes emphasize it."
"Frank" can also mean "revealing more in a negotiation than would be customary."
"Let's stop pussyfooting around and be frank. I'll admit that I'm short on money now, why don't you admit that you desperately need to sell this property? If we were both frank, we could come to an agreement."