硫化机上位机与PLC通讯开发.docVIP

  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通讯开发   关键词:上位机,DM数据区,Mscomm控件,C200Hg、CJ1M控制系统    摘要:上位机与日本omron PLC的通讯是采用高级语言visual basic6.0编写,通过vb开发的mscomm控件对omron PLC进行读写,实现设备参数的自由调整和对设备生产过程的实时监控、历史数据的追朔和参数的下载存储等功能,从而大幅提高设备使用的灵活性和方便性。   概述:    银川佳通轮胎公司用于胎胚硫化的硫化机共有119台,分别是桂林橡机厂和福建三明硫化机厂制造的设备,控制系统采用欧姆龙C200Hg或CJ1M控制系统,上位机采用台湾研华平板电脑。C200Hg或CJ1M控制系统负责硫化机动作控制及温度、压力等工艺数据的自动调节;上位机负责设备和工艺参数的读写、历史记录和曲线绘制等,从而使整个控制过程更简洁、直观,便于查询、追朔产品产品质量,提高产品品质有很大作用。上位机与PLC控制系统的通讯是该设备的核心技术之一,也是设备维护维修的难点。    二、上位机与omron PLC通讯介绍    1、上位机与omron PLC通讯协议是采用rs-232c通讯协议,通过9针com口就可以实现硬件连接通讯。rs-232c通讯协议为:波特率:9600B/S,数据位:7位,奇偶校验位:无,停止位:1位。    2、mscomm控件是visual basic6.0编程语言开发的专门用于rs-232通讯的控件,通过在vb中建立mscomm控件和设定相应的通讯协议参数,即可建立通讯软通道,实现从rs-232线路的数据传输。    3、omron PLC是日本欧姆龙公司研制的可编程逻辑控制器,广泛应用于工业企业的设备生产控制中。具有数据处理、逻辑运算、定时、计数、输入输出控制等功能。本文只介绍对数据区(DM区)的读写通讯。    4、硫化机上位机主界面             三、使用vb开发实现读取PLC DM数据区的数据    1、在vb环境中添加mscomm控件,并对控件属性进行设定,假设mscomm控件的名称为mc1,通讯协议设定:mc1.省略port=1,表示通讯是通过上位机com1端口通讯的。    2、建立一个可被调用数据读写的公用函数:    Public Function Read_or_Write(CommandString As String, responsestr As String) As Integer    Do    Do    If Form1.mc1.PortOpen = False Then Form1.mc1.PortOpen = True    If (writecount = 3) Then    Read_or_Write = 1    End If    If (Form1.mc1.InBufferCount = 1) Then    Form1.mc1.InputLen = 0    tempstr = Form1.mc1.Input    End If    tempstr =    writecount = writecount + 1    Form1.mc1.Output = CommandString    responsestr =    On Error Resume Next    Do    If (CBool(readcount = 10000)) Then    Read_or_Write = 3    End If    If (Form1.mc1.InBufferCount = 1) Then    tempstr = Form1.mc1.Input    Else    DoEvents    End If    responsestr = responsestr + tempstr    tempstr =    readcount = readcount + 1    len1 = Len(responsestr)    If (len1 = 2) Then    bool1 = CBool(Mid(responsestr, (len1 - 1), 1) = *)    bool2 = CBool(Mid(responsestr, len1, 1) = Chr$(13))    End If    Loop While ((CBool(len1 = 2) Or (bool1 = False) Or (bool2 = False)) And (Read_or_Write = 0))    Loop While ((fcscheck(responsestr) = False) And (Read_or_Write = 0))

文档评论(0)

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

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

1亿VIP精品文档

相关文档