西门子6ES7222-1BF22-0XA8诚信经营
西门子6ES7222-1BF22-0XA8诚信经营
何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1、在Modbus网络上转输
标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
2、在其它类型网络上转输
在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。
在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
3、查询—回应周期
(1)查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:象寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
二、两种传输方式
控制器能设置为两种传输模式(ASCII 或 RTU)中的任何一种在标准的 Modbus 网络通信。用户选择想 要的模式,包括串口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个 Modbus 网络上的所有设备都必须选择相同的传输模式和串口参数。
ASCII 模式
: | 地 址 | 功能代码 | 数据长度 |
数据 1 |
... | 数 据 n | LRC 高字节 | LRC 低字节 |
回车 | 换行 |
RTU 模式
地址 | 功能代码 | 数据长度 | 数据 1 | ... | 数据 n | CRC高字节 | CRC低字节 |
所选的 ASCII 或 RTU 方式仅适用于标准的 Modbus 网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何jiema。
在其它网络上(象 MAP 和 Modbus Plus)Modbus 消息被转成与串行传输无关的帧。
1、ASCII 模式
当控制器设为在 Modbus 网络上以 ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个 ASCII 字符发送。这种方式的主要优点是字符发送的时间间隔可达到 1 秒而不产生错误。 代码系统
· 十六进制,ASCII 字符 0...9,A...F
· 消息中的每个 ASCII 字符都是一个十六进制字符组成 每个字节的位
· 1 个起始位
· 7 个数据位,小的有效位先发送
· 1 个奇偶校验位,无校验则无
· 1 个停止位(有校验时),2 个 Bit(无校验时) 错误检测域
· LRC(纵向冗长检测)
2、RTU 模式
当控制器设为在 Modbus 网络上以 RTU(远程终端单元)模式通信,在消息中的每个 8Bit 字节包含两个4Bit 的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比 ASCII 方式传送更多的数据。 代码系统
· 8 位二进制,十六进制数 0...9,A...F
· 消息中的每个 8 位域都是一个两个十六进制字符组成 每个字节的位
· 1 个起始位
· 8 个数据位,小的有效位先发送
· 1 个奇偶校验位,无校验则无
· 1 个停止位(有校验时),2 个 Bit(无校验时) 错误检测域
· CRC(循环冗长检测)
1 引言
随着时代的进步,越来越多的企业开始向生产和管理自动化转变。各种智能仪表不断地应用到生产生活的各个领域。在工业控制方面,RS-485总线由于平衡差分传输特性具有的干扰性好、传输距离远 、有较大级连能力等特点,非常适合于组成工业级的多机通信系统。Modbus RTU规约是Modicon公司的注册商标,是目前国际智能化仪表普遍采用的主流通讯协议之一。在各个工业仪器仪表大量使用的,Modbus RTU协议和RS-485总线得到了为广泛的应用。本文主要从应用的角度介绍在一个工业控制系统中,实现该技术的具体方案。
2 Modbus RTU 通讯协议简介
(1) Modbus RTU协议简介
Modbus RTU通讯协议是Modicon公司的注册商标。采用主从问答方式工作,其规范已在国际互联网上公布,是目前国际智能化仪表普遍采用的主流通讯协议之一。目前,国内许多生产商已在他们的产品和系统中遵循该协议标准。该协议有两种传输模式即RTU模式和ASCII模式。其中RTU模式信息帧中的8位数据包括两个4位16进制字符,相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据liuliang。因此通常情况下,一般工业智能仪器仪表都是采用RTU模式的Modbus规约。
(2) Modbus 通信格式
当通讯命令由发送设备(上位机)发送至接收设备(下位机)时,符合相应地址码的下位机就会响应命令,并根据约定的通信协议读取信息、数据校验并且执行相应的功能操作。返回的帧结构包含地址码、功能码、数据以及CRC校验码。
(3)上下位机通信帧约定格式
其中的仪表地址在使用的电压表中是为一个字节定义的,所以多到256个。下位机与上位机的通信波特率一般可自由设定,但必须保证上下机的通信波特率对应匹配。
3 上位机通信软件设计方案
上位机的通信软件采用VB6.0的开发环境。在VB6.0中对串口进行编程可以使用Mscomm控件加快开发进度。该控件主要是为RS-232的通用串口而设计。所以为了利用PC上现有的RS-232接口,通常是使用RS232/485的转换器。这些转换器一般通过逻辑门电路控制RXD、TXD和GND三针信号,从而自动对半双工或全双工的485串口进行控制。通过转换器,我们就可以像开发通用的RS-232串口一样来快速开发基于RS-485串口的上位机通信软件。
(1)初始化程序设计
在初始化程序中,主要是设定好整个帧结构的命令数组、传输波特率、以及一些必须的串口初始设定。具体的操作如下面代码说明
Dim Tcommand(7) As Byte ‘开辟命令帧的帧长度数组
MSComm.CommPort = 1 ‘设定需要使用的串口,当然这里可以用输入方式灵活设定。暂定为1#口
MSComm.Settings="2400,n,8,1" ‘设定传输的波特率和校验方式
MSComm.InBufferSize = 1024 ‘开辟数据缓冲区
MSComm.bbbbbMode =combbbbbModeBinary ‘设定为二进制的数据流方式
MSComm.bbbbbLen = 0 ‘一次全部读入所需要的数据
……
上面的代码一般都是串口初始化必须进行设定的几个部分。根据个人需要可以在VB6.0中做一个初始化界面,对各个参数(如波特率、使用串口等)进行自由设定和更改,以tigao初始化设定的灵活性和通用性。
(2)命令字发送
命令字发送应该严格按照Modbus规约所设计的帧格式和上下位机在该规约基础上所定义的通信协议。参考表1的通信协议顺序,编写如下的VB代码来实现命令的发送。
Tcommand (0) = address ‘ address为设定的接受地址输入的变量
Tcommand (1) = Val("&h" + "03")
……(其他的通信协议,并计算CRC校验代码)
Tcommand (6) = CRC(1)
Tcommand (7) = CRC(0)
frmcontrol.MSComm.Output = Tcommand
……
(3)上位机接收和数据处理
根据表2的回送通信协议,上位机解析所接受的数据,并进行必要的处理。一般而言从下位机发送上来的数据都是有一定的帧长度。特别是对于一些固化好的智能仪表。所以好的方法是按照通信回送的帧长度,在上位机程序中分别开辟两个同样长度的数组。一个作为接受数组,用来一次性接收串口缓冲区中的数据;另一个为安全数组,用来复制接收数组中的数据并进行解析。这样可以tigao整个系统的容错能力。
LoopUntil frmcontrol.MSComm.InBufferCount = 9
InByte = frmcontrol.MSComm.bbbbb
For i = 0 To (count - 1)
InSafeArray(i) = InByte(i)
Next i
其代码中的inbyte()就是接收数组,而InSafeArray()就是我们再开辟的安全数组。
(4)CRC校验的实现方法
按照Modbus规约的校验方式,RTU模式的校验方式为CRC校验方式;而ASCII模式为LRC校验。一般的智能仪表多采用RTU的CRC校验方式。根据生成多项式的不同,CRC校验通常有以下几种:CRC-12 (传6bit);CRC-16(美国标准,传8bit);CRC-CCITT(欧洲标准,传8bit);CRC-32(point-to-point同步传输中使用) 。目前仪表类比较普遍的是CRC-16的校验码。其生成多项式为X16+X15+X2+1。在算法实现上,我们可以先预置一个16位的寄存器FFFF(全1),然后把8位的2进制数据(一个字节)与16位的CRC寄存器低8位异或,并把结果放回CRC寄存器同时寄存器内容右移,MSB补0,并检查移出的LSB。如果LSB为0则继续右移动,为1则CRC寄存器与多项式异或。重复上面操作到一个8bit字节完成,再继续对下一个数据进行相同处理,直到所有数据结束。这个时候CRC寄存器中的数据就是我们所要的CRC码了。实现代码如下:
CRC16Lo = &HFF ‘CRC16Lo为CRC寄存器低8位
CRC16Hi = &HFF ‘CRC16Hi为CRC寄存器高8位
CL = &H1
CH = &HA0 ‘A001 H 是CRC-16多项式代码
For i = 0 To UBound(Data)
CRC16Lo = CRC16Lo Xor Data(i) ‘每一个数据与CRC寄存器异或
For index = 0 To 7
UseHi = CRC16Hi
UseLo = CRC16Lo
CRC16Hi = CRC16Hi 2
CRC16Lo = CRC16Lo 2 ‘右移一位
If ((UseHi And &H1) = &H1) Then ‘如果高位字节后一位是1的话
CRC16Lo = CRC16Lo Or &H80 ‘低位字节右移后前面补1
End If
If ((UseLo And &H1) = &H1) Then ‘"如果LSB 为1,则与多项式进行异或
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
End If
Next index
Next i
4 下位机工作系统设计简介
下位机一般是使用固化好通信协议及工作指令的单片机。因为测控系统多采用的是单发多收的通信机制,所以在下位机要允许用户预先设定本机的地址码,并且保证不能重复。此外,要注意通信波特率必须与上位机的波特率相匹配。在下位机软件开发中,要遵循Modbus规约的通信帧结构对上位机传输的命令进行解析:非呼叫对象应能及时重新恢复等待接受状态;响应呼叫的下位机要解析命令代码并进行相应的功能处理,对非法的命令操作要能回送报错信息。
在具体的工程开发中,下位机多是采用各个厂家出品的基与Modbus规约的智能仪表。这样虽然简化了我们开发的工作量,但是下位机的合理安排与设计能降低系统误码率、tigao可靠性。因此是每个工业系统设计人员所不应该忽略的重要部分。在工业控制中,因为各种干扰源的存在且一般下位机数量较大,要对RS-485芯片选型有很认真的考虑。条件许可的话尽量选用抗电击和有较大级连驱动能力的芯片。理论上485芯片的级连能力至少32门,目前很多芯片厂家都能使工业级的级连数达到128以上。在实际应用中应该让系统具有一定的富余度,一般级连数不能超过该器件满载的70%。在选配RS232到RS485转换头的时候也应该尽量选用有源的转换器,以tigao驱动能力和稳定性。此外,工业现场的降噪、隔离、布线、屏蔽等等措施的合理与否也会对后系统的稳定产生影响。
5 结束语
作者在实际的测控系统项目开发中,通过VB6.0结合SQL数据库编程,开发了基于该通信协议的上位机的测控管理软件,并利用RS-485总线实现了对基于该规约的各种下位机的监控和数据处理。在生产活动自动化,通信协议规范化,信息交流国际化的,充分利用现有的成熟而规范的通信协议能大限度地节约开发成本,降低开发风险,tigao系统的兼容性和可移植性。Modbus RTU规约作为智能仪器仪表领域大量使用的国际化通信协议,必将得到更加普遍的推广和应用。
1 引言
随着信息技术技术的飞速发展,当今自动化技术的发展正日益受到信息技术原理及其标准的重大影响。在自动化领域中集成信息技术可以为企业内部自动化系统间的全局通信提供解决方案,基于工业以太网专题">工业以太网通信标准的PROFInet通信技术使这种集成成为可能。PROFInet是Process Field Net的缩写,它是Profibus客户、生产商与系统集成联盟协会推出的在PROFIBUS与以太网间全开放的通信协议。PROFInet是一种基于实时工业以太网的自动化解决方案,包括一整套完整高性能并可升级的解决方案,可以为PROFIBUS及其他各种现场总线网络提供以太网移植服务;PROFInet标准的开放性保证了其长远的兼容性与扩展性,从而可以保护用户的投资与利益。PROFInet可以使工程与组态、试运行、操作和维护更为便捷,并且能够与PROFIBUS以及其它现场总线网络实现无缝集成与连接。工程实践证明,在组建企业工控网络时采用PROFInet通讯技术可以节省近15%的硬件投资。
2 PROFInet通讯标准
PROFInet可以提供办公室和自动化领域开放的、一致的连接。PROFInet方案覆盖了分散自动化系统的所有运行阶段,它主要包含以下方面:(1)高度分散自动化系统的开放对象模型(结构模型);(2)基于Ethernet的开放的、面向对象的运行期通信方案(功能单元间的通信关系);(3)独立于制造商的工程设计方案(应用开发)。PROFInet方案可以用一条等式简单而明了地描述:
PROFInet=Profibus+具有PROFIBUS和IT标准Ethernet的开放的、一致的通信
2.1 PROFInet设备的软件结构
PROFInet设备的软件覆盖了现场设备的整个运行期通信,基于模块化设计的软件包含若干通信层,每层都与系统环境一致。PROFInet软件主要包括一个RPC(Remote Procedure Call)层,一个DCOM(Distributed Component bbbbbb Model)层和一个专门为PROFInet对象定义的层。PROFInet对象可以是ACCO(Active Connection Control bbbbbb)设备、RT auto(Runtime Automation)设备、物理设备或逻辑设备。软件中定义的实时数据通道提供PROFInet对象与以太网间的实时通信服务。PROFInet通过系统接口连接到操作系统(如WinCE),通过应用接口连接到控制器(如PLC)。
PROFInet的运行期软件位于一个目录固定的结构中,可以分为核心目录和系统应用目录。若通信开始而核心目录中的文件未改变,则系统应用目录中的部分文件必须重建。所有的系统应用都是指向系统接口和应用接口,实现PROFInet设备的各项功能。PROFInet设备的软件结构可以用图1描述如下:
PROFInet设备的软件结构决定了PROFInet设备可以从企业管理层到现场层直接、透明地访问,并且提供对TCP/IP协议的支持。PROFInet技术使企业用户能够方便地对现有的系统进行扩展和集成,是一种优化的工业以太网专题">工业以太网通信标准。
2.2 PROFInet在现场设备上的移植
作为一种开放的资源,PROFInet软件通过移植到设备上的TCP/IP协议栈来完成在其他设备制造商的产品中快速而简单地实现。具体过程为:首先将开放资源的RPC接口连接到TCP/IP协议栈和设备操作系统中的系统集成;然后再将PROFInet协议栈的DCOM(Discrete Component bbbbbb Module)机制集成到设备的操作系统中;后实现物理设备和逻辑设备对象、运行期对象和活动控制连接对象的设备专用的DCOM应用。为单个部件组装PROFInet设备时还必须用XML创建相应的描述。一个PROFInet设备的XML文件中应包括下列数据:(1)PROFInet设备的名称和ID号;(2)PROFInet设备的IP地址,诊断数据的访问方式和设备连接方式;(3)PROFInet设备的硬件分配,设备接口以及为各接口定义的变量、数据类型与格式;(4)PROFInet设备在整个工程中的保存地址。
PROFInet设备将它的所有功能封装到其软件中,并提供变量接口与其它的PROFInet设备相连。变量接口的每个变量都代表一个确定的子功能,包括运行、输入/输出使能、复位、结束、停机、启动和错误。一个PROFInet设备中封装的可以是一个控制器、一个执行器甚至是一个控制网络。图2所示的PROFInet设备中封装了一个Profibus-DP控制网络。
PROFInet设备之间通过DCOM模块进行通信。在PROFInet设备连接编辑器的图形界面中可以方便地实现各PROFInet设备间的连接。一个具有冲洗、灌装、封口和包装4个环节的饮料生产厂家的生产流程可以用4个PROFInet设备串连连接实现(见图3)。
所有设备的接口都在PROFInet中做了一致的定义,因此都能够灵活地组合和重新使用,用户不必考虑各设备的内部运行机制。此外,PROFInet还集成了故障安全通信标准行规PROFIsafe,满足对人员、设备和环境的全面安全的需求,可用于故障安全应用。
3 PROFInet通信功能的实现
PROFInet设备通信功能的实现是基于传统的Ethernet通信机制(如TCP或UDP),同时又采用RPC和DCOM机制进行加强。DCOM可视为用于基于RPC分布式应用的COM技术的扩展,可以采用优化的实时通信机制应用于对实时性要求苛刻的应用领域。在运行期间,PROFInet设备以DCOM对象的形式映像,通过对象协议机制确保了DCOM对象的通信。COM对象作为PDU以DCOM协议定义的形式出现在通信总线上。通过DCOM布线协议DCOM定义了对象的标识和具有有关接口和参数的方法,这样就可以在通信总线上进行标准化的DCOM信息包的传输。对于更高层次上的通信,PROFInet可以采用集成OPC(OLE for Process Control)接口技术的方式。
3.1 PROFInet的基本通信方式
PROFInet根据不同的应用场合定义了三种不同的通信方式:使用TCP/IP的标准通信;实时RT(Real-time)通信和同步实时IRT通信。PROFInet设备能够根据通信要求选择合适的通信方式。
PROFInet使用以太网和TCP/IP协议作为通信基础,在任何场合下都提供对TCP/IP通信的支持。由于绝大多数工厂自动化应用场合对实时响应时间要求较高,为了能够满足自动化中的实时要求,PROFInet中规定了基于以太网层2的优化实时通信通道,该方案极大地减少了通信栈上占用的时间,tigao了自动化数据刷新方面的性能。PROFInet不仅小化了可编程控制器中的通信栈,而且对网络中传输数据也进行了优化。采用PROFInet通信标准,系统对实时应用的响应时间可以缩短到5~10ms。PROFInet同时还支持高性能同步运动控制应用,在该应用场合PROFInet提供对100个节点响应时间低于1ms的同步实时(IRT)通信,该功能是由层2上内嵌的同步实时交换芯片ERTEC提供的。PROFInet的通信循环如图4所示。
在PROFInet设备的一个通信循环周期内,既包括IRT实时通信,又包括TCP/IP标准通信。PROFInet通信技术在很多应用场合都能体现出其极大的优越性。工程实践表明,在同步运动控制场合采用PROFInet提供的IRT通信,系统性能将比采用现场总线方案tisheng近100倍。
3.2 PROFInet与OPC的集成
由于PROFInet与OPC均采用了DCOM通讯机制,因此PROFInet通讯技术可以很容易地与OPC接口技术集成,以实现数据在更高通信层次上的交换。OPC接口设备在工控领域的应用十分广泛,OPC接口技术定义了OPC DA(Data Access)与OPC DX(Data Exchange)两个通信标准,分别应用于传输实时数据和实现异类控制网络间数据的交换。在PROFInet中集成OPC DX接口可以实现一个开放的连接至其他系统,集成机制如下:
(1) 基于PROFInet的实时通信机制,每个PROFInet节点可以作为一个OPC服务器被寻址;
(2) 每个OPC服务器可以通过标准接口而作为一个PROFInet节点被操作。PROFInet的功能性远比OPC优越,PROFInet技术与OPC接口技术的集成不仅可以实现自动化领域对实时通信的要求,还可以实现系统之间在更高层次上的交互。
4 PROFInet在自动化领域的应用
PROFInet是一种优越的通信技术,并已成功地应用于分布式智能控制。PROFInet为分布式自动化系统结构的实现开辟了新的前景,可以实现全厂工程彻底模块化,包括机械部件、电气/电子部件和应用软件。PROFInet支持各种形式的网络结构,使接线费用小化,并保证高度的可用性。此外,特别设计的工业电缆和耐用的连接器满足EMC和温度要求并形成标准,保证了不同制造设备之间的兼容性。
PROFInet不仅可以应用于分布式智能控制,而且还逐渐进入到过程自动化领域。在过程自动化领域,PROFInet针对工业以太网专题">工业以太网总线供电以及以太网本质在安全领域应用的问题正在形成标准或解决方案,采用PROFInet集成的Profibus现场总线可以为过程自动化工业提供优越的解决方案(如图5所示):
采用PROFInet通讯技术,不仅可以集成Profibus现场设备,还可以通过代理服务器(Proxy)实现其它种类的现场总线网络的集成。采用这种统一的面对未来的设计概念,工厂内各部件都可以作为独立模块预先组装测试,然后在整个系统中轻松组装或在其他项目中重复使用。譬如对于一个qiche生产企业而言,PROFInet支持的实时解决方案完全可以满足车体车间、喷漆车间和组装部门等对响应时间的要求,在机械工程及发动机和变速箱生产环节中的车床同步等方面则可使用PROFInet的同步实时功能。
5 结束语
PROFInet可以保证对现有系统投资的高度保护,并使工厂拥有创新标准的优越性。鉴于PROFInet通讯技术的优越性,目前已经有部分生产厂家(如西门子,施奈德)