• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > PC机与三菱PLC通信问题,高手进来看看

PC机与三菱PLC通信问题,高手进来看看

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了工控机与pc机区别,单片机与pc机通信,51单片机与pc机通信,服务器与pc机的区别,台达plc与pc机通信等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: PC机与三菱PLC通信问题,高手进来看看
描述:

三菱PLC—2N,想让Y0001灯亮下,现在PLC有反应,BUFFER返回值为 06H,15H,15H,15H,15H
下面是我的程序,帮忙看看怎么不对
void CPLC_Read_String_ProcessDlg::OnOK() 
{
char readbuf[256] = {""};
memset(readbuf, 0, sizeof(readbuf));
char  szCmd[100];
memset(szCmd, 0, 100);
char szTailer[10];
memset(szTailer, 0, sizeof(szTailer));
unsigned char result = 0;
int len, i;
//WRITE FORMAT:ENQ(1), STATIONNO.(2), PCNO.(2), COMMAND(2), WAIT TIME(1), HEAD DEVICE(5), 
//NUMBERS OF DEVIC(2), DATA 
//ENQ 05H
szCmd[0] = 0x05;
//STATIONNO. 00
szCmd[1] = 0x30;
szCmd[2] = 0x30;
//PCNO.         FF
szCmd[3] = 0x46;
szCmd[4] = 0x46;
//BW BW
szCmd[5] = 0x42;
szCmd[6] = 0x57;
//WAIT TIME 0
szCmd[7] = 0x30;
//HEAD DEVICE   y0001
szCmd[8] = 0x59;
szCmd[9] = 0x30;
szCmd[10] = 0x30;
szCmd[11] = 0x30;
szCmd[12] = 0x31;
//NUMBERS OF DEVICE 1
szCmd[13] = 0x30;
szCmd[14] = 0x31;
//data     on:1    off:0
szCmd[15] = 0x31;
//CHECK
result = 0;
len = 0;
len = strlen(szCmd);
for(i=1; i<=len; i++)
{
result+=szCmd[i];
}
sprintf(szTailer, "%02X", result);
strcat(szCmd, szTailer);
//STRING END
szCmd[len + 2] = 0x0;
DCB m_dcb;
memset(&m_dcb, 0, sizeof(DCB));
m_dcb.DCBlength = sizeof(DCB);
m_dcb.fBinary = 1;
m_dcb.fParity = 1;
m_dcb.BaudRate = CBR_9600;
m_dcb.Parity = EVENPARITY;
m_dcb.ByteSize = 7;
m_dcb.StopBits = ONESTOPBIT;
HANDLE m_hComm;
m_hComm = CreateFile(_T("COM1"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);  //创建  m_hcomm:文件的句柄
if(m_hComm == INVALID_HANDLE_VALUE)
{
return ;
}
BOOL bRe = SetupComm(m_hComm,1024,1024);
if(!bRe)
{
CloseHandle(m_hComm);
return ;
}
bRe = SetCommState(m_hComm,&m_dcb);
if(!bRe)
{
CloseHandle(m_hComm);
return ;
}
SetCommMask( m_hComm, EV_RXCHAR|EV_BREAK );
COMMTIMEOUTS timeout;
if(m_dcb.BaudRate>=9600)
{
timeout.ReadIntervalTimeout = 10;
timeout.ReadTotalTimeoutConstant = 50;
timeout.ReadTotalTimeoutMultiplier = 2;
timeout.WriteTotalTimeoutConstant = 50;
timeout.WriteTotalTimeoutMultiplier = 2;
}
else
{
timeout.ReadIntervalTimeout = 30;
timeout.ReadTotalTimeoutConstant = 200;
timeout.ReadTotalTimeoutMultiplier = 20;
timeout.WriteTotalTimeoutConstant = 200;
timeout.WriteTotalTimeoutMultiplier = 20;
}
bRe = SetCommTimeouts(m_hComm, &timeout);
if(!bRe)
{
CloseHandle(m_hComm);
return ;
}
PurgeComm( m_hComm, PURGE_TXABORT | PURGE_TXCLEAR);     
PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR);
DWORD dwWriten;
//write
bRe = WriteFile(m_hComm, szCmd, strlen(szCmd), &dwWriten, NULL);
ASSERT(bRe);
TRACE(_T("have writened %d,cmd:%s\n"), dwWriten, szCmd);  
Sleep(10);
DWORD dwRead;
char buffer[1024];
memset(buffer, 0, 1024);
bRe=ReadFile(m_hComm,buffer,1024,&dwRead,NULL);
// m_str=buffer;
UpdateData(FALSE);
ASSERT(bRe);
TRACE(_T("buffer=%s,dwRead=%d\n"), buffer, dwRead);
CloseHandle(m_hComm);
}


解决方案1:

我晕到,你这种程序写法,会死人的


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PC机与三菱PLC通信问题,高手进来看看

相关文章

  • 2017-06-05 使用串口助手控制MC55GPRS模块发送电子邮件总是失败请高手赐教
  • 2017-06-05 驱动程序需要在windows启动时自动加载,这在注册表的Services里需要写些什么东西呢?有没有这方面的资料
  • 2017-06-05 问一个片选的问题
  • 2017-06-05 WinCE60系统下运行C#程序偶尔会休眠唤不醒
  • 2017-06-05 关于用微处理器控制双电源自动切换电路设计
  • 2017-06-05 为了方便大家NDIS方面交流,建了一个QQ群,希望能方便大家交流~
  • 2017-06-05 win2k和win98下访问isa,pci卡有什么区别吗?
  • 2017-06-05 windriver生成inf文件失败怎么办啊
  • 2017-06-05 关于蓝牙连接开发板输入PIN的问题
  • 2017-06-05 如何制作网络协议安装程序

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 本人最近在做驱动(ds),希望能同大家交流心得。
    • 锂电池带负载情况下电压比未带负载下小的原因
    • wince60下的arp功能
    • 脱离单片机的开发环境,如何做一个通过JTAG的下载程序呢?
    • 基于stm32的ds3231的时钟代码
    • imx6ulA7核心linux系统,RS232驱动中增加GPIO控制改成RS485驱动的问题?
    • 请大神们帮我看看这款液晶驱动是什么芯片,如何驱动?
    • 诚恳求教:如何将PCI卡上RAM中的数据直接移入显存中,不经过系统RAM?可行吗?多谢
    • 计算机体系结构分类
    • vxworks68/69怎么配置FTPServer

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有