PLC与PC串口通信
来源:互联网 发布:滚动歌词制作软件 编辑:程序博客网 时间:2024/05/01 07:03
前几天要做一个跟PLC通信的程序,在这里讲一讲学到的一点东西
程序如果是用VB来做的话有一个MScomm控件,比较简单,不过我只在VB6.0里面发现有这个控件.在.net里面没有,好像要通过某些操作可以加进来,我觉得比较麻烦就没有去做.
我是用C++来做的,平台是.net2005.没有用控件,直接用到几个串口连接及操作的API函数.
首先是跟串口的连接,一般是用com1口
code:
///////
m_hCom=CreateFile(L"COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, 0,NULL);
///////
//m_hCom是一个HANDLE,判断它是否为空,空表示打开串口失败,那要检查一下串口是否可以用了.
SetupComm(m_hCom,READBUFLEN,WRITEBUFLEN); // 初始化通讯设备参数
///READBUFLEN是自己定义的读缓冲的长度,WRITEBUFLEN是写缓冲的长度
COMMTIMEOUTS CommTimeOuts;CommTimeOuts.ReadIntervalTimeout = MAXDWORD ; //接收两连续字节的最大时间间隔
CommTimeOuts.ReadTotalTimeoutMultiplier =0; //接收每字节的平均允许时间
CommTimeOuts.ReadTotalTimeoutConstant = 0 ; //接收时间常数
CommTimeOuts.WriteTotalTimeoutMultiplier =100; //接收每字节的平均允许时间
CommTimeOuts.WriteTotalTimeoutConstant = 500 ; //接收时间常数
SetCommTimeouts (m_hCom , &CommTimeOuts) ;
//上面是设置异步操作的时间间隔
//获取并设置串口
DCB dcb;
GetCommState(m_hCom, &dcb) ;
dcb.BaudRate = 9600;//比特率
dcb.ByteSize = 7;//字节数
dcb.Parity = EVENPARITY;//偶校验
dcb.StopBits = TWOSTOPBITS ; //2位停止位
SetCommState( m_hCom, &dcb);
PurgeComm (m_hCom,PURGE_TXCLEAR | PURGE_RXCLEAR) ; // 清除缓冲信息
.....
DWORD lbyteswritten;
WriteFile(m_hCom,SendString,WRITEBUFLEN,&lbyteswritten,0);
/*WriteFile是向PLC发送信号,SendString是信号码,是一个字符串,一般是用ASCII码,不过不是标准的ASCII码,是 PLC生产公司自己定义的,如果他们公司没有定义的ASCII码的话就用标准的,比如Omron定义的ASCII码里面没有回车符的定义,所以用标准的 '/x0D'表示.*/
.......
DWORD lbytesreaded;
char Data[READBUFLEN];
memset(Data,'/0',READBUFLEN);
ReadFile(m_hCom,Data,READBUFLEN,&lbytesreaded,0);
/*ReadFile是接收从PLC上发回来的信号,这个信号要能正确反应真实信号的话需要发送的信号格式正确才行.Data是一个字符串,你可以对里面的某一位的值进行判断以确定接收到什么变化.然后进行相应的处理.
最后不要忘记在关闭程序的时候*/
.....
CloseHandle(m_hCom);//将打开的串口句柄关闭
/*事实上与PLC的通信最终归结为串口通信,只要知道PLC发送和接收的格式就可以很容易完成。
至于PLC内部的程序控制就要懂工控的强人来写程序了。一般来说都是两方面的人员商量好一个都可以接受的协议然后大家按照协议来写各自的程序,最后通信的时候只需要对协议处理就行。*/
- PLC与PC串口通信
- FX-3U PLC串口与PC通信调试
- PC与串口通信
- PLC与PC的通信问题
- halcon 与PLC串口通信解决方案
- 单片机-串口与PC通信
- PLC-串口通信实例
- PC与三菱FX系列PLC通信实例
- FPGA与PC串口自收发通信
- PC与单片机串通(串口通信)
- 51单片机与PC进行串口通信
- Android通过串口与PC通信
- 51单片机与PC串口通信
- 单片机与PC机多机通讯 串口通信
- PDA蓝牙串口与PC蓝牙串口通信
- OPC 通信预安装软件介绍(西门子PLC与上位机PC之间的通信)
- pc串口通信
- PC 串口通信
- 在ASP.NET中存取图片到数据库的示例
- 每天学习一点flash(33) as 3.0 游戏设计笔记(2)
- [转贴]ArcObject入门介绍
- 关于xml文件的声明代码导致的tomcat出现的错误
- Hibernate不支持Oracle对字符串排序后的基于rownum的取数方式
- PLC与PC串口通信
- Compilers:Principles,Techniques,Tools,The PurpleDragon
- Eclipse和MyEclipse配置derby数据库
- JTable
- java.util.Runtime类中的addShutdownHook()方法
- 如何在C#中使用Win32和其他库
- The Assembly Programming Master Book
- 如何用宏生成动态二维数组
- Network Security Hacks