西门子S7—200 PLC在船舶卸载料斗秤系统中的应用

2018年11月29日 17:27来源于:科技创新与应用

邹剑峰

摘 要:介绍了S7-200PLC通过Modbus RTU协议作为从站与PC主站通讯的方法,通过S7-200PLC对S7-300PLC的信号中转,用VB6.0编写的料斗秤计量软件实现了对S7-200PLC及S7-300PLC的信号交换,开发了船舶大宗原料料斗秤检斤计量系统并得到有效应用。

关键词:S7-200PLC;料斗秤;Modbus RTU协议

引言

目前,钢铁企业船舶运输的大宗原材料都是采用检尺的方式进行计量,但由于种种原因,经常导致检尺计量数据偏差大,买卖双方矛盾重重。为了解决上述问题,采用将原料通过卸料皮带运至陆域后采用静态料斗计量,实现检斤计量,准确计量后,通过皮带转运至原料堆场。计量数据及时传给公司计量管理系统,为公司原料管理部门提供实时、准确、完整的船运原料计量数据。

1 系统功能

船运大宗原料通过201胶带机、202胶带机、203胶带机、204胶带机、205胶带机、206-1胶带机、206-2胶带机、布料器将原料转运进计量料仓A,当仓A达到预设称量条件,系统驱动布料器移动到B计量仓上装料,此时,A计量仓计量,A仓计量完毕,打开液压闸门,原料通过206-3胶带机、206-4胶带机、207胶带机转运至后方堆场,A计量仓卸料完毕,关闭液压闸门;当仓B达到预设称量条件,系统驱动布料器移动到A计量仓装料,此时,B计量仓计量,B仓计量完毕,打开液压闸门放料,原料通过206-3胶带机、206-4胶带机、207胶带机转运至后方堆场,B计量仓卸料完毕,关闭液压闸门。如此循环,实现船运大宗原料的检斤计量,同时保证码头船运大宗原料的有序卸载。计量工艺流程如图1所示。

图1 码头船运原料卸载计量工艺流程

2 系统结构

根据码头卸载工艺需求以及料斗秤计量需求,码头基础控制系统使用西门子S7-300PLC控制器,控制码头卸料料线的启停、布料器在计量仓上的位置检测等。料线启停等操作由基础自动化操作站完成。S7-300PLC检测信号(如卸料小车位置检测、料线运行状态等)实时通过Profibus-DP网络传给S7-200PLC系统。S7-200PLC、称重仪表A、称重仪表B、串口服务器等组成RS485总线计量网络,计量操作站中的上位机软件不断读取称重仪表A、称重仪表B、S7-200PLC中的数据,通过逻辑判断完成称量,S7-200PLC驱动计量仓下液压闸门的打开或关闭,将计量仓中的原料排出,同时将计量信息(如料仓内物料重量、料仓是否具备装料条件等)通过S7-200PLC传给S7-300PLC系统,通过逻辑判断实现S7-300PLC对布料器的驱动控制。计量料仓A和计量料仓B的静态称量由计量操作站完成。

S7-200PLC支持Modbus RTU 协议,称重仪表A和称重仪表B支持RS485接口通讯,计量软件采用VB6.0开发,主要借助VB开发平台下的MSComm、Timer控件来实现与S7-200PLC、称重仪表A、重仪表B 的串行通讯。使用串口服务器完成RS485/RS232的转换,同时在上位机中完成端口映射,计量操作站中实际使用了COM1、COM2、COM3三个串口,分别与S7-200PLC、称重仪表A、称重仪表B通讯。

计量操作站一用一备,计量数据保存在本地服务器的同时将数据传给公司计量管理系统,为系统连续运行及数据的可靠性提供了保障。系统网络结构如图2所示。

图2 系统网络结构

3 系统功能的实现

3.1 S7-300PLC和S7-200PLC通讯

系统中使用S7-300PLC完成基础自动化控制(如卸料料线的启停、计量仓上布料器的位置检测、公辅系统的控制等),其中如料线运行状态信号、布料器位置信号等均要传给S7-200PLC系统;由计量上位机发给S7-200PLC计量完成信号、液压闸门打开/关闭信号等要传给S7-300PLC系统。

S7-200PLC系统配置EM277通讯模块,与S7-300PLC 通过Profibus-DP网络连接,在S7-300PLC编程软件中安装EM277 GSD文件,将配有EM277模块的S7-200PLC组态在S7-300PLC硬件系统中,完成地址映射,实现S7-300PLC 和S7-200PLC的通讯。

3.2 计量上位机软件与S7-200PLC、称重仪表A、称重仪表B通讯

计量系统中计量操作站、S7-200PLC、称重仪表A、称重仪表B组成RS485总线网络,采用Modbus RTU协议。Modbus RTU协议采用主从工作方式,允许一台主机和多台从机通信,每台从机地址由用户设定,地址范围为1~255。计量操作站作为主站,S7-200PLC、称重仪表A及称重仪表B作为从站。S7-200 CPU上的通讯口Port0通过指令库支持Modbus RTU 从站模式。

Modbus 通讯协议规范:起始符+设备地址+功能代码+数据+校验和+结束符。对S7-200PLC来说,其中“功能代码”表明了该命令要执行什么功能,如01码读取单个/多个线圈(离散量输出点)状态,03码读取单个/多个保持寄存器,返回V存储区的状态等。“校效和”在整个规范中非常重要。我们知道,RS232通讯格式里的奇偶校验方式并不能保证每个字符都正确,所以需要把所有字符的值按照某种规律计算,计算得到的字符(校验和)传给接收方,接收时再把接收到的字符的值按照某种规律计算,得到的字符与发送方传送过来的校验和字符比较,如果相等,就算接收正确了。

3.2.1 S7-200PLC作为从站与计量操作站通讯

S7-200 CPU上的通讯口Port0通过指令库支持Modbus RTU 从站模式。S7-200PLC Modbus RTU

从站协议是通过调用指令库中的两个功能块实现的,两个功能块分别是MBUS_INIT和MBUS_SLAVE。MBUS_INIT功能块被用于启用和初始化或禁止Modbus通讯。MBUS_SLAVE功能块被用于为Modbus主设备发出的查询服务,并且必须在每次扫描时执行,以便允许该指令检查和响应Modbus主设备查询。两个功能块图如图3。

图3

在S7-200PLC与计量操作站通讯之前,根据主站的通讯参数进行初始化设置,MBUS_INIT功能块通讯格式设置如下:Mode为1,表示为Modbus协议;Addr从站地址为1;Baud波特率为19200;Parity为2是偶校验;MaxIQ表示读取输入输出数字量的点数;MaxAI表示读取模拟量的点数;MaxHold和HoldStart结合使用可以读取V存储区数据,设置开始读取地址以及读取数量。完成MBUS_INIT功能块参数的设置,然后通过调用MBUS_SLAVE功能块响应主机查询信息。

3.2.2 计量操作站作为主站与PLC通讯

计量软件采用VB6.0编程,VB6.0与Windows系统有着非常完美的接口,VB6.0提供了一个非常方便的通信控件MSComm。应用程序嵌入MSComm控件,通过MSComm控件提供的事件驱动或查询方式来进行串行通信管理。S7-200PLC、称重仪表A、称重仪表B分别接入串口服务器后,实现RS485/RS232的转换,通过串口映射,计算机中使用COM1、COM2、COM3分别对应S7-200PLC、称重仪表A、称重仪表B,分别对3个串口进行编写通讯程序。

(1)通讯口初始化编程

使用VB中的MSComm控件通讯时,初始化程序如下:

On Error GoTo Prog_err: '此处作用:如果您选择了电脑中不存在的通讯口,则'Prog_err'程序段,提示“无效的通讯口”

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False '串口是打开状态,则关闭,进行串口的设置工作

MSComm1.CommPort = Combo1.ListIndex + 1 '设置通讯端口号

MSComm1.Settings = CStr(Combo3.Text) & “E,8,1” '*设定通讯格式

MSComm1.InputLen = 0 '*将接收缓冲区内容全部读回来

MSComm1.OutBufferCount = 0 '*设置并返回发送缓冲区的字节数,设为0时清空发送缓冲区

MSComm1.InBufferCount = 0 '*设置并返回接收缓冲区的字节数,设为0时清空接收缓冲区

MSComm1.InputMode = comInputModeBinary '*二进制接收

MSComm1.RThreshold = 1 '*产生ON_COMMM事件的字符数

MSComm1.PortOpen = True '*打开串口

Label2.Caption = “串口已打开”

Order = 0

Timer1.Enabled = True

Timer2.Enabled = False

RWcomm = False

Exit Sub

Prog_err:

Label3.Caption = “无此端口”

(2)计量操作站读数及写数程序(以读输入I点和输出Q点为例)

使用01功能码和02功能码实现对输入I点和输出Q点的读数程序如下:

ReDim SenData(0 To 7) As Byte '*发送变量

Adree = Right(“0000” + Hex(Val(“&o” + CStr(Val(Text4.Text) * 10 + Combo2.Text))), 4)

'地址要求是两个字节,所以前面补零

'西门子输出是八进制,所以先将八进制转换为十进制

SenData(0) = &H1 '从站站号

If Option6.Value = True Then '画面中选择 Q 点输出

SenData(1) = &H1 '01码 读数字量输出位 命令

Else '画面中选择 I 点输入 即如果是对输入操作

SenData(1) = &H2 '02码 读数字量输入位 命令

End If

SenData(2) = Val(“&H” + Mid(Adree, 1, 2)) '寄存器通讯地址高字节

SenData(3) = Val(“&H” + Mid(Adree, 3, 2)) '寄存器通讯地址低字节

SenData(4) = &H0 '读取个数高字节

SenData(5) = &H1 '读取个数低字节

getData = Chr_crc(SenData) '校验计算[从SenDataR(0) 到 SenDataR(5) 参加校验和计算)]

SenData(6) = Val(“&H” + Mid(getData, 1, 2)) '校验高字节

SenData(7) = Val(“&H” + Right(getData, 2)) '校验低字节

……

(3)计量操作站中数据处理程序

MSComm控件处理通讯方式有两种:事件驱动方式和查询方式。本系统采用事件驱动方式。在串口缓冲区接受到字符时触发OnComm事件捕获并处理通信事件。程序通过Rthreshold属性值来实现触发OnComm事件来处理S7-200PLC发送来的从站响应信息。部分程序如下。

Private Sub MSComm1_OnComm()

Dim I As Integer '定义整数 I

Dim getData() As Byte '读取接收缓冲区变量 定义字节型数组变量

Dim getData_len As Long '判断读取长度 定义长整型数据

Dim CrcJ() As Byte '用于校验计算 定义字节型数组变量

Dim j As Integer '定义整数 j

If MSComm1.CommEvent = comEvReceive Then 'CommEvent的属性返回的值为comEvReceive时是发生了接收事件.

getData = MSComm1.Input '读取接收缓冲区内容 将缓冲区内容赋值给getData数组变量。

getData_len = UBound(getData) '返回一个 Long 型数据,其值为指定的数维组可用的最大下标

For j = 0 To getData_len '将读取的字节变换为字符

Read = Read & Right(“00” + Hex(getData(j)), 2) '将获取到的数组变量依次转换成十六进制数,每个字节补齐后取2位 组合成一个十六进制数字符串。

Next j

……

(4)称重仪表A和称重仪表B和计量软件的通讯

称重仪表A和称重仪表B都支持Modbus RTU 协议,分别对应COM2和COM3串口,编程方式类似对S7-200PLC的编程,需熟悉称重仪表的数据格式,在此不再赘述。

4 结束语

本系统码头料斗秤计量软件通过Modbus RTU 协议实现与S7-200PLC信号交换,通过S7-200PLC中转也实现了与S7-300PLC的信号交换。通过信号的逻辑判断以及称重仪表重量数据的直接读取,码头船舶大宗原料料斗秤检斤计量得到成功实现,有效解决了买卖双方之间的矛盾。

S7-200PLC 作为现场控制设备,通过Modbus协议,不仅可以作为与PC 机通讯的从站,也可以作为主站,在现代工业控制中使用相当广泛。利用Modbus协议开发通讯程序,不仅能保证系统的可靠性,而且有效降低了开发成本。

参考文献

[1]西门子公司SIMATIC S7-200可编程控制器手册[M].北京国防工业出版社,2000.

[2]范逸之,陈立元.Visual Basic与RS-232串行通信控制[D].清华大学出版社,2002

[3]刘瑞新,李树东,万朝阳.Visual Basic 程序设计教程[M].电子工业出版社,2000.

[4]祝木田,师勇.Modbus 协议通讯的应用[J].微计算机信息,2003

Private Sub MSComm1_OnComm()

Dim I As Integer '定义整数 I

Dim getData() As Byte '读取接收缓冲区变量 定义字节型数组变量

Dim getData_len As Long '判断读取长度 定义长整型数据

Dim CrcJ() As Byte '用于校验计算 定义字节型数组变量

Dim j As Integer '定义整数 j

If MSComm1.CommEvent = comEvReceive Then 'CommEvent的属性返回的值为comEvReceive时是发生了接收事件.

getData = MSComm1.Input '读取接收缓冲区内容 将缓冲区内容赋值给getData数组变量。

getData_len = UBound(getData) '返回一个 Long 型数据,其值为指定的数维组可用的最大下标

For j = 0 To getData_len '将读取的字节变换为字符

Read = Read & Right(“00” + Hex(getData(j)), 2) '将获取到的数组变量依次转换成十六进制数,每个字节补齐后取2位 组合成一个十六进制数字符串。

Next j

……

(4)称重仪表A和称重仪表B和计量软件的通讯

称重仪表A和称重仪表B都支持Modbus RTU 协议,分别对应COM2和COM3串口,编程方式类似对S7-200PLC的编程,需熟悉称重仪表的数据格式,在此不再赘述。

4 结束语

本系统码头料斗秤计量软件通过Modbus RTU 协议实现与S7-200PLC信号交换,通过S7-200PLC中转也实现了与S7-300PLC的信号交换。通过信号的逻辑判断以及称重仪表重量数据的直接读取,码头船舶大宗原料料斗秤检斤计量得到成功实现,有效解决了买卖双方之间的矛盾。

S7-200PLC 作为现场控制设备,通过Modbus协议,不仅可以作为与PC 机通讯的从站,也可以作为主站,在现代工业控制中使用相当广泛。利用Modbus协议开发通讯程序,不仅能保证系统的可靠性,而且有效降低了开发成本。

参考文献

[1]西门子公司SIMATIC S7-200可编程控制器手册[M].北京国防工业出版社,2000.

[2]范逸之,陈立元.Visual Basic与RS-232串行通信控制[D].清华大学出版社,2002

[3]刘瑞新,李树东,万朝阳.Visual Basic 程序设计教程[M].电子工业出版社,2000.

[4]祝木田,师勇.Modbus 协议通讯的应用[J].微计算机信息,2003

Private Sub MSComm1_OnComm()

Dim I As Integer '定义整数 I

Dim getData() As Byte '读取接收缓冲区变量 定义字节型数组变量

Dim getData_len As Long '判断读取长度 定义长整型数据

Dim CrcJ() As Byte '用于校验计算 定义字节型数组变量

Dim j As Integer '定义整数 j

If MSComm1.CommEvent = comEvReceive Then 'CommEvent的属性返回的值为comEvReceive时是发生了接收事件.

getData = MSComm1.Input '读取接收缓冲区内容 将缓冲区内容赋值给getData数组变量。

getData_len = UBound(getData) '返回一个 Long 型数据,其值为指定的数维组可用的最大下标

For j = 0 To getData_len '将读取的字节变换为字符

Read = Read & Right(“00” + Hex(getData(j)), 2) '将获取到的数组变量依次转换成十六进制数,每个字节补齐后取2位 组合成一个十六进制数字符串。

Next j

……

(4)称重仪表A和称重仪表B和计量软件的通讯

称重仪表A和称重仪表B都支持Modbus RTU 协议,分别对应COM2和COM3串口,编程方式类似对S7-200PLC的编程,需熟悉称重仪表的数据格式,在此不再赘述。

4 结束语

本系统码头料斗秤计量软件通过Modbus RTU 协议实现与S7-200PLC信号交换,通过S7-200PLC中转也实现了与S7-300PLC的信号交换。通过信号的逻辑判断以及称重仪表重量数据的直接读取,码头船舶大宗原料料斗秤检斤计量得到成功实现,有效解决了买卖双方之间的矛盾。

S7-200PLC 作为现场控制设备,通过Modbus协议,不仅可以作为与PC 机通讯的从站,也可以作为主站,在现代工业控制中使用相当广泛。利用Modbus协议开发通讯程序,不仅能保证系统的可靠性,而且有效降低了开发成本。

参考文献

[1]西门子公司SIMATIC S7-200可编程控制器手册[M].北京国防工业出版社,2000.

[2]范逸之,陈立元.Visual Basic与RS-232串行通信控制[D].清华大学出版社,2002

[3]刘瑞新,李树东,万朝阳.Visual Basic 程序设计教程[M].电子工业出版社,2000.

[4]祝木田,师勇.Modbus 协议通讯的应用[J].微计算机信息,2003

 
免责声明:

     本文仅代表作者/企业观点,与【名品家电网】无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,仅供读者参考,并自行核实相关内容。

     【名品家电网】刊载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

      如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行;新闻纠错: lwl#youngchina.cn

关键词: 仪表 通讯 字节