咨询电话
ENGLISH0755-88840386发布时间:2020-10-21 11:08:26 |来源:网络转载
1引言
Modbus协议是某公司于1979年开发的一种通信协议,可实现与控制器之间的通信。Modbus协议被大部分数据采集与监控系统和人机界面软件支持,它已经成为一种通用工业标准。
传统的称重控制行业称重数据的上传一般是通过称重控制器将重量信号转换成电流信号(一般是4mA-20mA信号),传递的称重数据存在较大的误差,而如果通过串口总线直接读取多台称重仪表上的计量数据,可以保证数据的实时准确性。Modbus协议是主从站通信协议,用异步串口完成通信,物理层采用RS484或RS232。传输速率可以达到115kb/s。通信采用命令/应答方式,每一种命令帧对应一个应答帔。命令帧由主机发出,所有从机都将收到报文,但只有被寻址的从机才会响应命令,返回相应的应答帧,如果报文中寻址地址为0,则被视为全局广播,所有从机都把它当一条命令执行,不返回应答帧。Modbus通信协议有两种传送方式,RTU方式和ASCII方式。RTU模式相对于ASCII模式主要优点是表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据流量。在通常情况下,一般工业智能仪表都是采用RTU模式的Modbus规约。
上海某称重系统有限公司最近推出的控制仪表XK3190-C801和XK3190-C802(以下简称C801和C802)都已内建了标准的ModbusRTU传输格式的标准协议,经测试可与众多厂家的组态软件适配,如亚控科技的组态王软件,北京三维力控的Forcecontrol,威纶通科技的EB8000组态系列,昆仑通泰的MCGSE组态软件,都有成功的应用范例。本文主要是详解C801和C802仪表通过ModbusRTU协议与威纶通触摸屏通信的研究与实现。
2系统控制方案
本系统主要采用触摸屏、称重控制器、电流表、模拟传感器组成。一台触摸屏通过RS485总线连接四台称重控制器。
如图1所示系统组成部分为:2.1模拟传感器:输出为mV信号。
2.2称重控制仪表:C801和C802是同步研发的两款称重控制仪表,他们都具有体积小、强变送、AD转换精度高、采用32位高速高性能ARM处理器、带全隔离0-5V/0-10V/4-20mA模拟量输出以及光电隔离20mA电流环大屏幕显示接口等优点,两者功能基本相同,都支持Modbus-Rtu协议,他们的主要不同点是安装方式不同,C801是35mm导轨安装,C802是面板嵌入式安装,开口尺寸是91mmx45mm;C801标配隔离式开关量三入三出控制,C802标配隔离式开关量二入二出控制;C801开关量输出和大屏幕显示接口互相独立,可同时使用,而C802开关量输出和光电隔离20mA电流环大屏幕显示接口复用,不能同时使用。总之C801和C802都适用于各种高速与高精度称重要求的控制场合,都集成了加法秤、减法秤、分选秤等功能,用户可根据现场需求自主选择所用仪表。本系统以C801为例。
2.3触摸屏:本系统采用某科技有限公司生产的触摸屏,型号是TK6070ip,具有强大的图形显示功能和数据处理功能,并支持RS-232和RS-485两种通讯接口,广泛应用于机械、纺织、电气、包装、化工等行业。配备图形功能强大且简单易用的组态软件EasyBuilder8000o用户可创建出直观的屏幕画面,完成监控、数据上传显示和修改等画面的设计。
2.4电流表:控制仪表C801接电流表演示4mA-20mA模拟量输出,模拟量输出跟C801仪表称重数据线性同步,准确度0.2%;另外用户可根据需要修改C801主板上模拟量短路环的位置将仪表改为0V-5V或0V-10V输出。
3系统控制软件设计
本系统可通过触摸屏连接称重仪表实现功能:
(1)4台称重仪表称重数据和指示灯状态信息可在触摸屏上实时同步显示;
(2)按键功能实现置零、除皮、启动和停止配料程序;
(3)可实现标定,标定密码可修改;
(4)可查询和修改仪表配料参数;
(5)可査询配料累计次数和累计重量;
(6)可査询和修改仪表通信站号,修改后需重新连接通信;
3.1触摸屏界面设计及功能实现
本系统设计了以下界面:
(1)主监控界面:如图2所示四台仪表主监控界面可直观显示整个配料控制系统的输入输出工作状况、仪表状态信息,从主监控界面单按下置零、除皮、启动、停止按钮,可分别对C801仪表实现置零、除皮、启动、停止动作,按下设置按钮还可以进入每个仪表的配方界面,按下标定按钮还可以进入每个仪表的标定界面。
(2)配方界面:如图3所示,可查询到单个仪表的配方参数并可以修改同步上传到C801仪表,也可在该界面査询到配料累计次数和累计重量,无法查询到单次配料重量,累计次数大于999次时仪表会报错并清除以前数据重新开始累计。
(3)标定界面:如图4所示,按照界面提示信息选择仪表分度值、小数位,并输入仪表满量程,在空载点和加载标准秩码点分别操作实现C801仪表两点标定。
(4)标定密码修改界面:触摸屏默认进入标定密码为801,在标定密码修改界面可修改标定密码。
(5)仪表通信站号修改界面:用户在可该界面修改每个仪表通信站号,修改后需断开重新连接通信。
触摸屏界面编程需用到组态软件EasyBuilder8000,触摸屏元件地址属性参考表1对应设置。如图5所示读重量数值元件设置和图6所示启动按钮位状态元件设置所示,触摸屏上元件地址属性需在仪表Modbus对应寄存器地址基础上加lo图中varO为触摸屏VarO站号变量,地址为LW-10000,保存有l#C801仪表站号地址信息。
3.2仪表程序设计及功能实现
通讯数据帧分为査询消息帧和从机响应帧两类。通用Modbus-Rtu协议的数据帧由一个字节的地址码、一个字节的功能码和N个字节的数据码以及两个字节的校验码构成,并约定在一帧数据中最后一个传送字符的后面,必须有一个至少3.5字符时间间隔标志着信息的结束,下一帧数据在这个间隔之后开始。
C801仪表单片机Modbus驱动程序总体可分为串口和定时器1初始化、RS-485总线数据釆集、Modbus报文处理及应答3个基本模块,其中RS-485总线数据采集程序由串口中断和定时器1中断配合完成。仪表通信时首先要进行初始化操作,例如设置波特率、选用的通讯方式、串口中断使能、定时器1工作模式、预分频系数、定时器中断使能等。
串口收发器初始默认为接收使能,发送关闭状态,当总线空闲,仪表单片机无数据接收时,不会进入数据处理子程序,循环执行主程序其他部分;当总线有数据接收时,如图7(a)所示,进入串口中断子程序,将串口数据帧放入接收数据数组缓冲区RxBuffer[Ridx]中,随即接收缓冲区指针Ridx自增、初始化定时器1并启动定时器1后退出本次中断,以此不断循环直到接收最后一个字符帧后,如图7(b)所示利用定时器1中断等待总线3.5个字符的空闲时间后,置有通讯数据未处理标志。
如图7(c)所示,当主程序循环扫描到有通讯数据未处理时,进入数据处理子程序,首先检査报文数据长度是否正确(至少为4个字节),长度正确则验证报文中从站的站号,站号正确则验证该报文的CRC16校验码是否正确,校验通过后再根据报文中的功能码类别执行switch语句的相应分支程序,在这些分支程序里执行上位机通过总线
传达过来的命令并生成应答报文,填充报文发送缓冲区数组TxBuffer[Sidx],Sidx为发送数据缓冲区指针,填充完毕后使能收发器发送,使用单片机UART_Write(UART_T*UART,uint8_t*pu8TxBuf,uint32_tu32WriteBytes)库函数发送串口数据,该库函数使用査询方式发送串口数据,UART指向使用的串口寄存器地址,Pu8TxBuf指向要发送的数据数组首地址,u32WriteBytes变量指要发送的数据报文长度,最后单片机在退出数据处理子程序之前,都会清接收缓冲器指针和通讯数据未处理标志位,置发送缓冲区指针,关收发器发送使能,表示通讯数据处理已结束。
C801实现的Modbus功能见表2
C80I和触摸屏通信用到的寄存器、离散量输入和线圈见表3-表8,其中表3-表5为C801标准程序就有寄存器、离散量输入和线圈地址,表6-表8为本系统标定功能添加的寄存器、离散量输入和线圈地址,以下表格只列出了本系统界面设计用到的功能码地址,如需完整的功能码地址信息可査阅C801或C802说明书。需要注意的是,不同的用户对仪表功能和触摸屏界面都有自己独特的需求,某公司都可以通过定制实现不同客户的需求。
(1)标准程序自带寄存器、离散量输入和线圈
(2)为了实现通过触摸屏进行标定操作,增加了以下几项:
4 仪表和触摸屏通信出现的问题和注意要点(系统调试)
设备在整个调试过程中有一些注意事项及碰到的问题罗列如下:
(1)提高抗干扰办法:
在RS485通讯连线时,要注意采取一些信号抗干扰措施,比如通信线连线时遵循链式手拉手的接线方式,防止出现星型连接;推荐采用带屏蔽的RS485电缆;当线路较长,波特率较高的情况下应在总线首尾端增加匹配电阻,减少反射;485收发器在规定的共模电压-7V至+12V之间时,才能正常工作,如果超出此范围会影响通讯,严重的会损坏通讯接口,共模干扰会增大上述共模电压,消除共模干扰的有效手段之一是将485通讯线的屏蔽层用作地线,将机具、电脑等网络中的设备地连接在一起,并由一点可靠地接入大地。
(2)触摸屏和仪表通讯参数配置:
触摸屏通信设置如图8所示,超时延时不宜设置过长,C801仪表通信响应时间为几毫秒级别,如超过100毫秒仪表对触摸屏发送数据无响应就已经超时了,故将此参数推荐设为0.1秒,为稳定切换数据链路的收发状态,通信延时可设置为50ms,另外C801仪表和触摸屏通信参数设置一定要对应,C801仪表通信拨动开关一定要拨向RS485侧。
(3)C801仪表通信响应时间(上位机发送结束到仪表开始响应这段时间):
C801仪表编程时要注意对上位机发送数据的响应的实时性和准确性。
如图9,在调试C801仪表程序过程中,曾出现过一个问题,用RS485转RS232转接头将C801仪表连接电脑,用串口调试助手以100ms的周期发送读重量命令,可以看到串口调试助手上会有错误数据出现(总线冲突引起,程序升级后不再出现此类问题)。
用示波器观察总线上的通信波形,如图10,会发现C801仪表对上位机发送过来的读重量命令响应时间不固定,少则10ms,多则超过100ms,说明此问题系总线冲突引起,C801仪表Mod-bus-Rtu通信程序部分存在一定的问题,检査C801仪表程序发现,仪表将串口数据处理子函数LoadUartlCom_C8010放在一个100ms定时循环体内,仪表会在定时器。中断中每隔100ms将b_100ms标志位置位,在主程序循环体中,仪表会不断査询b_l00ms是否为1,如为1才会执行串口数据处理子函数LoadUartlCom_C801Q,这样设计会明显影响串口数据的即时响应,应把串口数据处理子函数LoadUartlCom_C801Q放在100ms定时循环体外,主程序循环体中,按照此方法升级标准程序后,烧录新的程序到C801仪表中,用示波器观察总线上的通信波形如图11,C801通信响应时间是固定的,约5ms左右,图9的问题也不再出现。
5小结
总之,通过本系统C801/C802仪表与威纶通触摸屏通信的研究,可以发现C801/C802仪表ModbusRTU通信能够正常实现,上位机与下位机的通信稳定可靠,传输数据准确及时,人机界面使用方便,非常适合用于无人值守和集中控制场合,是值得广大用户值得信赖的选择。
文章来源于网络转载,侵删