请较高收如何使用BCB 向PLC 断口发送数据

likekite 2006-11-28 12:19:58
请较高收如何使用BCB 向PLC 断口发送数据

通过BCB 内程序控制PLC 的某些触点动作。 PLC 我刚刚学,还不知从哪入手


关于校验和输入输出程序能不能给出源代码?

十分感谢!
...全文
263 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
likekite 2007-04-09
  • 打赏
  • 举报
回复
以下代码调试已通过,请大家参考


/---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE hComm;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
Temp="COM"+IntToStr(rdCOM->ItemIndex+1);
ComNo=Temp.c_str();
hComm=CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
MessageBox(0," 打开通信端口错误!","Comm Error",MB_OK);
return;
}

GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
MessageBox(0,"通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0) return;
Temp=mSend->Text;
SendData=Temp.c_str();
BS=Temp.Length();
WriteFile(hComm,SendData,BS,&lrc,NULL);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{

String Temp;
char inbuff[1024];
DWORD nBytesRead,dwEvent,dwError;
COMSTAT cs;
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue>sizeof(inbuff))
{
PurgeComm(hComm,PURGE_RXCLEAR);
return;
}

ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
inbuff[cs.cbInQue]='\0';
mReceive->Text=inbuff;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
wz 2006-12-09
  • 打赏
  • 举报
回复
tree2000 2006-12-09
  • 打赏
  • 举报
回复
不是在PLC中把程序寫好了嗎?只是在傳輸程序的時候才用到COM口,如果要在控制的過程中修改參數,那要找到PLC廠家的協議才行,不知哪有,可找供應商要,不過,不是萬不得已還是不要用PC來控制PLC,不知道你得系統是怎樣的。
   
  
yhec 2006-12-09
  • 打赏
  • 举报
回复
我最近在搞OMRON PLC与触摸屏NT631C之间的通讯,这更有用些。
我以前一直搞C++BUILDER,后改行搞工控,专学PLC,进步很大。
yhec 2006-12-09
  • 打赏
  • 举报
回复
我一直在搞PLC,用C++BUILDER与PLC通过串口通讯,有点勉强,
因为它的串口协议不是开放的。BCB不适合用于工控,因为工控
系统有许多成熟的工具,你如果用西门子PLC,用WINCC及以太网
协议更方便。
gfh_79_0 2006-12-09
  • 打赏
  • 举报
回复
先研究好PLC,写好PLC的程序
然后通过通讯与PLC交换数据就可以了
likekite 2006-12-07
  • 打赏
  • 举报
回复
能否给出详细信息?
wangxiangsjz 2006-11-30
  • 打赏
  • 举报
回复
BCB下用SPCOMM控件来实现RS232操作.
likekite 2006-11-29
  • 打赏
  • 举报
回复
BCB 下的程序如何设置哪?
vc8fans 2006-11-29
  • 打赏
  • 举报
回复
RS232串口,通讯协议那还要看PLC手册了,
如果要多串口,可使用一些厂商的TCP/IP-》转多串口也很方便

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧