VC环境下三菱PLC系列跟微机串行通信.docxVIP

VC环境下三菱PLC系列跟微机串行通信.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可编程控制器(PLC)是集计算机技术、自动控制技术、通信技术为一体的新型自动控制装置。由于体积小、可靠性高以及组态灵活等优点,PLC在工业控制领域得到了广泛的应用。将PC机与可编程控制器组合起来,充分利用PC机强大的人机接口功能、丰富的应用软件和低廉的价格来共同实现管理、控制一体化成为一个新的发展趋势。本文重点介绍在Windows 2000环境下如何利用VC来实现PC机与三菱PLC之间的串行通讯。1?三菱PLC与计算机之间通信协议FX2系列PLC与计算机之间的通信采用RS-232标准,其传输速率固定为9600bps,奇偶校验位采用偶校验。数据格式如表1所示。数据以帧为单位发送和接收。一个多字符帧由图1所示的五部分组成,其中和校验值是将命令码STX——ETX之间的字符的ASCII码(十六进制数)相加,取得所得和的最低二位数。STX和ETX分别表示该字符帧的起始标起和结束标志。(1)?起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。(2)?命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。(3)?元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。(4)?元件个数:一次读取位元件或字元件的数量。(5)?结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。(6)?校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(Longitudinal Redundancy Check)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。FX2系列与计算机之间的通信是以主机发出的初始命令,PLC对其做出响应的方式进行通信的。共有0、1、7、8四种命令,上位机实现对PLC的读写和强行置位。通过ENQ、ACK和NAK,上位机协调与PLC的通信应答。2?编程口操作命令类型串行通信是计算机与其他机器之间进行通信的一种常用方法,在Windows操作系统中提供了实现各种串行通信的API函数。通过SC-09编程电缆或FX-232-BD通讯模块,可以将PC机和计算机串行通信口RS-232连接起来,可以实现PC机对PLC的RAM区数据进行读、写操作。根据PLC本身所具有的特性,计算机可对PLC进行以下4种类型的操作:(1)?位元件或字元件状态读操作(CMD0);  (2)?位元件或字元件状态写操作(CMD1);  (3)?位元件强制ON操作(CMD7);  (4)?位元件强制OFF操作(CMD8)。3?软件编程(1)?串行通信实现方法?在进行以上四种操作之前要对串行通信口进行必要的初始化。本人采用了一个专门针对串行通信的CSerial类,并在Open函数中进行了进一步的完善。它由MuMega Technologies公司提供的一个Visual C++类,我们只要理解CSerial类种的几个成员函数,就能很方便地实现串行通信了。以下是该类定义:class CSerial{public:?CSerial();?~CSerial();?BOOL Open( int nPort , int nBaud,int nParity,int nByteSize,int nStopBits );?BOOL Close( void );?int ReadData( void *, int );?int SendData( const char *, int );?int ReadDataWaiting( void );?BOOL IsOpened( void ){ return( m_bOpened ); }protected:?BOOL WriteCommByte( unsigned char );?HANDLE m_hIDComDev;?OVERLAPPED m_OverlappedRead, m_OverlappedWrite;?BOOL m_bOpened;};①?Serial::Open这个成员函数打开通信端口。带五个参数,第一个是串口号,第二个参数是数据传输速率,第三个是数据效验方式,第四个是数据位数,第五个是数据停止位。②?Serial::Close函数

文档评论(0)

wx171113 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档