梅特勒·托利多电子天平有支持PROFINET通讯协议的可选模块,本文解决的是没有这个模块时如何实现天平与PLC之间的通讯。仪表支持串口通讯,使用RS-232标准接口,传输经过标准化处理的命令集“梅特勒·托利多标准接口命令集”(MT – SICS),能实现天平所有功能的查询和设置。基本的解决思路是利用RS-232/485转PN网管模块收发串口数据,没错,还是PROFINET。
硬件设置
使用到的硬件设备包括:
- 西门子S7-1500系列PLC CPU 1515-2 PN
- 梅特勒·托利多天平仪表 ICS426x及配套秤台、电源
- 北京鼎实网关模块 PN-G2-RS232/485
- PROFINET交换机(没有也行)
- 开关电源 24V
- RS-232(DB9公接头)转USB串口调试线
- PROFINET电缆 或任意网线(只用到1236四个线芯)
- 串口通讯电缆(三芯)
- DB9母接头
- 装有博途和串口调试助手的电脑(以博途V20为例)
天平接线
拆开天平电源和仪表的外壳,将仪表、秤台、电源按托利多安装手册所示连接电缆(两组Power Supply接电源、Digital Scale接秤台),如下图所示,COM1a为串口接线端子。

将串口通讯电缆经上图上部进线孔引入并固定好,接入COM1a串口通讯端子,端子定义从左往右分别为:J10-1/GND、J10-2/RXD、J10-3/TXD。为串口通讯电缆的另一头焊接DB9母接头,其中2、3、5号针脚对应TXD、RXD和GND。
安装好后为天平上电。
仪表设置
天平启动时自动校秤,等待屏幕显示如下图说明启动完成。

长按右下角 图标,显示输入密码,如为首次开机或未设过密码,再次短按此按钮直接进入设置菜单。

屏幕下方四个实体按键分别对应屏幕底部显示的左、上、下、右四个虚拟按键。按下键切换到”通信设置“后按右键进入,选择”COM1“,进入”模式“菜单,选择”会话“,按OK键确认选择。

如上图示,“会话”模式是常规通讯模式,可以执行主站发送的命令并回复;“托利多连续-W.”模式为连续发送模式,不接受命令,持续通过串口发送当前示数,这个模式后续会用到。
返回上一级“COM1”菜单,进入“RS232参数”菜单。此页用于设置串口通讯参数,默认为波特率9600、奇偶校验无、握手禁用。参数保持默认即可,也可以按需修改,需与后续主站串口参数一致。

不断按左键返回,提示是否保存设置,按OK键保存退出。
网关模块连接
将24V开关电源输出连接至网关模块底部的供电端子。将天平串口通讯电缆的DB9插头连接至模块正面的COM1接口。将PLC和网关模块的P1接口用网线连接至交换机。
通讯测试
天平串口测试
将天平串口通讯电缆的DB9接头接入RS-232转USB串口调试线,并将USB接入调试电脑。打开串口调试助手,设置好串口参数,与天平一致。
接下来通过串口向天平发送梅特勒·托利多标准接口命令集(MT – SICS)的命令,实现查询功能。命令集要求发送的命令必须全部大写,必须以回车换行结尾,命令的参数之间必须以空格隔开。
打开串口,发送命令“SI”,返回数据形如“53 20 53 20 20 20 20 20 34 39 33 36 2E 33 20 67 0D 0A”,转为ASCII码显示,内容为“S S 4936.3g”,4936.3g即为当前天平的读数。如果没有响应,依次检查串口参数是否正确、串口线接头线序是否正确、调试软件发送数据时是否没有自动添加回车换行。
硬件组态
打开博途的工程,点击菜单栏-选项-管理通用站描述文件(GSD),找到鼎实网关的GSD文件并安装。打开设备与网络,添加PLC CPU 1515-2 PN和网关模块PN-G2-RS232/485,为他们设置IP并分配到同一个子网。为网关模块设置一个PROFINET设备名称或使用自动生成的名称,必须保持独特。

双击模块,进入设备视图,从右侧模块中添加In 16 Bytes和Out 16 Bytes,用于收发数据,因后续测试中电子秤发送的数据长度可能为18个字节,因此下图中还额外添加了In 4 Bytes,实践中可按需添加。

“设备概览”中点击“Length+Status_1”,查看属性,在“模块参数”中设置通讯参数,此处应与电子秤的通讯参数相符,电子秤的默认设置是波特率9600,8数据位,1停止位,无校验,模式选择“RS-232/485 Master”,下面两项的含义是串口掉线后是否继续发指令,和自动发送指令模式下的间隔时间。

在模块上点右键,选“分配设备名称”,找到设备后核实MAC地址,然后分配名称,模块的MAC地址印在模块的侧面,分配好后向PLC下载组态。观察模块正面指示灯,若组态正常,前三个指示灯应为绿色常亮,若不正常,在博途-项目树-在线访问处查看模块IP是否正确分配。
发送-接收测试
在项目树新建监控表,按下图所示添加输入输出,本例中“Length+Status_1”组态地址为I400-401,共2字节;“In_Bytes_1”组态地址为I430-449,共20字节;“Length+Control_1”组态地址为Q400-401,共2字节;“Out_Bytes_1”组态地址为Q430-445,共16字节,以下步骤以参照此地址进行说明。

尝试发送读取称重数值指令“SI”,根据命令集要求,发送的命令全部大写,以回车换行结尾(CRLF),将指令“S I CR LF”按ASCII码表转换为十六进制,即十六进制的“53 49 0D 0A”,依次放入“Out_Bytes_1”发送区域,即QB430-QB433,长度为4个字节(包括回车换行),所以将QB400设为4,该字节指定了发送命令长度,QB401为控制字,BIT0上升沿时启动发送,BIT1为自动发送模式,将两位同时置1(即QB401 = 2#00000011),会按照模块组态时选择的自动发送间隔不断发送指令。

如上图,启动发送后,收到了来自电子秤的数据,IB400为本次接收的数据长度,为18字节,存储在接收区域的前18个字节内(IB430-IB447),IB401为状态字,BIT0为发送或接收完毕,BIT1为正在发送,BIT2为正在接收,接收的数据为十六进制的ASCII码,将其转换后获得称重内容“S S 3774.9 g”。
连续接收
将电子秤COM1的模式设置为“托利多连续-W.”,电子秤将连续向串口发送称重数据,无需指令即可不断获取电子秤数值,此时在监控表可以看到接收的十六进制ASCII码,一共17字节。

这17个字节中,中间部分为有效数据,其余字节格式固定,分析上图数据如下表:
| 字节 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| HEX | 02 | 2B | 20 | 21 | 20 | 33 | 37 | 37 | 34 |
| ASCII | 开始 | 制表 | 空格 | ! | 空格 | 3 | 7 | 7 | 4 |
| 字节 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
|---|---|---|---|---|---|---|---|---|---|
| HEX | 39 | 20 | 20 | 20 | 20 | 30 | 30 | 0D | |
| ASCII | 9 | 空格 | 空格 | 空格 | 空格 | 0 | 0 | 回车 |
天平连续发送模式下发送的称重数据不包括小数点,如实际示数为3774.9,接收到的数据为37749,其中数据的第10个字节为称重数据的最低位。最低位的含义与天平设置的显示精度有关。如果显示精度设置为小数点后一位(0.1g、0.2g、0.5g),则第10字节的含义为读数的十分位,第9~5位为读数的个位~万位。如果显示精度设置为小数点后两位(0.02g、0.05g),则第10字节的含义为读数的百分位,第9~5位为读数的十分位~千位。
数据处理
万位到十位如果为零时传回的数据是空格(16#20)。个位、十分位和百分位(如有)为零时传回的数据是0(16#30)。取出接收数据的第五到十字节(IB434-IB439),计算真实称重数据。先判断万位到十位是否为空格(16#20),若是则对应位为0。ASCII码16#30~16#39对应数字0~9,因此IB434减去16#30,再乘以10000,可获得万位数据,同理依次计算其他位后相加获得示数,小数位和最终示数为浮点数类型。

