MODBUS是MODICON公司为该公司生产的PLC设计的一种通信协议,从其功能上看,可以认为是一种现场总线。它通过24种总线命令实现PLC与外界的信息交换。具有MODBUS接口的PLC可以很方便的进行组态。 MODBUS传输协议定义了控制器可以识别和使用的信息结构,而不须考虑通信网络的拓扑结构。它定义了各种数据帧格式,描述了控制器访问另一设备的过程,怎样作出应答响应,以及可检查和报告的错误。 MODBUS有两种传送方式,RTU(Remote Terminal Unit)方式和ASCⅡ方式。MODBUS以LSB在先的形式传送数字量,以MSB在先的形式传送模拟量。MODBUS把通信参与者规定为“主站”(MASTER)和“从站”(SLAVE)。主站可向多个从站发送通信请求,最多可达247个从站。每个从站都有自己的地址编号。 MODBUS的RTU 方式规定通信字符串的{zh1}两个字节用于传递循环冗余校验数据。其校验方式是将整个字符串(不包括{zh1}两个字节)的所有字节按规定的方式进行位移并进行 XOR(异或)计算。接收方在收到该字符串时按同样的方式进行计算,并将结果同收到的循环冗余校验的两个字节进行比较,如果一致则认为通信正确,如果不一 致,则认为通信有误,从站将发送CRC错误应答。MODBUS中RTU采用CRC-16的冗余校验方式。 控制器与PLC之间通信的内容包括主站对从站的读取和写入,MODBUS规定,只有主站具有主动权,从站只能被动的响应,包括回答出错信息。数据通信的一般格式如下: 从功能上讲,MODBUS包括24种命令,每一功能都有相应的功能码。最基本的功能主要包括AI/AO、DI/DO的数据传送, PLC如果支持MODBUS,那么都应该包含这些基本命令。PLC将模拟量和数字量存放在不同的寄存器中。模拟量在PLC 中是保存在寄存器(Holding Register)中,数字量保存在线圈中(Holding Coils)。 图1 MODBUS通信格式 MODBUS除了定义通信功能码外,同时还定义了出错码,这有助于通信主站发现通信的错误内容和原因,并采取相应措施,从而保证了通信的可靠进行。 MODBUS定义的出错信息为:指定的地址错误、指定的数据量出错、从站自身的错误、无法应答请求或执行要求指令、从站无暇处理主站发送的通信请求指令等。错误信息对应错误代码。主站在接收到错误码后,根据错误的原因采取相应措施。如:改变数据地址、加大发送间隔、重发等。 MODBUS协议的具体格式以及CRC的计算可参考有关资料或到网上下载 如: 2.1451.2 STIM智能变送器-1451.1 NCAP 独立网络协议 IEEE1451.2 STIM标准中具体的规定了智能变送器的详细的数据规范及TII通用的单片机接口技术。由于其科学的规定,随不能说象标准说的那样为独立总线,但其定义本身比起TII更具有工业价值。 世 界各大仪表公司,总是发展自己的总线,搞的一塌糊涂。造成了世界资源极大的浪费。实际上没有几个工业系统不依赖于某一种总线产品。1451.2 STIM 和1451.1 NCAP 主要目的就是设法统一通信软硬件要求,实际上是{zd0}程度地兼容各种总线。无疑具有重要的工业推广价值。 IEEE1451.2 STIM包括了四大部分,分别为: XDCR 传感器或者执行器的实时数据结构 TII 变送器独立接口 TEDS 变送器电子数据格式 STIM 智能变送器主控单元 STIM电子数据表格TEDS包括: 1)Meta TEDS (必备): 获取将要访问的任意通道的全部信息,通道的增益。(数据恒定,只读) 2)Channel TEDS (必备):允许将被寻址的通道的信息。访问的通道。 (数据恒定,只读) 3)Calibration TEDS (可选):将被访问的的通道标度量。 转换标度。 (读/写,或设为只读) 4)Meta-Identification TEDS (可选):需要识别的STIM的接口信息。 (数据恒定,只读) 5)Channel-Identification TEDS (可选):所有信息用来识别将被访问的通道 (数据恒定,只读) 6)Calibration-Identification TEDS (可选):用来描述STIM标度值的信息(读/写,或设为只读,必须保持与3相同) 7)End Users Application-Specific TEDS (可选):用户的可写应用特定数据 (非丢失性数据) 8)Industry Extensions TEDS (可选):扩展用数据,函数或通道地址范围等,可以重定义的数据。或者是扩展的数据定义格式 3. STIM-MODBUS 通信协议____工业总线 由于STIM 主要是针对单片机总线定义的用通信的标准,在实际工业应用中是很不方便的。故而我所开发设计了STIM-Modbus 通信协议。主要目的是为了适应实际应用。 具体规定请参考 《BDMB STIM-Modbus通信协议》. BD4C 和BD5M 都固化了STIM-Modbus通信协议. 不论作为变送器还是测控器,都可以独立与Modbus 总线仪器通信组网。实际上都是NCAP级的仪表。 4.BD4C测控器 在BD4测控器是采用了IEEE1451.1 NCAP 标准设计的. 它可以作为STIM 与网络的Node,从而使变送器能与多种网络通信。当前主要支持Modbus,以后将支持CAN等工业总线。 由BD5 智能变送器和BD4测控器组成的现场系统,很适合于车间级仪器网络. 5.PC机上实现MODBUS通信的方法 5.1硬件结构 标准的 MODBUS物理层采用了RS-232串行通信标准,在远距离可以考虑用RS-422或者RS-485来代替。通信的网络结构为主从模式。值得指出的是:RS-232和RS-422仅支持点对点通信,所以在多点通信的情况下,应当采用RS-485。 在PC机上模拟MODBUS通信通过使用RS-485插卡或者RS-232/ RS-485转换模块,实现多点通信。 从数据传输量大小来看,MODBUS属于设备一级的现场总线,也就是以字节为数据单位,采用工业PC很容易实现这种协议。 图2是基于MODBUS的控制系统结构。将实现了MODBUS通信协议的工控机作为“模拟PLC”和PLC一起接入到控制系统当中。主站(MASTER)通过组态软件访问他们,从主站的角度看。二者之间除了地址不同之外,“模拟PLC”和PLC并没有什么差别。 由于MODBUS采用了RS-485总线,所以,用户在计算机上实现MODBUS通信时,需要进行硬件的准备。有三种方案: 购买通信用亚当模块,它可以实现RS-232/RS-485的格式转换。其可靠性高,缺点是需要外部提供电源。 使用台湾研华或者其他工控厂家的485插卡。其直接插到PC的扩展槽,不占用PC资源。 另外,可以选用新开发的产品:武汉波士电子公司开发的RS-232/RS-485接口。 3.2 软件设计 在Visual Basic下MODBUS通信可采用MSCOMM控件来实现。以从站为例,下面是实现通信的流程。 实现CRC校验有两种方法:根据CRC校验的定义公式进行计算,或在程序中建立CRC校验值表。因为对于选定的多项式因子,CRC值是固定的。采用查表法节省应答时间,简化了计算过程。 程序在实现通信的过程中要对地址、寄存器、数据量等进行判定,用户可根据需要定义他们的范围。但若是与PLC或者标准的通信软件进行连接时,需要考虑实际PLC的结构,即:PLC的地址数据范围约定。用户应本着模拟PLC的思想,实现良好的接入。 图3 MODBUS通信软件流程