首页 【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯

【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯

举报
开通vip

【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯 利用PComm动态链接库实现上位机与昆腾 PLC通讯 2011年第4期东瞧晨斜技1O7 利用PComm动态链接库实现上位机与昆腾PLC通讯 王冬,范荣广 (兖矿集团公司南屯煤矿选煤厂,山东济宁273515) 摘要该文介绍了利用PComm动态链接库开发基于ModbusRTU协议的昆腾PLC通讯程序.可据此开发基于Modbus协议的控制系统人机 界面或数据库的应用. 关键词PLCModbus协议RTU方式CRC校验PComm 中国分类号...

【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯
【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯 利用PComm动态链接库实现上位机与昆腾 PLC通讯 2011年第4期东瞧晨斜技1O7 利用PComm动态链接库实现上位机与昆腾PLC通讯 王冬,范荣广 (兖矿集团公司南屯煤矿选煤厂,山东济宁273515) 摘要该文介绍了利用PComm动态链接库开发基于ModbusRTU 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的昆腾PLC通讯程序.可据此开发基于Modbus协议的控制系统人机 界面或数据库的应用. 关键词PLCModbus协议RTU方式CRC校验PComm 中国分类号TN915.4文献标识码B 施耐德昆腾系列PLC是从Modicon公司的984系 列PLC发展而来,PLC通讯协议采用的是Modbus通讯 协议.Modbus通讯协议是Modicon公司为PLC与主 机之间的通讯而发明的串行通讯协议,因其开放性而 被广泛采用,已经成为一个通用的工业标准.通过该 协议,不同厂商生产的控制设备可以进行工业网络互 联,从而实现集散控制. 1Modbus协议简介 Modbus协议采用主从工作方式,允许一台主机和 多台从机通讯.每台从机地址由用户设定,地址范围 为1—255.通讯采用命令/应答方式,每一种命令帧都 对应一个应答帧.命令帧由主机发出,所有从机都将 收到报文,但只有被寻址的从机才会响应相应命令,并 返回相应的应答帧. 1.1Modbus协议通讯模式 Modbus通讯协议有两种传送方式:RTU方式和 ASCII方式. (1)ASCII模式:当控制器设为在Modbus网络上 以ASCII模式通讯,在消息中的每个8Bit字节都作为 两个ASCII字符发送. (2)RTU模式:当控制器设为在Modbus网络上以 RTU模式通讯,在消息中的每个8Bit字节包含两个 4Bit的十六进制字符.一般控制系统中PLC和智能仪 器仪表都是采用RTU模式通讯.本文例程采用的也 是RTU模式. 1.2ModbusRTU消息帧格式 使用RTU模式通讯时,传输的第一个域是设备地 址.可以使用的传输字符是十六进制的0—9,A—F. 典型的RTU模式的消息结构如表1所示. 2上位机和昆腾PLC通讯接口的软件设计与实现 2.1上位机与PLC接口 ?收稿日期:2011—04—25 作者简介:王冬(1966一),男,山东肥城人,高级工程师,兖矿集团 南屯煤矿选煤厂从事洗煤,电气工程及自动化工作,副总工程师,曾 获国家煤炭工业局科技进步二等奖. 表1典型的RTU模式的消息结构 SrARTADDCSDATA~RC16(L):RC16(H)END CRCCRC起始间隔设备地址功能代码数据域结束时间 高字节高字节 T1—12一Tl—T2一 8Bit8BItI1个8Bit8BIt8BitT3 一 T4’13一T4 Modbus协议可以采用RS一232,RS一485等异步 串行标准,适用于上位机对多台从机或智能仪表的系 统编程,数据采集和现场监控,可设置地址,波特率,数 据格式等通讯参数.本文程序设计中,上位机(计算 机)采用RS232接口,VisualBasic6.0环境,从机是昆 腾CPU43412A主机. 2.2PComm动态链接库函数和变量定义 PComm(文件是PComm.dl1)是MOXA公司提供的 通讯解决方案,也适合解决工业通讯问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 .比VB的 MSComm通讯控件具有更强的功能和效率.该动态链 接库结构在API(ApplicationProgramming.Interface)之 上,提供用户较为高级的接口,通过函数调用去启动操 作系统的低级函数,来实现串行通讯. 在VB环境下使用PComm动态链接库中,通讯函 数必须先引入函数声明,主要包括在模块PComm.bas 中,在工程中加入该模块即可.下面是VB中PComm 动态链接库在PComm.BAS模块中常量和函数定义 (仅对开发程序中用到的进行 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 )常量定义. GlobalConstB9600=&HC,BIT8=&H3,Const STOP_ I=&HO.P_EVEN=&H18 函数声明 DeclareFunctionsio— openLib”PComm.dll”(By? ValPortAsng)AsLong DeclareFunctionsio—closeLib”PComm.dll”(By- ValPortAsLong)AsLong DeclareFunctionsio—ioctlLib”PComm.dll”(ByVal PortAsLong,ByValbaudAsLong,ByValmodeAs Long)AsLong DeclareFunctionsio_readLib”PComm.dll”(ByVal PortAsLong,ByRefbufAsByte,ByVallengthAsLong) AsLong DeclareFunctionsio”.dU”(._ writeLibPCommBy 108东撼爰斜技2011年第4期 ValPortAsLong,ByRefbufAsByte,ByVallengthAs Long)AsLong 2.3CRC码计算生成函数定义 ModbusRTU模式中的错误校验采用的是CRC(循 环冗余码) 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 ,下面是标准CRC码生成函数. PublicFunctionCalCRCI6(data()AsByte,noAs Integer,btLoCRCAsByte,btHiCRCAsByte)AsString DimCLAsByte,CHAsByte,SaveHiAsByte,Save— AsByte,RetumData(1)AsByte Dimi,nagAsInteger btHiCRC=&HFF:btLoCRC=&HFF:CL =&H1:CH=&HA0 Fori=0To(no—I) btHiCRC=btHiCRCXordata(i)每一个数据与 CRC寄存器进行异或 ForFlag0To7 SaveHi=btL0CRC:SaveLo=btHiCRC btL0CRC=blLDCRC2:btHiCRC=btHiCRC 2移位 If((SaveHiAnd&H1)=&HI)Then如果高位 字节最后一位为1’ btHiCRC=btHiCRCOr&H80则低位字节右移后 前面补1 EndIf否则补0 ?((SaveLoAnd&H1)=&HI)Then如果LSB 为l,与多项式码进行异或 btkIcRC=btLoCRCXorCH:btHiCRC =btHiCRCXorCL EndIf NextFlag Nexti RetumData(0)=btHiCRC:ReturnData(I) =bt__IoCRC:CalCRC16=ReturnData EndFunetion 2.4读,写昆腾PLC寄存器数据 查询信息规定了要读的寄存器起始地址及数量. 寄存器寻址起始地址为0OOO,寄存器I,16所对应的 地址分别为0—15,也就是说,400001对应的寻址起始 地址为oooo(这是ModbusRTU模式中’03’功能对应 的寻址方式).下面是具体实现的程序代码说明(可 将代码设计在CommandBu~on的Click事件中): (1)打开计算机的串口1并定义通讯参数. DimModeAsLong,letAsLong ret=do_open(1):Mode=P_EVE~OrBrr8Or STOP_ I ret=sio—ion(1,B9600,Mode)’计算机与PLC 通讯参数:9600,e,8,1 读取保持寄存器的数据,从机返回数据以十六进 制显示在Textl文本框中. DimdenAsLong,RstrAsString,CrcAsString Dimbuf(0To511)AsByte,Tbuf(8)AsByte,bt- CRCHiAsByte,btCRCLoAsByte Tbuf(0)=&I-I2’目标站号 rh~f(1)=&H3’功能码 Tbuf(2)=&H0’400001地址(ooH)高字节 Tbuf(3)=&H0’400001地址(OOH)低字节 uf(4)=&HO’读取个数高字节 Tbuf(5)=&H1读取个数低字节 Crc=CalCRCl6(Tbuf,6,btCRCLo,btCRCHi): Tb.f(6)=btCRCHi:11)uf(7)=btCRCLo Callsio_ write(1,Tbuf(0),UBound(Tbllf)) TimeDelay50’延时(利用GetTickCount编的延时 过程) den=sio_read(1,buf(0),512)”返回数据 Fori=0Toden一1:Rstr=Rstr+Hex$(bur (i))+”“:Next rext1.Text=““:Text1.Text=Rstr (2)写数据到PLC的保持寄存器. DimTbuf(8)AsByte,btCRCHiAsByte,btCRCLo ASByte,bur(0To511)AsByte DimCrcAsString,rlenAsLong Th.f(0)=&H2’目标站号 Tbuf(1)=&H6’功能码 Tbuf(2)=&H0’400002地址(00H)高字节 Tbuf(3)=&HI’400002地址(O1H)低字节 Tbuf(4)=&H0’写数高字节 IIf(5)=&H3’写数低字节03H Cre=CalCRcl6(Tbuf,6,btCRC【o,btCRCHi): uf(6)=btCRCHi:Tbuf(7)=btCRCLo Callsio_ write(1,Tbuf(0),UBound(Tbuf)):Time— Delay50 (3)关闭计算机的串口1:sio_close(1). 3结语 上述介绍的上位机与昆腾PLC通讯接口程序的设 计方法,可在没有组态软件的情况下自行开发基于 Modbus协议的人机界面,信息监控系统,也可实现上 位机对其他基于Modbus协议的PLC或自动化仪表的 监控.同时,可将采集PLC或自动化仪表的数据存人 数据务器中的数据库,从而实现工控系统与管理系统 的信息集成. 参考文献: [I]范逸之.陈立元VisualBasic与RS一232串行通信控{II.清华大 学出版社,2002.
本文档为【【word】 利用PComm动态链接库实现上位机与昆腾PLC通讯】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_769254
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:8
分类:生活休闲
上传时间:2017-11-11
浏览量:31