直播课堂
HOME
直播课堂
正文内容
vsmfc编程通讯plc VB串口通信
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

VB串口通信

描述

  上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。

  上位机工作原理

  两机如何通讯,一般取决于下位机,TCP/IP一般是支持的,但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯,里面会举大量例子,一般对编程人员而言一看也就那么回事,使用一些新的API(API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节罢了,多语言支持功能模块,一般同时支持数种高级语言为上位机编程。

  通常上位机和下位机通讯可以采用不同的上位机示例图片通讯协议,可以有RS232的串口通讯或者采用RS485串行通讯。当用计算机和PLC通讯的时候,不但可以采用传统的D形式的串行通讯,还可以采用更适合工业控制的双线的PROFIBUS-DP通讯。采用封装好的程序开发工具就可以实现PLC和上位机的通讯,当然可以自己编写驱动类的接口协议控制上位机和下位机的通讯。

  通常工控机,工作站,触摸屏作为上位机,通信控制PLC,单片机等作为下位机,从而控制相关设备元件和驱动装置。

  上位机开发的软件

  1、visual studio 2008

  Microsoft Visual Studio 2008是面向Windows Vista、Office 2007、Web 2.0的下一代开发工具,代号“Orcas”,是对Visual Studio 2005的一次及时、全面的升级。

  VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用程序。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。

  2、MFC

  是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

  3、Qt

  Qt[1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。

  4、GTK

  GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。最初是为GIMP写的,已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。并且,GTK+也有Windows版本和Mac OS X版。

  5、wxWidgets

  wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。一个支持OS/2的版本正在开发中。开源跨平台, 和 CodeBlocks (开源跨平台的IDE)配合的很好, 而且可以用 wxSmith 很方便的设计界面。 而且学过MFC上手 wxWidgets 很快。

  上位机快速开发教程

  (1)准备工作

  一台装有VS2010的计算机,用于测试的虚拟串口软件。同时你必须具有VB基础知识,这个VB上位机开发是入门级的,仅将VB.NET通信基础方法稍作介绍。

  (2)串口通信常识

  在串口通信中,通过编写单片机程序知道,我们应对如下参数进行设置:波特率、数据位和停止位、奇偶校验位。如果自己编写上位机的时候,我们考虑的不能仅仅是这些了,下面介绍上位机开发过程中需要特别注意的知识点。

  MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。

  常用属性和方法

  利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法:

  ●Commport:设置或返回串口号。其值从COM1到COM16。

  ●Settings:以字符串的形式设置或返回串口通信参数。

  ●Portopen:设置或返回串口状态。

  ●InputMode:设置或返回接收数据的类型。有文本和二进制两种类型。

  ●Inputlen:设置或返回一次从接收缓冲区中读取字节数。

  ●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

  ●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

  ●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

  ●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

  ●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

  ●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

  ●Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

  ●Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。

  ●CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。

  (3)开发步骤(仅供参考)

  1. 运行VS2010,新建一个Visual Basic的Windows窗体应用程序项目。将窗体的StartPosition属性改为CenterScreen,运行程序时,窗体在屏幕中央显示。

  2. 由于默认情况下,通信所需的“Microsoft Communications Control,version 6.0”组件不在工具箱里面,所以我们需要手动添加。单击左侧的工具箱,并在控件栏单击鼠标右键,在弹出的菜单中选中“选择项”,在弹出的对话框中单击“COM组件”并选中“MicrosoftCommunications Control,version 6.0”,单击确定即可完成添加。

  此时移动鼠标到窗体上时,鼠标箭头就会变成电话的形状,在窗体任意位置单击放置该控件。

  3. 单击工具箱,在窗体上添加5个Label,并在属性里将Text属性依次改为:串口号、波特率、校验、数据位、停止位。再向窗体上添加5个ComboBox,从上到下依次排列。 4. 向窗体添加一个OvalShape和一个Button。将OvalShape的size属性改为“24,24”,FillStyle改为Solid。

  5. 向窗体添加一个CheckBox、一个按钮Button和一个TextBox,将CheckBox的Text属性改为“十六进制发送”将这个按钮的text属性改为“发送”。

  6. 向窗体添加一个Label和一个TextBox。更改Label的Text属性为“接收区”。 7. 向窗体添加一个CheckBox,将其Text属性改为“十六进制显示”

  下面将要对部分控件进行设置,这样可以减少代码的长度 将波特率一栏ComboBox的Item属性中添加如下内容:

  将校验一栏ComboBox的Item属性中添加如下内容

  将数据位一栏ComboBox的Item属性中添加如下内容

  将波特率一栏ComboBox的Item属性中添加如下内容

  四、源代码

  Public Class Form1 Dim cpSetting As String

  Dim com_last_num As Integer = 0 ‘定义一个全局变量,作用为记录上一个串口号 Sub GetSerialPortNames() ’搜索计算机中所有可用串口函数 On Error GoTo eRRHND ‘错误处理 ’搜索计算机中可用串口

  For Each sp As String In My.Computer.Ports.SerialPortNames ComboBox1.Items.Add(sp) Next

  ComboBox1.Sorted = True

  ComboBox1.SelectedIndex = 0 ‘选择搜索到的第一个串口名称 Exit Sub

  eRRHND: ’表示未搜到串口 MsgBox(“Oh, NO!”) End Sub

  ‘检测串口是否可用函数

  Private Function Test_COM(ByVal com_num As Integer) As Boolean

  If com_num 《》 com_last_num Or Button1.Text = “打开端口” Then ’如果选择的端口跟上次一样就不检测了

  On Error GoTo Comm_Error

  AxMSComm1.CommPort = com_num ‘将新串口号赋给ComPort

  AxMSComm1.PortOpen = True ’打开串口

  AxMSComm1.PortOpen = False ‘关闭串口

  Test_COM = True ’串口可用则返回

  Exit Function

  Comm_Error: ‘根据错误号作出相应处理 If Err.Number = 8002 Then

  MsgBox(“串口错误,请重新选择串口”, vbOKOnly, “错误提示!”) ElseIf Err.Number = 8005 Then MsgBox(“串口已打开!”) Else

  MsgBox(“其它错误”) End If

  Test_COM = False ’如果出错,则返回0 Exit Function Resume Next End If End Function

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ‘载入窗体初始化

  GetSerialPortNames() ’将搜到的串口在下拉菜单中显示出来

  AxMSComm1.InBufferSize = 1024 ‘接收缓冲区大小,此项无法在串口打开时进行设置 AxMSComm1.OutBufferSize = 1024 ’发送缓冲区大小 ComboBox2.Text = “9600” ComboBox3.Text = “无校验” ComboBox4.Text = “8” ComboBox5.Text = “1” ChangePortProperty()

  ‘设置接收数据的格式为二进制

  AxMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary AxMSComm1.InputLen = 0 ’设置从缓冲区读取全部数据 AxMSComm1.RThreshold = 1 ‘设置接收串口OnCommon事件 AxMSComm1.PortOpen = True ’打开串口 If AxMSComm1.PortOpen = True Then

  OvalShape1.FillColor = Color.Green ‘OvalShape颜色设为绿色 Button1.Text = “关闭端口” ’按钮上的文字显示为关闭端口 Else

  OvalShape1.FillColor = Color.Red ‘OvalShape颜色设为红色 Button1.Text = “打开端口” ’按钮上的文字显示为打开端口 End If End Sub

  ‘打开关闭串口代码

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  Dim ptNum As Integer ’通过串口名称获取串口号

  If Len(ComboBox1.SelectedItem) 》 4 Then

  ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2)) Else

  ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1)) End If

  If AxMSComm1.PortOpen = False Then ‘如果串口是关闭的 If Test_COM(ptNum) = True Then ’如果选择的串口可用? ‘ ChangePortProperty()

  AxMSComm1.PortOpen = True ’则打开该串口

  Button1.Text = “关闭端口” ‘按钮上的文字显示为关闭端口 OvalShape1.FillColor = Color.Green ’OvalShape颜色设为绿色 End If Else

  AxMSComm1.PortOpen = False ‘关闭该串口

  OvalShape1.FillColor = Color.Red ’OvalShape颜色设为红色 Button1.Text = “打开端口” ‘按钮上的文字显示为打开端口 End If End Sub

  ’如下是访问网站的链接的代码,可以选择访问网站的浏览器,这里只使用默认的IE浏览器 Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked LinkLabel1.LinkVisited = True

  System.Diagnostics.Process.Start(“www.baidu.com/p/huzhiqianglz”) End Sub

  ‘处理发送数据的代码

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  Dim hexString() As Byte Dim source_Txt As String Dim i As Integer

  source_Txt = TextBox1.Text ’将要发送的数据存放到变量source_Txt中

  If CheckBox1.CheckState = CheckState.Checked Then ‘如果十六进制发送复选框被勾上 If Len(source_Txt) Mod 2 = 0 And Len(source_Txt) 《》 0 Then ’如果将要发送的数据长度不为或者能被2整除

  ReDim hexString(Len(source_Txt) / 2 - 1) ‘重新定义hexString数组 For i = 0 To Len(source_Txt) - 1 Step 2

  hexString(i / 2) = Val(“&H” & Mid(source_Txt, i + 1, 2)) ’将hexString转换成十六进制显示

  Next

  AxMSComm1.Output = hexString ‘将转换的数据发送到串口 Else ’否则提示格式不正确 MsgBox(“格式不正确!”) End If

  Else ‘否则输出字符串

  AxMSComm1.Output = TextBox1.Text

  End If End Sub

  Sub ChangePortProperty() Dim comSetting As String Dim parity As String = “” ‘关闭端口

  If AxMSComm1.PortOpen = True Then AxMSComm1.PortOpen = False End If ’获取串口号

  If Len(ComboBox1.SelectedItem) 》 4 Then

  AxMSComm1.CommPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2)) Else

  AxMSComm1.CommPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1)) End If ‘设置校验方式

  If ComboBox3.Text = “无校验” Then parity = “N”

  ElseIf ComboBox3.Text = “奇校验” Then parity = “O”

  ElseIf ComboBox3.Text = “偶校验” Then parity = “E” End If

  comSetting = ComboBox2.Text & “,” & parity & “,” & ComboBox4.Text & “,” & ComboBox5.Text

  ’串口设置格式:9600,N,8,1 AxMSComm1.Settings = comSetting End Sub

  ‘将十进制转换为16进制

  Private Function Decimal2Hex(ByRef c As String) As String Decimal2Hex = Hex(CInt(c)) If Len(Decimal2Hex) 《 2 Then

  Decimal2Hex = “0” & Decimal2Hex End If End Function

  ’串口号发生改变的处理程序

  Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged ChangePortProperty()

  End Sub

  Private ReadStr As String = “”

  Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs)

  Handles AxMSComm1.OnComm

  Dim i As Object

  Dim bytData As Object ‘用来从接收缓冲区读取数据

  Select Case AxMSComm1.CommEvent ’

  对接收事件进行处理

  Case MSCommLib.OnCommConstants.comEvReceive

  bytData = AxMSComm1.Input ‘将接收到的数据暂存 For i = 0 To UBound(bytData)

  If CheckBox2.CheckState = CheckState.Checked Then

  ReadStr = ReadStr & Decimal2Hex(CStr(bytData(i)))

  Else

  ReadStr = ReadStr & CStr(bytData(i))

  End If

  Next

  TextBox2.Text = ReadStr ’将转换后的数据在接收区显示

  End Select

  End Sub

  End Class

  五、程序中用到的几个函数解释

  Microsoft.VisualBasic.Strings.Right(String,Num):将字符串从右边开始截取字符串String中Num个字符。例如当String的值为“Welcome”,Num值为3,则该函数返回的值为字符串“ome”。另外通过将COM1拆分即可得到1,这是上例中得到得到串口号的方法。

  Val(String):将字符串类型转换为数值型。例如String为字符串“123”,则返回值为数值型123。 Hex(Integer):将整型数转换为16进制数。如:Integer为13,则返回十六进制的D

  其实有些函数看不懂也没关系,可能我介绍的不是很详细,有些资料上网查一下也很方便的,这里就不再多罗嗦了。

虹科HK-OEM:一个为工业设备扩展多种主流协议接口的通讯模块

作者 | 虹科电子

随着工业4.0的演变和推进,数据交互是其中重要组成部分,现场设备集成各种工业通讯协议变得尤为不可或缺。今天,就给您介绍一款为工业设备扩展多种主流协议接口的通讯模块:虹科HK-OEM。

现场总线(Fieldbus)是20世纪80年代末国际上开始发展形成的一种工业数据总线,是连接现场设备和控制系统之间的一种开放式的、全数字化的、双向传输的、多分支结构的通信网络。而工业以太网是以太网在工业控制领域的延伸。严格意义上说,工业以太网是现场总线的子集,但又区别于传统的现场总线。工业以太网技术的发展,是由于高速以太网技术、交换式以太网技术以及全双工通信模式技术的发展及其相互结合和应用,提高了以太网通信的可靠性和实时性,在技术上与IEEE 802.3标准兼容。

目前市场上现场总线和工业以太网还没有形成真正统一的标准,CAN、PROFIBUS、Modbus、Ethernet/IP、PROFINET、EtherCAT等多种标准并行存在,广泛应用于过程自动化、医药、加工制造、交通运输、国防、航天、农业和楼宇等领域。如今,随着工业4.0的演变和推进,数据交互是其中重要组成部分,现场设备集成各种工业通讯协议变得尤为不可或缺。

简单易用的通信模块

虹科HK-OEM通信模块工作原理

虹科HK-OEM通讯模块是一款适用于工业以太网和现场总线协议的嵌入式IC模块,能够使用户的设备快速、方便地连接到工业网络中,而不需要进行大量的开发工作。这将极大地节省研发成本,尤其体现在引进新产品的开发时间成本上,可以使产品快速上市。该模块上具备运行协议栈与数据处理所需的组件,包括专用协议芯片、微控制器、内存以及散热器等,因此不会给需要集成工业网口接口的现场设备带来额外负担。

该系列通讯模块预留了三组插针,便于连接到设备控制器与扩展外围硬件接口,包括USAST接口、SPI接口、供电电源、模块复位、工业以太网接口或现场总线接口。该模块作为设备与现场总线之间的“桥梁”,为用户通过USART和SPI接口与设备控制器交换实时网络数据提供了基础性支持,报文格式参照MODBUS协议。此外,该模块还具备32个引脚的数字量I/O信号,可以直接满足32个点的数字量I/O设计,这32个I/O引脚可以任意设置成DI或DO。由于采用了通用的针脚分配,该系列的工业以太网和现场总线通讯模块都可以简单快速地被替换,为检修提供了便捷的同时,还能最大程度缩短更换升级的时间。

主要特性:

虹科HK-OEM通讯模块关键特性:

1) 支持PROFINET、EtherNet/IP、EtherCAT、Modbus TCP、CANopen、Profibus、DeviceNet等实时通信协议;

2) 具备32个引脚的数字量I/O信号,可以直接满足32个点任意DI或DO的IO设计;

3) 对用户开放了2种串行接口,包括USART接口和SPI接口,报文内容参照标准MODBUS协议;

4) 通用的针脚分配,可互换的接口,支持主流工业网络通讯协议;

5) 允许用户自定义厂商名称、厂商标识、产品型号等产品信息;

虹科HK-OEM通讯模块由于其紧凑的尺寸设计,可以嵌入到小型设备或通信接口空间小的设备当中,用以开发各类仪器仪表、传感器、远程I/O、网关等设备,尤其适用于工业物联网、仪表传感器行业、数据采集、自动化等领域。

典型应用案例

案例背景

质量流量控制器(Mass Flow Controller,缩写为MFC)用于对于气体或者液体的质量流量进行精密测量和控制。它由一个入口,一个出口,一个质量流量传感器和一个比例控制阀组成。质量流量传感器采集的数据与控制器输入信号进行比较,并相应地调节比例阀以达到所需流量。MFC常用于制药、生物技术、石油、天然气、化学和工业气体行业以及食品和饮料等行业。

传统质量流量控制器面临的问题:

1 无法兼容现场PLC控制器

如今,在各行各业的现场应用中也开始逐步引入了通讯速率更高、实时性更好的PLC控制器,如支持PROFINET、EtherNet/IP、EtherCAT等通讯方式的PLC控制器,而质量流量控制器本身应用领域比较广,需要现场控制器为其发送控制参数或者采集现场数据,因此传统的质量流量控制器可能无法与现场PLC兼容。

1 集成工业通讯协议难度大

PROFINET、EtherNet/IP、EtherCAT等通讯协议本身在开发难度上较大,开发周期也很长,MFC制造商需要对相应的通讯协议研究比较深入才能独立实现相应的协议代码。显然,这并不是一种很好的解决方案。

MFC集成PROFINET通讯接口过程

1)案例描述

本案例以质量流量控制器集成PROFINET通讯为例,可以采用HK-OEM通讯模块并作为MFC与西门子PLC之间通讯的“中间件”。在实际使用过程中,用户只需要采用支持PROFINET协议的HK-OEM通讯模块,并根据该模块预留的外围硬件电路接口,实现原有MFC与该通讯之间的USART通讯或SPI通讯即可集成PROFINET通讯接口,无需去熟悉与PROFINET协议相关的内容。现场应用中,熟悉PROFINET网络组态的工程师,可直接利用虹科HK-OEM通讯模块配套的GSD文件导入到配置软件中进行配置,便可建立与MFC设备之间的PROFINET通讯。

2)虹科HK-OEM通讯模块数据区定义

根据功能的不同,HK-OEM模块用到的数据区划分为5个区域,分别是:通讯信息区、下发数据区、下发参数区、设备信息区、上传数据区。HK-OEM模块在状态机“S1 握手”阶段读取设备信息区的数据,由于PROFINET模块目前未使用此区域的内容,所以用户仅需要正确回复报文即可。

下发数据:4xxxx区 - 10H功能码:

上传数据:3xxxx区 - 04H功能码:

3)程序状态机

无论使用USART还是SPI,HK-OEM模块都做为主站运行,遵循下面的状态机,完成HK-OEM模块与外部MCU之间的握手后,开始进行数据交互:

4)示例程序

本示例以USART实现数据交互为例。

① USART接口规定如下:

USART接口波特率支持:9.6Kbps、19.2Kbps、38.4Kbps、57.6Kbps、115.2Kbps、230.4Kbps、460.8Kbps;

HK-OEM模块上电后,在S1握手阶段,通过握手报文,OEM模块可以自动适应用户的波特率。用户使用的波特率需要在以上7种波特率之中;

USART接口数据帧格式:8 个数据位、偶校验、1 个停止位;

USART使用标准MODBUS协议;

HK-OEM模块做为USART通讯主站,用户做为USART通讯从站;

用户串口的处理机制:用户做为标准的MODBUS从站,只需要在收到HK-OEM模块的报文命令后,按照相应命令回复报文即可。

② 通讯报文约定:

A.下发数据

板卡发送:

用户应答:

B.上传数据

板卡发送:

用户应答:

③ 程序代码:

USART配置:

USART接收数据处理:

USART发送数据处理:

USART中断:

MFC与西门子S7-1200 PLC通讯连接

应用概述

现场应用中,PROFINET网络中通常由PROFINET的主站和从站构成,PROFINET主站实现对网络中各从站设备的控制和数据采集,西门子 S7-1200 PLC是常用的PROFINET主站之一。本应用案例中,以集成了PROFINET通讯接口的质量流量控制器作为从站,要实现与西门子 S7-1200 PLC主站的通讯,不仅需要通过网线将MFC设备接入PROFINET网络,同时也需要在主站配置软件TIA Portal中进行适当的网络组态并下载配置给PLC才能正确建立两者之间通讯。

组态配置

1)运行博途TIA Portal软件,新建项目工程后在项目视图中进行PROFINET网络组态。在菜单栏“选项”下拉菜单中选择“管理通用站描述文件(GSD)”,安装HK-OEM通讯模块的GSD文件,在弹出的对话框中选择GSD文件的路径,选中文件并点击安装。

2)在配置界面右侧“硬件目录”导航区中找到HK-OEM通讯模块,将对应的模块标签拖入PLC PN/IE_1网络中,然后点击“未分配”,在弹出的提示框中点击“PLC_1.PROFINET interface_1”,将HK-OEM模块分配到Profinet网络中。

3)在“设备视图”中,首先选择HK-OEM通讯模块,配置其输入输出数据量,并在右侧“硬件目录”导航区中,将所需IO拖入到HONGKE Interface节点下,本例拖入16个字节的输入模块16个字节的输出模块。然后分别选中PLC和HK-OEM通讯模块的以太网口,分配对应的IP地址和子网掩码。

4)以上关于PLC与HK-OEM模块的配置基本完成,便可以选择编译和下载配置至PLC中,PLC会通过组态的参数识别PROFINET网络中设备并建立通讯。下载完成并提示无误后,转到在线模式,便可查看各设备状态,同时添加新监控表,查看数据变化。

总结

通过虹科HK-OEM通讯模块可以让质量流量控制器轻松集成PROFINET、EtherNet/IP、EtherCAT、Modbus TCP、CANopen、Profibus、DeviceNet等实时通信协议,且无需对原有设备做太多修改,从而极大的节约开发工作量和开发成本,轻松地实现与现场应用中各种PLC控制器之间的通讯。同样的,该通讯模块也可以这种方式集成到其他设备中,如RFID,工业读写器,称重设备,罐装设备等,十分适用于当前工业4.0发展需要。

关于虹科

虹科是一家在工业自动化领域,特别是工业总线通讯行业经验超过10年的高科技公司。虹科工业通讯事业部与世界知名的工业通讯专家【PEAK-System,Hilscher,Kunbus,frenzel + berg,CSS-Electronics】等深度合作,提供业内顶尖水平的工业总线协议软硬件产品及解决方案,协议类型包含【CAN、CANopen、Modbus、EtherCAT、Profibus、Profinet、Ethernet/IP,CC-Link】等,产品类型包含芯片、核心板,PC板卡、协议转换网关,总线型IO模块,总线记录仪,协议抓包及故障诊断工具等。虹科工业通讯以客户需求为导向,以技术能力为基础,为国内企业提供最适合的产品和最满意的服务。

相关问答

想学习下如何将PLC发送的指令让软件接收到?

这个功能会涉及哪些知识。首先得了解通讯硬件上的一些常识。比如常见到的通讯方式还是很多的,有RS232,RS485,USB等等。可以事先对这些常用的通讯作一个了解...

我是搞PLC工控的,想学门编程语言,有走过的前辈给推介下?

刚开始我也是编写一些plc程序,做非标设备的。刚好10年时候公司有大量大族激光的设备要改造。都是固高运动卡,大恒图像之类...工业自动化多是plc控制,和你一...

电气自动化需要哪些高级语言?

在西门子的编程软件中就叫做SCL编程,如下图就是在博图软件中建立一个块的时候,就可以选择对这个块的编程语言是什么!还需要说一点的是西门子PLC中还有一种STL...

PLC柜成套在哪可以买到?哪位大神能告诉我?

[回答]PLC柜成套DCS通常采用分级递阶结构,由若干子系统组成,每一个子系统实现若干特定的有限目标,形成金字塔结构。可靠性是DCS发展的生命,要保证DCS的高...

有谁知道:受流器试验台生产厂在哪里?帮忙解答一下

[回答]受流器集电靴试验台试验步骤登陆软件后用户选择“试验选择一第三轨受流器试验窗口“进入测试界面在高位置“和“低位置输入试验的位移值,点击测试位...

做一个点餐小程序多少钱?麻烦解答一下,小程序多少钱做一个?

[回答]合评估,主要包括以下几个方面:是否是实体技...别的都不说,在品质方面,赶超过。不管,反正我非常承认楼上的兄弟所说的详细内容,再次感谢你们如果单...

帮个忙各位老师,请推荐,遵义放心配料称重系统...

[回答]产品名称:失重式喂料机控制器产品描述:该失重式程序是为失重式喂料量身打造的程序。集成了PLC,称重模块和A/D转换模块的功能。避免了称重信号在传输...

麻烦诸位大侠,有谁清楚 江门技术好的视觉检测,视觉检测优...

[回答]全造成威胁,而机器视觉从某种程度上有效地规避了这些风险,...宇丰使用视觉检测系统能有效的提高生产流水线的检测速度和精度,大大提高产量和质量,...

零基础学唱歌到底需要学习哪些内容?麻烦前辈们,帮忙答一下

[回答]将腰围向外松张,让气自然地,流畅地“流进”使腰、后背都有“气感”,胸部也就自然有了宽阔的感觉,比如用“打呵欠”去感觉以上动作。关注微信公众号...

 独立杂志  杨廷和儿子 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部