VB与AB的PLC之间通讯
VB与PLC通信程序(欧姆龙PLC).doc
VB与PLC通信程序(欧姆龙PLC)关于VB的MSCOMM控件可参考相关资料。
通信程序摘要如下:(1)初始化程序mport=2 ’选择COM2Mscomm1.Settings=”9600,N,8,2”’设置通信参数Mscomm1.Inputlen=0 ’读入接收缓冲区全部字符Mscomm1.OutbufferSize=256 ’设置发送缓冲区大小Mscomm1.InbufferSize=512 ’设置接收缓冲区大小Mscomm1.PortOpen=True ’打开COM2(2)发送命令程序比如读取节点号03的PLC中IR000到IR009的内容,并放到tag1字符串变量中,此时有:Dim Command, node, begin, number as stringDim Answerlen as integernode=”03”’节点号Command=”RR”’命令为读IR区begin=”0000”’从IR000开始number=10 ’读取长度Answerlen=51 ’计算接收字符串长度进行命令发送和接收应答处理:Dim FCS, I as integerDim s ,f as strings=”@”+node+Commad+begin+numberFCS=0For i=1 to Len(s)FCS=FCS xor Asc(Mid$(s,i,1) ) ’帧校验码FCSNext if=Hex$(FCS)If Len(f)=1 Then f=”0”+fCommfrm.MSComm1.Output=s + f + ”*” + CHR$(13) ’命令帧发送DoDummy=DoEvents()Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen ’等待应答帧Do tag1= Commfrm.MSComm1.InputLoop Untill Commfrm.MSComm1.InbufferCount=0 ’读完应答帧上述程序具有相当的通用性,对于其它设备不同的只是各自的数据帧格式,因而只需做相应少量修改即可。
vb与plc通讯(以西门子S7-200为例)
vb与plc通讯(以西门子S7-200为例)S7-200 PLC之PPI协议通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。
这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。
在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。
在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。
采用这种方式,PLC 编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。
SIEMENSS7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。
如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。
这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。
软件设计系统中测控任务由SIEMENSS7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。
计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。
PPI协议西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。
VB与AB的PLC之间通讯
VB与AB的PLC之间通讯 31VB与AB的PLC之间通讯;VB与ABPLC之间通讯;AB系列PLC一般都有专用驱动程序用于实现PLC;OptionExplicit;Dimtns%,comunicating;PrivateS ubCommand1_Click;ReDimtb%(10);Dimst;IfReadTable(0,tb%())Then;Fors t=0To9'显示结果;TexVB与AB的PLC之间通讯VB与ABPLC之间通讯AB系列PLC一般都有专用驱动程序用于实现PLC和计算机之间通讯,如RS LINX就是专门用于做这项工作,但使用RSLINX也具有一定局限性,这里提供一个使用VB编程实现PLC和计算机之间通讯程序,使用协议是DF1,可以支持Mi crologix、SLC500等系列PLC。
使用代码如下:Option ExplicitDim tns%, comunicatingPrivate Sub Command1_Click()ReDim tb%(10)Dim stIf ReadTable(0, tb%()) ThenFor st = 0 To 9 '显示结果Text1.SelText = Str(tb%(st)) + Chr(32)Next stText1.SelText = Chr(13) + Chr(10)End IfEnd SubPrivate Sub Command2_Click()ReDim tm%(5)tm%(0) = Rnd * 32768tm%(1) = Rnd * 32768tm%(2) = Rnd * 32768tm%(3) = Rnd * 32768tm%(4) = Rnd * 32768If Not WriteTable(4, tm%()) Then Text1.SelText = "写入错误!!" E nd SubPrivate Sub Exit_Click()Unload MeEndEnd SubPrivate Sub Form_Load()Comm1.PortOpen = TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer) Comm1.PortOpen = FalseEnd SubPrivate Sub CalcCRC(mes$)Dim byt%, res&'对消息进行crc校验,然后将结果添加到消息结尾。
AB PLC 和VB客户端的通讯
vba实现将记录集输出到Excel模板'************************************************'** 函数名称: ExportTempletToExcel'** 函数功能: 将记录集输出到Excel 模板'** 参数说明:'** strExcelFile 要保存的Excel 文件'** strSQL 查询语句,就是要导出哪些内容'** strSheetName 工作表名称'** adoConn 已经打开的数据库连接'** 函数返回:'** Boolean 类型'** True 成功导出模板'** False 失败'** 参考实例:'** Call ExportTempletToExcel(c:\\text.xls,查询语句,工作表1,adoConn) '************************************************Private Function ExportTempletToExcel(ByVal strExcelFile As String, _ ByVal strSQL As String, _ByVal strSheetName As String, _ByVal adoConn As Object) As BooleanDim adoRt As ObjectDim lngRecordCount As Long ' 记录数Dim intFieldCount As Integer ' 字段数Dim strFields As String ' 所有字段名Dim i As IntegerDim exlApplication As Object ' Excel 实例Dim exlBook As Object ' Excel 工作区Dim exlSheet As Object ' Excel 当前要操作的工作表On Error GoTo LocalErrMe.MousePointer = vbHourglass'// 创建ADO 记录集对象Set adoRt = CreateObject(ADODB.Recordset)With adoRt.ActiveConnection = adoConn.CursorLocation = 3 'adUseClient.CursorType = 3 'adOpenStatic.LockType = 1 'adLockReadOnly.Source = strSQL.OpenIf .EOF And .BOF ThenExportTempletToExcel = FalseElse'// 取得记录总数,+ 1 是表示还有一行字段名名称信息lngRecordCount = .RecordCount + 1intFieldCount = .Fields.Count - 1For i = 0 To intFieldCount'// 生成字段名信息(vbTab 在Excel 里表示每个单元格之间的间隔)strFields = strFields & .Fields(i).Name & vbTabNext'// 去掉最后一个vbTab 制表符strFields = Left$(strFields, Len(strFields) - Len(vbTab))'// 创建Excel实例Set exlApplication = CreateObject(Excel.Application)'// 增加一个工作区Set exlBook = exlApplication.Workbooks.Add'// 设置当前工作区为第一个工作表(默认会有3个)Set exlSheet = exlBook.Worksheets(1)'// 将第一个工作表改成指定的名称 = strSheetName'// 清除“剪切板”Clipboard.Clear'// 将字段名称复制到“剪切板”Clipboard.SetText strFields'// 选中A1单元格exlSheet.Range(A1).Select'// 粘贴字段名称exlSheet.Paste'// 从A2开始复制记录集exlSheet.Range(A2).CopyFromRecordset adoRt'// 增加一个命名范围,作用是在导入时所需的范围s.Add strSheetName, = & strSheetName & !$A$1:$ & _ uGetColName(intFieldCount + 1) & $ & lngRecordCount'// 保存Excel 文件exlBook.SaveAs strExcelFile'// 退出Excel 实例exlApplication.QuitExportTempletToExcel = TrueEnd If'adStateOpen = 1If .State = 1 Then.CloseEnd IfEnd WithLocalErr:'*********************************************'** 释放所有对象'*********************************************Set exlSheet = NothingSet exlBook = NothingSet exlApplication = NothingSet adoRt = Nothing'*********************************************If Err.Number <> 0 ThenErr.ClearEnd IfMe.MousePointer = vbDefaultEnd Function'// 取得列名Private Function uGetColName(ByVal intNum As Integer) As StringDim strColNames As StringDim strReturn As String'// 通常字段数不会太多,所以到26*3 目前已经够了。
plc网口vb 通讯
plc网口vb 通讯PLC网口VB通讯——实现智能化生产控制的利器随着工业自动化的快速发展,PLC(Programmable Logic Controller,可编程逻辑控制器)已经成为现代生产线上不可或缺的设备之一。
而要使PLC实现与计算机的通讯,以实现更高级别的控制和监测功能,则需要借助VB(Visual Basic)编程语言。
本文将介绍PLC网口VB通讯的基本原理以及其在实际应用中发挥的重要作用。
一、PLC网口VB通讯基本原理PLC网口VB通讯主要是通过以太网接口实现的。
PLC通过网口与上位机进行通信,由VB程序控制上位机与PLC之间的数据交换。
具体而言,PLC网口VB通讯需要解决以下几个关键问题:1. 协议选择:PLC通常支持多种通信协议,例如MODBUS、OPC等。
在选择协议时需要根据具体应用场景和PLC型号进行判断,并根据协议规范进行编程。
2. IP地址设置:为了确保上位机与PLC能够互相识别和连接,需要为PLC和上位机分配合适的IP地址,并设置子网掩码和默认网关等网络参数。
3. 数据格式与交换:在PLC网口VB通讯中,数据格式的定义和交换非常关键。
通常情况下,可以利用VB编程实现数据的读取、写入和解析,以实现与PLC之间的数据交互。
二、PLC网口VB通讯的实际应用PLC网口VB通讯在许多领域都得到了广泛的应用,为企业的生产控制和监测提供了可行的解决方案。
下面以几个实际案例进行介绍:1. 智能制造:在智能制造领域,PLC网口VB通讯可以实现生产流程的高度自动化和集成化管理。
通过与上位机的通讯,PLC 可以接收指令进行实时控制,并将生产数据反馈给上位机,以便进行数据分析和优化。
2. 物流仓储:在物流仓储领域,PLC网口VB通讯可以实现仓库的自动化控制和货物追踪。
利用上位机与PLC进行通讯,可以实时监测仓库存货情况,并对货物进行分类、分拣和入库等操作。
3. 能源管理:在能源管理领域,PLC网口VB通讯可以实现对能源设备的监控和控制。
ABPLC通讯设置
ABPLC通讯设置ABPLC通讯设置Logix 1500 Plc(RS232口)与PC通讯RS232PLCPC(9D插头)3开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLinx菜单Communictions—〉〉Configure Drivers 显示如下:创建新设置,“RS-232 DF1 devices”选择“AB_DF1-1”设置串口,及Device,鼠标点击“自动配置”测试成功后界面PLC以太网模块通讯设置下一步RSLinx—〉communictions—〉RSWho,打开PLC编程软件,开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLlogix 500 English新建配置PLC的CPU型号双击“IO Configuration”,添加PL其他模块双击“Channel Configuration”检查通讯设置界面1界面2界面3界面4PLC在线测试测试成功画面VB于ABPLC之间的DDE设置判断RSLinx是否运行开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLinx打开的界面查看PLC寄存器的值:菜单Communictions—〉〉RSWho 显示如下:鼠标右键点击“01,SLC-5/04,UNTITLED”,再点“Data Monitor”,显示显示PLC内N7寄存器的实时值(事先要定义N7)建立DDE连接:鼠标右键点击“01,SLC-5/04,UNTITLED”,再点“Configure New DDE/OPC”,显示更改DDE默认名称“UNTITLED”为VB程序引用的实际名字。
VB程序设置:<1>先判断“RSLINX.EXE”是否运行On Error GoTo ErrFlagAppActivate "RSLinx"Exit SubErrFlag:Call Shell("C:\Program Files\Rockwell Software\RSLINX\RSLINX.EXE", vbHide)<2>建立DDE连接Label1.LinkTopic ="RSLINX|UNTITLED" ‘DDE名字Label1.LinkItem = "N7:0" ‘N7寄存器Label1.LinkMode = 1 ‘1:Automatic。
AB_PLC_和VB客户端的通讯
AB PLC 和VB客户端的通讯1、授权AB PLC OPC方式和第三方软件进行通讯,必须要先授权。
当前使用电脑上安装了AB PLC相关软件后,可以如下图所示菜单路径下找到“Move Activation –32 Bit”菜单项。
点击运行会弹出如下对话框:现将授权软盘插入到软驱,点击“OK”按钮将授权文件拷贝到电脑硬盘上,授权成功,会弹出如下对话框,以确认RSLINX.EXE应用软件已经授权成功。
2、RSLinx.EXE软件设置。
设置好RSLinx.exe应用软件授权后,运行RSLogix 500软件,设置好AB PLC串口通讯参数或网口通讯参数,下载到PLC。
测试运行确保PLC参数设置正确,PLC能和编程软件已经能够正确通讯。
然后运行RSLinx.软件,选择Communictions-RSWho菜单项,有能和当前上位机正常通讯PLC将会显示如下窗体列表里:列表里选中要通讯PLC,选择Station – Data Monitor菜单项,检查是否已经能够将数据正确采集上来。
3、OPC服务器配置确认RSLinx软件已经能够正确和PLC进行通讯后,就可以开始配置OPC服务器了。
首先必须先打开一个DDE/OPC工程,可以选取File – Open Project选项,来“Open DDE Projiect”对话框,选取打开一个已经建立好DDE工程。
还没有建立过DDE/OPC工程,则会弹出如下对框,要求用户输入要建立工程名,这样建立好工程名就添加到了工程列表框中。
打开一个OPC工程后,就可以正式开始配置OPC 服务器了,选取DDE/OPC-Topic configuration菜单项,建立一个OPC服务主题。
弹出如下窗体中,选取要配置成OPC服务器对应选项,点击“New”按钮,编辑一个OPC服务器主题名称(可取任意名称)。
切换到“Data Collection”页,Processer Type下拉框,选择正确PLC处理器类型。
AB-PLC之间通讯
AB-PLC之间通讯AB-PLC之间进行通讯比较常用的方法有两种:第一种:使用生产者/消费者,通过设置数据类型方式进行通信第二种:使用MSG指令,进行通信两种通讯方式有什么区别?在生产者/消费者通信中,生产者数据所在的plc必须在消费者plc网络组态中,而使用MSG指令进行数据交换则没有此项要求。
使用生产者-消费者数据通讯:所谓消费者就是需要接收的数据、主动读取数据的那一方,生产者就是被读取数据、发送数据那一方。
下面定义plc-a为生产者plc,plc-b为消费者plc,通讯步骤如下:(1)plc-a控制器标签中定义需要发送的数据区,数据类型为生产型;plc-b控制器标签中定义接收数据区,数据类型为消费(2)设置plc-b中消费者标签的连接属性,在remote data属性中填写对应于plc-a中生产者变量名称即可PS:这里需要注意,标签必须创建在控制器区域,全局数据区;传送数据的标签不能超过500个字节,如果是通过ControlNet网络数据交换,数据标签则不能超过480个字节,这是受限于ControNet网络的数据包的尺寸;如果Produce几个数据到同一个控制器,将几个数据合并在一个用户自定义结构的数据标签中,这样可以减少连接数,合并后的数据会用相同的RPI;标签只能使用DINT和REAL,或它们的数组,或者用户自定义结构数据,因为对外操作数据必须是32位的;如果有SINT和INT的数据需要传送,将它们组合在用户自定义结构中传送;Produce的标签和Consume的标签数据格式必须一致,才能确保数据的准确。
使用MSG指令通讯:(1)建立数据类型为MESSSAGE结构的标签,每一条MSG指令调用之前都要分配一个标签,这个标签将记录本条指令的通讯组态和执行情况只有为指令分配了标签后,点击方可进入组态界面:说明:•对控制器以外的各种设备传送信息,它的信息类型如下所列:-CIP Data Table Read/Write 对ControlLogix控制器进行读写-PLC5 Typed Read/Write 对PLC5处理器进行读写-PLC5 Word Range Read/Write 对类似PLC5处理器地址进行读写-Block Transfer Read/Write 对块传送模块进行读写-PLC2 Unprotected Read/Write 对PLC2处理器及类似PLC2地址(寄存器地址)的设备进行读写。
vb与plc网口通讯
vb与plc网口通讯在工业自动化领域,VB和PLC之间的网口通讯是非常重要的一项技术。
VB(Visual Basic)是一种基于Windows操作系统的编程语言,而PLC(Programmable Logic Controller)是一种专门用于控制工业过程的计算机控制系统。
通过实现VB与PLC之间的网口通讯,可以实现双方之间的数据交互,从而实现工业自动化系统的监控和控制。
一、背景介绍随着工业自动化的快速发展,PLC在工业控制领域中的应用越来越广泛。
而VB作为一种高级对象化、事件驱动的编程语言,具有编写人机界面友好的优点。
因此,将VB与PLC进行网口通讯,不仅可以充分发挥PLC的控制能力,还可以利用VB的强大的界面开发能力,实现工业自动化系统的可视化管理。
二、VB与PLC网口通讯的原理VB与PLC之间的网口通讯主要基于TCP/IP协议。
PLC通过提供基于TCP/IP的通信模块,作为服务器等待VB的连接请求。
而VB则作为客户端,向PLC发起连接请求。
一旦连接成功,VB就可以通过TCP/IP协议与PLC进行双向数据交互。
三、VB与PLC网口通讯的步骤1. 确定PLC的IP地址和端口号。
在进行VB与PLC的网口通讯之前,首先需要确定PLC的IP地址和端口号。
通常情况下,这些参数会在PLC的配置软件中进行设置。
2. 使用VB的Socket控件实现通信。
在VB中使用Socket控件,可以方便地实现与PLC的网口通信。
通过设置Socket的IP地址和端口号,VB可以与PLC进行连接,并通过Socket发送和接收数据。
3. 编写VB程序与PLC进行数据交互。
通过Socket控件,VB可以发送指令给PLC,以实现对PLC的控制。
同时,VB还可以从PLC中读取数据,实现对工业自动化过程的监控。
四、VB与PLC网口通讯的应用1. 监控工业过程。
通过VB与PLC的网口通讯,可以实时获取PLC中的数据,并将这些数据可视化地呈现在VB的界面上。
ab plc 之间通讯除了MESSAGE指令还有哪种方式?
ab plc 之间通讯除了MESSAGE指令还有哪种方式?
controllogix 可以使用Producer and consumer 模式.
先在需要发送数据的PLC中建立Tag,选中Tag ,按Alt+Enter
在“特性”对话框中将其模式改为Producer(生产者)
在需要接收数据的PLC中建立Tag,将其模式改为Consumer(消费者)在接收PLC中直接使用Consumer即可接收到数据
不需要同名,当你设定一个TAG为消费者时,在CONNECTION设置里面会让你选中相应的生产者处理器和你要采集的标签数据名(需要填写),当然之前你要在消费者程序中先把生产者CPU组态.
message 和producer and consumer在添加新的时,程序都需要停,感觉是不足。
VB与AB的PLC之间通信
VB与AB的PLC之间通讯2007-05-31 来源:西部工控网浏览:300[推荐朋友] [打印本稿] [字体:大小]VB与AB PLC之间通讯AB系列PLC一般都有专用驱动程序用于实现PLC和计算机之间通讯,如RSLINX就是专门用于做这项工作,但使用RSLINX也具有一定局限性,这里提供一个使用VB编程实现PLC和计算机之间通讯程序,使用协议是DF1,可以支持Micrologix、SLC500等系列PLC。
使用代码如下:Option ExplicitDim tns%, comunicatingPrivate Sub Command1_Click()ReDim tb%(10)Dim stIf ReadTable(0, tb%()) ThenFor st = 0 To 9 '显示结果Text1.SelText = Str(tb%(st)) + Chr(32)Next stText1.SelText = Chr(13) + Chr(10)End IfEnd SubPrivate Sub Command2_Click()ReDim tm%(5)tm%(0) = Rnd * 32768tm%(1) = Rnd * 32768tm%(2) = Rnd * 32768tm%(3) = Rnd * 32768tm%(4) = Rnd * 32768If Not WriteTable(4, tm%()) Then Text1.SelText = "写入错误!!" End SubPrivate Sub Exit_Click()Unload MeEndEnd SubPrivate Sub Form_Load()Comm1.PortOpen = TrueEnd SubPrivate Sub Form_Unload(Cancel As Integer)Comm1.PortOpen = FalseEnd SubPrivate Sub CalcCRC(mes$)Dim byt%, res&'对消息进行crc校验,然后将结果添加到消息结尾。
VB与PLC的通信
利用VB6.0 实现PC 与三菱PLC 的通信本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用编程电缆作为计算机与 PLC 通信的连线。
FX2系列PLC的编程接口采用RS-422标准,而计算机的串行口采用的是RS-232标准,因此作为实现PLC与计算机通信的接口模块FX-232AW,必须将RS-422标准转换成RS-232标准,同时在实现上述过程中采用光电隔离技术。
图1一、串口的相关知识1)串行通信的概念图2所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
如图2所示。
这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢2)常见的串口通信规约:目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。
最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,且直接用RS232相连。
RS-232C: “1”=-3~-15;“0”=+3~+15速率:0~20000bps;一般传输距离:15m。
RS-422:采用平衡传输,平衡发送器、差动接收器,速率:10Mbps/15m;90Kbps/1200m抗干扰能力强。
DB9和DB25的常用信号脚说明由于FX 2-232AW 价格过贵所以我们选用选用MAXIM 公司的MAX202实现RS-232与TTL 之间的电平转换。
MAX202内部有电压倍增电路和转换电路,仅需+5V 电源就可工作,使用十分方便;选用MAX490实现RS-485与TTL 之间的转换。
每片MAX490有一对发送器/接收器,由于通信采用全双工方式,故需两片MAX490,另外只需外接4只电容即可。
怎样才能让VB和PLC相互通讯传输数据
性)按钮,打开属性对话框。将“MPI”栏中的“TransmissionRate”(波特率)设置为187.5 kbit/s,其他参数可以采用默认设置。在“Local Connection”选项卡“COM Port”选择框中设置实际使用的Pc串口的编号,波特率可以设置为19.2 kbit/s
2.用OPC Server软件实现通信连接
西门子的PLC,除了用组态软件可以和PLC通讯外,也可以用VB和它通讯,但是必须利用西门子公司发布的PRODAVE软件包(其实就是一个库函数包).PRODAVE提供了大量函数,我门可以利用这些函数解决PLC与PC的数据交换和处理.当然这些函数是可以在VB中调用的,只要在模块里声明一下就可以了. 给你举两个简单例子: load tool.这个用来将计算机与PLC连接起来, unload tool.是用来断开连接的. a_field_read(a,b,c).这个可以从PLC读取数据到计算机 a_field_write(a,b,c).用来写数据到PLC. 就举这么四个典型例子,看起来似乎挺简单,其实还有好多好多问题需要解决,比如从PLC不同的数据存储区读取数据所用的函数不同.还有初始的参数设置,地址设置,读写函数的参数设置,即使参数都设置对了,如何判断连接上否,即使连上了如何判断,数据读写有没有错误,有了错误如何判断是哪种错误.所以,也许你能看出,PLC和PRODAVE的知识在编写中的关键性并不低于VB. 一般都是用PLC的串口编一个协议,然后利用VB里面的通讯控件进行通讯的。例如omron是用hostlink来做的。三菱一般是用RS指令,松下是用trns来做的。
VB与PLC通讯程序教学
VB与PLC通讯程序教学为什么要学习编制VB与PLC通讯程序,学会编制VB与PLC通讯程序有什么用呢?简单地说:省成本!小型的控制系统触摸屏即可胜任,5.7寸的屏价格不一。
便宜也就一千多点,这个时候用VB做PLC 的上位机控制系统当然是不合算。
当控制系统要求上位机与PLC的通讯量很大时,触摸屏已经不能胜任了,需要用到组态软件。
组态软件确实是好东西,但是我们小家小业的,还是省着点好。
此时VB就派上用场,用VB在电脑上编制一套PLC通讯程序,如果我们的脑力劳动暂不计成本的话,一台电脑几千元基本就搞定了上位机与PLC的通讯。
怎么才能学会用VB编制PLC的上位机通讯程序呢?1、买一个VB6.0中文企业版的软件(VC,DELPHI,VB三合一的光盘也不过二十元左右)2、买本VB入门基础书,边看边练习做些小程序(别不舍得花钱,网上虽然可以下载,但是看起来并不方便,影响您的学习进度)3、VB看几天就可以了,VB与PLC通讯只需要应用几个简单的VB控件而已。
如文本框用来读、写PLC寄存器的值,按钮用来置、复位PLC位元件,文字标签用来显示PLC位元件的ON、OFF状态,三个控件应用就可以学会编制VB与PLC通讯程序了。
您先学会了VB与PLC通讯方法,后期您再努力学好VB。
(真正用到工程上,VB要学很长时间呢)4、查找一些有关通讯方面的书籍翻翻,了解一下通讯格式是怎么回事。
比如说波特率,停止位,开始位,校验位,数据位。
看不懂没关系,先记住这些概念,在学习编制VB与PLC通讯程序的过程中您会理解这些(实践是最好的老师)5、找一些别人做好的VB与PLC通讯程序看,别幻想您自己做出来,除非您基础雄厚,时间也雄厚(时间是金钱,参考是捷径。
)6、找一个朋友帮忙指导,还是不要幻想自己看懂找到的VB与PLC通讯程序,除非您基础雄厚,时间也雄厚(好学生也需要进学校学习,听课比自学学得好又快是真理。
)7、学懂了VB与PLC通讯的原理与程序编制方法后,千万别因满足而停止,动手去编制自己的VB与PLC通讯程序。
vb与plc通讯(以西门子S7-200为例)
vb与plc通讯(以西门子S7-200为例)S7-200 PLC之PPI协议通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。
这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。
在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。
在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。
采用这种方式,PLC 编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。
SIEMENSS7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。
如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。
这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。
软件设计系统中测控任务由SIEMENSS7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。
计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。
PPI协议西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。
VB与PLC通讯示例
2. 啤酒稀释的人机操作界面:
人机操作主要用来输入啤酒浓度数据、操作命令,直观显示各种流量数据并记录偏差曲线,界面图如下:
3. 硬件配置
本例子中上位机PC选用联想奔腾Ⅱ品牌机,外加RS232转RS485通讯转换卡。下位机PLC选用三菱FX2N-16MR,另加模拟输入模块FX2N-2AD 和模拟输出模块FX2N-2DA各一块,外加一个485串口通讯模块PC-485BD。
表格中粗体字为需要求和效验的部分;
和效验为每一项的ASCII值的总和转换成十六进制后,取其低两位;
站号、PLC号、元件数量、和效验都是以十六进制表示;
等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
1) 批量读出位元件—BR指令格式
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和校验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和校验
9 10 11 12 13 14
2) 计算出加水量的百分比 [(B-A) / A]*100% ;
3) 根据此百分比和高浓酒的瞬时流量,计算出脱氧水要达到的流量;
4) 比较水的瞬时流量和计算出的流源自,来控制水调节阀的开度,使水瞬时流量等于计算流量。
由于酒和水的瞬时流量是变化的,所以3)、4)步要反复进行。以上所有的计算功能和PID调节功能都由PLC完成。
cha = Val("&H" & iNum) * 4 ''数据寄存器的值为十六进制表示,占4个字符
Case "M", "X", "Y" ''查询继电器触电的值
vb与plc通讯
vb与plc通讯(以西门子S7-200为例)S7-200 PLC之PPI协议通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。
这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。
在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。
在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。
采用这种方式,PLC 编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。
SIEMENSS7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。
如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。
这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。
软件设计系统中测控任务由SIEMENSS7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。
计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。
PPI协议西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。
ABPLC通讯设置
ABPLC通讯设置Logix 1500 Plc(RS232口)与PC通讯RS232PLC PC(9D插头)3(Txd)――――2(Rxd)2(Rxd)――――3(Txd)5(GND)――――5(GND)开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLinx菜单Communictions—〉〉Configure Drivers 显示如下:创建新设置,“RS-232 DF1 devices”选择“AB_DF1-1”设置串口,及Device,鼠标点击“自动配置”测试成功后界面PLC以太网模块通讯设置下一步输入模块IP地址(出厂默认192.168.1.254)RSLinx—〉communictions—〉RSWho,打开PLC编程软件,开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLlogix 500English新建配置PLC的CPU型号双击“IO Configuration”,添加PL其他模块双击“Channel Configuration”检查通讯设置界面1界面2界面3界面4PLC在线测试测试成功画面VB于ABPLC之间的DDE设置判断RSLinx是否运行开始—〉〉程序—〉〉Rockwell software —〉〉RSLinx—〉〉RSLinx打开的界面查看PLC寄存器的值:菜单Communictions—〉〉RSWho 显示如下:鼠标右键点击“01,SLC-5/04,UNTITLED”,再点“Data Monitor”,显示显示PLC内N7寄存器的实时值(事先要定义N7地址)建立DDE连接:鼠标右键点击“01,SLC-5/04,UNTITLED”,再点“Configure New DDE/OPC”,显示更改DDE默认名称“UNTITLED”为VB程序引用的实际名字。
VB程序设置:<1>先判断“RSLINX.EXE”是否运行On Error GoTo ErrFlagAppActivate "RSLinx"Exit SubErrFlag:Call Shell("C:\Program Files\Rockwell Software\RSLINX\RSLINX.EXE", vbHide) <2>建立DDE连接Label1.LinkTopic = "RSLINX|UNTITLED" ‘DDE名字Label1.LinkItem = "N7:0" ‘ N7寄存器地址Label1.LinkMode = 1 ‘1:Automatic。
vb 网口与plc 通讯
vb 网口与plc 通讯在现代工业领域中,VB(Visual Basic)和PLC (Programmable Logic Controller)在实现设备之间的通讯中起到了重要的作用。
而VB与PLC间的网口通讯更是实现了数据传输的便捷与高效。
本文将探讨VB网口与PLC通讯的相关知识,介绍其基本原理、通讯方式以及应用案例等。
一、VB网口与PLC通讯的基本原理VB网口与PLC通讯的基本原理是通过网线将VB程序与PLC 设备连接起来,实现数据的传输与交互。
在这个过程中,VB程序可以向PLC发送命令,读取或写入PLC内部的数据,同时也可以获取PLC发送的状态或数据。
这种通讯方式具有高速、稳定的特点,为工业自动化控制提供了一种可靠的手段。
二、VB网口与PLC通讯的方式1. Modbus通讯方式Modbus通讯是一种广泛使用的通讯协议,被众多PLC设备所支持。
在VB与PLC通讯中,可以通过Modbus协议实现数据的读写。
通过这种方式,VB程序可以向PLC发送Modbus命令,读取PLC中的参数或状态,并将结果反馈给用户。
2. 自定义通讯协议除了Modbus通讯方式外,还可以根据实际需求自定义通讯协议。
采用自定义通讯协议的方式可以更加灵活地进行数据的传输与处理。
VB程序与PLC通过网口连接后,通过自定义的通讯协议进行数据的读写操作,实现设备间的通讯与控制。
三、VB网口与PLC通讯的应用案例VB网口与PLC通讯的应用案例非常丰富,下面以自动化生产线为例进行说明。
假设在一条自动化生产线上,需要对不同工位的设备进行监控和控制。
通过VB网口与PLC通讯,可以实现以下功能:1. 监测设备状态:通过读取PLC中的状态位,可以实时监测设备的运行情况,如设备是否正常工作、是否存在故障等。
当设备出现异常时,VB程序可以及时发出警报并采取相应的措施。
2. 设备控制:通过向PLC发送控制命令,可以实现对设备的远程控制。
例如,当需要停止某个工位的设备时,VB程序可以向PLC发送关闭信号,PLC接收到信号后即可停止对应设备的运行。
VB通过网口与plc通讯
VB通过网口与plc通讯在工业自动化领域,控制器之间的通讯是非常关键的一环。
而常用的通讯方式之一就是通过Visual Basic(VB)与可编程逻辑控制器(PLC)进行通讯。
通过VB与PLC的通讯,可以实现对PLC进行数据读写、实时监控和远程控制等功能。
下面将介绍一些关于VB通过网口与PLC通讯的方法和步骤。
1. 环境准备首先,需要确保环境准备工作完成。
这包括安装VB开发环境和PLC通讯驱动程序等。
在VB中,可以使用Socket或者Modbus组件来实现与PLC的通讯。
而PLC通讯驱动程序则需要根据具体使用的PLC品牌和型号进行选择和安装。
2. 确定通讯方式在进行VB与PLC通讯之前,需要确定通讯的方式。
常见的通讯方式有以太网通讯和串口通讯两种。
如果选择以太网通讯,就需要确保PLC和计算机在同一局域网内,并且能够互相访问。
而串口通讯则需要连接串口线,适用于一些没有以太网接口的老型号PLC。
3. 设置通讯参数在进行VB与PLC通讯之前,还需要设置通讯参数。
这包括PLC的通讯地址、端口号、通讯协议等。
通常可以通过PLC通讯驱动程序提供的API或者官方文档来获取这些参数,然后在VB 程序中进行设置。
4. 实现数据读写一旦通讯参数设置完毕,就可以开始实现数据读写了。
在VB 中,可以使用Socket组件来进行数据的读写。
首先需要建立与PLC的连接,然后发送数据请求并接收返回的数据。
根据PLC的不同,数据的读写方式也有所区别,常见的有读取PLC的寄存器值、写入PLC的寄存器值等。
5. 实时监控与远程控制VB通过网口与PLC通讯的一个重要应用就是实现实时监控和远程控制功能。
通过读取PLC的数据,可以实时监测工业生产过程中的各项指标,如温度、压力、流量等。
而通过写入PLC的数据,则可以对生产设备进行远程控制,如启动、停止、调节参数等。
6. 异常处理与调试在进行VB与PLC通讯的过程中,可能会出现一些异常情况,如通讯错误、连接中断等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB与AB的PLC之间通讯
2007-05-31 来源:西部工控网浏览:300
[推荐朋友] [打印本稿] [字体:大小]
VB与AB PLC之间通讯
AB系列PLC一般都有专用驱动程序用于实现PLC和计算机之间通讯,如RSLINX 就是专门用于做这项工作,但使用RSLINX也具有一定局限性,这里提供一个使用VB编程实现PLC和计算机之间通讯程序,使用协议是DF1,可以支持Micrologix、SLC500等系列PLC。
使用代码如下:
Option Explicit
Dim tns%, comunicating
Private Sub Command1_Click()
ReDim tb%(10)
Dim st
If ReadTable(0, tb%()) Then
For st = 0 To 9 '显示结果
Text1.SelText = Str(tb%(st)) + Chr(32)
Next st
Text1.SelText = Chr(13) + Chr(10)
End If
End Sub
Private Sub Command2_Click()
ReDim tm%(5)
tm%(0) = Rnd * 32768
tm%(1) = Rnd * 32768
tm%(2) = Rnd * 32768
tm%(3) = Rnd * 32768
tm%(4) = Rnd * 32768
If Not WriteTable(4, tm%()) Then Text1.SelText = "写入错误!!"
End Sub
Private Sub Exit_Click()
Unload Me
End
End Sub
Private Sub Form_Load()
Comm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
Comm1.PortOpen = False
End Sub
Private Sub CalcCRC(mes$)
Dim byt%, res&
'对消息进行crc校验,然后将结果添加到消息结尾。
byt% = 3
Do
res& = res& Xor Asc(Mid(mes$, byt%, 1))
rotate res&
If Asc(Mid(mes$, byt%, 1)) = 16 Then
mes$ = Left$(mes$, byt%) + Chr(16) + Right$(mes$, Len(mes$) - byt%)
byt% = byt% + 1
End If
byt% = byt% + 1
Loop While (byt% <= Len(mes$) - 2)
res& = res& Xor 3
rotate res&
mes$ = mes$ + Chr(res& Mod 256) + Chr(Int(res& / 256))
End Sub
Function ReadTable(start, n%())
Dim st, com$
'从PLC CIF数据表中读取数据, Micrologix=N7 SLC500=N9
If comunicating Then Exit Function
comunicating = True
m1.InputLen = 0 '清缓冲区
com$ = m1.Input
'构建消息
com$ = Chr(16) + Chr(2) + Chr(0) + Chr(0)
com$ = com$ + Chr(1) + Chr(0) + Chr(tns%) + Chr(0)
com$ = com$ + Chr(start) + Chr(0) + Chr(UBound(n%) * 2)
com$ = com$ + Chr(16) + Chr(3)
'进行crc计算并附加到结尾。
CalcCRC com$
tns% = tns% + 1
If tns% = 256 Then tns% = 0
'发送命令
m1.Output = com$
'等待确认
st = Timer
Do
DoEvents
Loop While st + 3 > Timer And m1.InBufferCount < 2 '从缓冲中移除确认
m1.InputLen = 2
com$ = m1.Input
If com$ <> Chr(16) + Chr(6) Then
comunicating = False
Exit Function
End If
st = Timer '等待应答
Do
DoEvents
Loop While st + 3 > Timer And m1.InBufferCount < 12 + (UBound(n%)
* 2)
'超时则退出
If m1.InBufferCount < 12 + (UBound(n%) * 2) Then comunicating = False
Exit Function
End If
'发送确认
m1.Output = Chr(16) + Chr(6)
'到应答
m1.InputLen = 0
com$ = m1.Input
st = 3
Do
If Mid(com$, st, 1) = Chr(16) Then
com$ = Left(com$, st) + Right(com$, Len(com$) - 1 - st)
End If
st = st + 1
Loop While st < Len(com$) - 4
'保存结果
For st = 0 To UBound(n%) - 1
n%(st) = 256 * Asc(Mid(com$, 2 * st + 10, 1)) + Asc(Mid(com$, 2 * st + 9,
1))
Next st
ReadTable = True
comunicating = False
End Function
Private Sub rotate(res&)
Dim bitout%, shift%
For shift% = 1 To 8
bitout% = res& Mod 2
res& = Int(res& / 2)
If bitout% Then
res& = res& Xor &H1000A001
res& = res& - &H10000000
End If
Next shift%
End Sub
Function WriteTable(start, n%())
Dim st, com$
'写到PLC CIF数据表, Micrologix=N7 SLC500=N9
If comunicating Then Exit Function
comunicating = True
m1.InputLen = 0
com$ = m1.Input
com$ = Chr(16) + Chr(2) + Chr(0) + Chr(0)
com$ = com$ + Chr(8) + Chr(0) + Chr(tns%) + Chr(0)
com$ = com$ + Chr(start) + Chr(0)
For st = 0 To UBound(n%)
com$ = com$ + Chr(n%(st) Mod 256) + Chr(Int(n%(st) / 256)) Next st
com$ = com$ + Chr(16) + Chr(3)
tns% = tns% + 1
If tns% = 256 Then tns% = 0
CalcCRC com$
m1.Output = com$
st = Timer
Do
DoEvents
Loop While st + 3 > Timer And m1.InBufferCount < 2 m1.InputLen = 2
com$ = m1.Input
If com$ <> Chr(16) + Chr(6) Then
comunicating = False
Exit Function
End If
st = Timer
Do
DoEvents
Loop While st + 3 > Timer And m1.InBufferCount < 12
m1.Output = Chr(16) + Chr(6) If m1.InBufferCount < 12 Then comunicating = False
Exit Function
End If
m1.Output = Chr(16) + Chr(6) WriteTable = True
comunicating = False
End Function
第1页/共1页。