已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用 VB6.0 实现 PC 与三菱 PLC 的通信 哈尔滨李松颖 本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用 SC-09 编程电缆作为计算机与 PLC 通信的连线。电缆的 9 芯 D 形插头连接在计算机串口上,另一端连接 PLC 的 RS-422 编程口。 编写 PC 的通信程序可采用汇编语言、各种高级语言,也可以采用工控组态软件或直接采用 PLC 厂家的通信软件。本文采用 VB6 0 软件,它必须依据所连接 PLC 的通信规程来编写通信协议,所以先简单介绍 FX 系列 PLC 的通信协议。 一、 FX 系列 PLC 的通讯协议 1 数据传输格式 FX 系列 PLC 采用异步格式,由 1 位起始位、 7 位数据位、 l 位偶校验位及 l 位停止位组成,波特率为 9600bps ,字符为 ASCi 码。 2 通信命令 FX 系列 PLC 有 4 条通信命令,即读命令、写命令、强制通命令、强制断命令。表 1 中, X 为输入继电器; Y 为输出继电器; M 为辅助继电器; S 为状态元件; T 为定时器; C 为计数器; D 为数据寄存器。 3 通信控制字符 FZ 系列 PLC 采用面向字符的传输规程,用到 5 个通信控制字符,如表 2 所示。 4 报文格式 PC 机向 PLC 发送的报文格式如表 3 所示。其中, STX 为开始标志; ETS 为结束标志; CMD 为命令的 ASC 码: SUMH 、 SUML 为从 CMD 到 ETX 按字节求累加和,溢出不计。由于每字节十六进制数变为两字节 ASC 代码,故校验和为 SUMH 与 SUMI 。 PLC 向 PC 机发送的应答报文格式如表 4 所示。 二、 PC 通信程序的编写 1 通信口初始化 , MSComm 控件简介: VB 带有专门管理串行通讯的 MSComm 控件。只需设置几个主要参数就可以实现 PLC 与 PC 间的串行通讯。要完成通信必须设置 MSComm 的相关属性值,即通信口初始化,其步骤如下: (1)CoinmPort :设置或传回通信连接端口代号。 (2)Settings :设置初始化参数。以字 - 符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等 4 个参数。 (3)PortOpen :设置或传回通信连接端口的状态。 (4)Input :从输入寄存器传回并移除字符。 (5)Output :将一个字符串写入输出寄存器。 (6)InputLen :指定由串行端口读入的字符串长度。 (7)InBufferCount :传回在接收寄存器中的字符数。 2 通讯程序举例 首先,在窗体开始设计之前,添加 MSComm 控件和按钮、文本框、标签等。 (1)PC 从 PLC 中读取数据 假设 PC 要从 PLC 中读入从 D123 开始的 4 个字节的数据 ( 占用两个数据寄存器: D123 、 D124) ,其报文如表 5 所示。 根据三菱 FX 系列 PLC 编程口通信协议,地址算法为 address=address2+1000h 将地址 123 转换成十六进制为 7Bh ,因此首地址为: address=addressx2+1000h=7Bhx2+1000h= 10F 6h 再转换成 ASCII 码为 31h,30h,46h,36h 校验和 SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H ,溢出部分不计,故 SUMH 为 7 , SUML 为 4 ,相应的 ASC 码为“ 37H ”和“ 34H ”。 PLC 的应答报文格式如表 6 所示。 (2) 把数据写入 PLC 例如,向 PLC 的 D123 数据寄存器写入数据“ 1234ABCD ”的报文格式如表 7 所示 三菱FX系列PLC编程口通信协议总览三菱FX系列PLC编程口通信协议总览该协议实际上适用于PLC编程端口以及FX-232AW模块的通信。通讯格式:命令命令码目标设备DEVICEREADCMD0X,Y,M,S,T,C,DDEVICEWRITECMD1X,Y,M,S,T,C,DFORCEONCMD7X,Y,M,S,T,CFORCEOFFCMD8X,Y,M,S,T,C传输格式:RS232C波特率:9600bps奇偶:even校验:累加方式(和校验)字符:ASCII16进制代码:ENQ05H请求ACK06HPLC正确响应NAK15HPLC错误响应STX02H报文开始ETX03H报文结束 帧格式:STXCMDDATA.DATAETXSUM(upper)SUM(lower)例子:STX,CMD,ADDRESS,BYTES,ETX,SUM02H,30H,31H,30H,46H,36H,30H,34H,03H,37H,34HSUM=CMD+.+ETX;30h+31h+30h+46h+36h+30h+34h+03h=74h;累加和超过两位取低两位1、DEVICEREAD(读出软设备状态值)计算机向PLC发送:始命令首地址位数终和校验STXCMDGROUPADDRESSBYTESETXSUM例子:从D123开始读取4个字节数据02h30h31h,30h,46h,36h30h,34h03h37h,34h地址算法:address=address*2+1000h再转换成ASCII31h,30h,46h,36hPLC返回STX1STDATA2NDDATA.LASTDATAETXSUM注:最多可以读取64个字节的数据例子:从指定的存储器单元读到3584这个数据02h33h35h38h34h03h44h,36h2、DEVICEWRITE(向PLC软设备写入值)始命令首地址位数数据终和校验STXCMDGROUPADDRESSBYTES1STDATA2NDDATA.LASTDATAETXSUM例子:向D123开始的两个存储器中写入1234,ABCD02h31h31h,30h,46h,36h30h,34h33h,34h,31h,32h,33h,34h,41h,42h,43h,44h03h34h,39hPLC返回ACK(06H)接受正确NAK(15H)接受错误3、位设备强制置位/复位FORCEON置位始命令地址终和校验STXCMDADDRESSETXSUM02h37haddress03hsumFORCEOFF复位始命令地址终和校验STXCMDADDRESSETXSUM02h38haddress03hsumPLC返回ACK(06H)接受正确NAK(15H)接受错误设备强制中的地址公式:Address=Address/8+100h说明:1.帧中的BYTES表示需要读取或者写入的字节数。2.地址算法上有说明。3.累加和是从STX后面一个字节开始累加到ETX的和。三菱FX系列PLC编程口通信源代码fx_comm.hFX系列PLC四种通信模式的特性首先讲讲FX系列PLC的通信方式。FX系列PLC根据使用的通信模块与协议不同,分为以下四种通信模式:1、PLC的N:N通信方式2、PLC双机并联通信方式3、PLC与计算机专有协议通信方式(无须梯形图,电脑直接读写操纵PLC)4、PLC与计算机无协议通信方式(梯形图RS指令方式,可自定义通信协议)以下将详细列出各通信模式的特性:N:N网络PLC并联专用协议计算机连接无协议通信传输标准RS485RS485/RS422RS485/RS422或RS232传输距离500mRS485/RS422:500mRS232:15m连接数量8站1:11:N(N 0 doc_bit32 = (val Mod 2) & doc_bit32 val = val 2 Loop Return Right(00000000000000000000000000000000 & doc_bit32, 32) End Function Function doc_bit8(ByVal val As Long) As String doc_bit8 = Dim i As Byte For i = 0 To 7 If val / (2 (7 - i) = 1 Then doc_bit8 = doc_bit8 & 1 Else doc_bit8 = doc_bit8 & 0 End If val = val Mod 2 (7 - i) Next i End Function 傳回天弘電子看板用的檢查碼 Function string_xor_checksum(ByVal string_xor As String) As Byte If Len(string_xor) = 1 Then string_xor_checksum = 0 Exit Function End If Dim byte_bit(7) As Boolean Dim xor_bit(7) As Boolean Dim i As Byte Dim j As Byte Dim txt_doc_bit8 As String txt_doc_bit8 = doc_bit8(Asc(Mid(string_xor, 1, 1) For j = 0 To 7 byte_bit(j) = IIf(Mid(txt_doc_bit8, 8 - j, 1) = 1, True, False) Next j txt_doc_bit8 = doc_bit8(Asc(Mid(string_xor, 2, 1) For j = 0 To 7 xor_bit(j) = IIf(Mid(txt_doc_bit8, 8 - j, 1) = 1, True, False) Next j For j = 0 To 7 xor_bit(j) = IIf(byte_bit(j) Xor xor_bit(j), True, False) Next j If Len(string_xor) = 2 Then For j = 0 To 7 If xor_bit(j) = True Then string_xor_checksum = string_xor_checksum + 2 j Next j Exit Function End If For i = 0 To Len(string_xor) - 3 txt_doc_bit8 = doc_bit8(Asc(Mid(string_xor, i + 3, 1) For j = 0 To 7 byte_bit(j) = IIf(Mid(txt_doc_bit8, 8 - j, 1) = 1, True, False) Next j For j = 0 To 7 xor_bit(j) = IIf(byte_bit(j) Xor xor_bit(j), True, False) Next j Next i For j = 0 To 7 If xor_bit(j) = True Then string_xor_checksum = string_xor_checksum + 2 j Next j End Function 傳回FX系列PLC用的檢查碼 Function chksum(ByVal chksum_text As String) As String Dim text_len As Byte Dim i As Byte Dim sum_doc As Long Dim sum_hex As String text_len = Len(chksum_text) For i = 1 To text_len sum_doc = Asc(Mid(chksum_text, i, 1) + sum_doc Next i sum_hex = Hex(sum_doc) chksum = Right(sum_hex, 2) End Function 將4個16進位值的字元轉換為10進位的數值 Function hex_doc(ByVal hex_text As String) As Long If hex_text = Then hex_text = 0 hex_doc = (&h + hex_text) * 1 End Function 4個16進位值的字元轉換為16bits的字元 Function hex_bit(ByVal hex4_text As String) As String hex_bit = Dim bit_num As Byte Dim bit_text(15) As String Dim mod_doc As Long mod_doc = hex_doc(hex4_text) For bit_num = 0 To 15 bit_text(15 - bit_num) = IIf(mod_doc / 2 (15 - bit_num) = 0 Then doc_hex4_mux = doc_hex(doc_hex4_mux_txt) Exit Function End If bit16_txt = hex_bit(doc_hex(doc_hex4_mux_txt * -1) For i = 0 To 15 If Mid(bit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽邮电职业技术学院单招职业倾向性测试必刷测试卷及答案1套
- 2026年中国计量大学单招职业倾向性考试必刷测试卷及答案1套
- 吉安护士考编题库及答案
- 2026年云南工贸职业技术学院单招职业倾向性测试题库完美版
- 2025年长春市市直事业单位(含专项招聘高校毕业生)公开招聘工作人员面试参考题库及参考答案详解
- 2026年辽宁省交通高等专科学校单招职业适应性考试题库必考题
- 2026年重庆工程职业技术学院单招职业倾向性考试必刷测试卷新版
- 2026年成都工业职业技术学院单招职业倾向性测试必刷测试卷完美版
- 2026年浙江同济科技职业学院单招职业倾向性考试题库新版
- 2026年郑州旅游职业学院单招职业适应性考试题库附答案
- 雅安市雨城区佰诺劳务服务有限公司雅安市雨城区总医院2025年公开招聘编制外工作人员(19人)考试笔试参考题库附答案解析
- 《基础会计》-任务一、二 财务报告的概述和资产负债表(上)
- 财务管理自动报表生成模板
- 客户信息收集工作表模板
- 2025重庆水务集团招聘笔试
- 免税产品知识培训课件
- 橡胶厂成本核算管理办法
- 《形势政策教育教程》(2025年·秋季)课程标准
- 5.1 相交和垂直-教学设计 2025-2026学年小学数学四年级上课 西师大版
- 半导体产业在智能传感器系统领域的技术创新与发展
- 遗传球形红细胞增多症
评论
0/150
提交评论