HBM电子称与西门子S7-200系列PLC自由口通讯
2019-04-19朱海建
朱海建
(苏州创发人力资源有限公司,苏州 215008)
1 引言
目前造纸生产过程中的助剂配料一般使用两种方法,第一种方法采用人工称重配料,由于人工配料极易使人体吸入粉尘等杂物,同时人工配料很容易出现误配,质量难以保证,也会导致管理成本增加。另一种方法是自动称重,自动配料。为了保证配置的造纸助剂溶液质量,提高生产效率,现在多数生产现场配料均要求采用准确、可靠的自动配料系统。HBM WE2107称重显示控制器具有两个通讯串口,其中串口2(RS-232接口)用于连接串行打印机或外部大屏幕显示器。本文中使用WE2107串口2通过RS232转RS485转换器与S7-200可编程控制器(下称PLC)建立硬件通讯,在建立通讯之前,先设置WE2107串口2功能为外部大屏幕输出,波特率为9.6Kbps,无奇偶校验,起始字符位88,报文输出格式为1,校验和开。通信程序设计主要包含四个部分,第一部分为设置PLC的通信接口并建立PLC接受字符中断。第二部分主要是建立字符接受指针,将接受的字符存储到相应区域中。因为WE2107称重显示器输出的数据为ASCⅡ字符,因此第三部分的程序主要是针对接受的字符进行转换。WE2107输出报文包括开始字符,符号字符,数据字符(含小数点)、结束字符及检验和等一系列字符。故第四部分的程序针对已接受并转换为十六进制的字符进行数学处理。通过上述一系列处理后,从而保证PLC上显示的数据与WE2107实际数据的一致。
2 程序设计
2.1 系统初始化子程序(SBR1)
要实现WE2107与PLC的通讯,PLC与WE2107的通讯方式必须设置一致。PLC通讯口的设置通过上电初始程序进行设置,在上电初始化程序中对端口1控制寄存器SMB130写入十六进制值09,从而设置端口1执行自由端口协议,通讯波特率位9.6Kbps,无奇偶校验。并在初始化程序中启动PLC端口1的接受字符全局中断,使PLC在运行过程中对WE2107传送的每个ASCⅡ字符进行接受。
LD SM0.1//PLC上电初始扫描
MOVB 16#09,SMB130//端口1为自由端口协议,通讯波特率位9.6Kbps,无奇偶校验
ATCH INT0,25//将端口1接受字符中断(事件25)连接到中断程序INT0
ENI//全局中断启用
2.2 接受字符中断程序(INT0)
当PLC启用接受字符中断后,PLC端口1每接受一个WE2107输出的字符调用一次中断程序。SMB2是PLC自由端口1字符接受缓冲区,PLC端口1每次接收到的字符都存放在这里。WE2107输出的字符包括起始字符,符号字符,以及包含小数点的数据字符等。在PLC接受到一个字符之后,需要将接受缓冲区的字符传送到相应的存储地址,本文中将接受到的ASCⅡ字符存储到以VB3000为起始的存储器中。因在WE2107设置起始字符为88,故当PLC接收到的字符为16#58时,后续接受到的一系列字符将是一次完整的WE2107字符输出。为了将接受到的字符分别存储到不同的字节地址中,本文中通过建立一个地址指针,每接受一个字符通过地址指针增一将字符存储地址指向下一个字节,从而实现接受字符的分别存储。
LDB=SM2,16#58//当接受到起始字符时
MOVD &VB3000,VD3050//建立一个指向存储字符的地址指针,字符存储地址从VB3000开始
LD SM0.0//启动字符传送使能
MOVB SMB2,*VD3050//将字符接收缓冲器中的字符传送到指针指定的存储地址
INCD VD3050//指针指向下一个字符的存储地址
2.3 字符转换子程序(SBR2)
由于WE2107输出的字符为ASCⅡ码,故需要使用ATH指令将ASCⅡ码转换为十六进制数,在该子程序中局部变量表中定义了两个局部变量,用于在子程序中传递参数,分别为输入参数#ASC_I、输出参数#ASC_O,分别对应局部变量LB0和LD1。因在后续数据处理中需进行实数类型数据计算,故在该子程序中将字符全部转换为对应实数。
LD SM0.0//启动字符转换使能
ATH #ASC_I:LB0,LB5,1//将输入的ASCⅡ码字符转换为十六进制数
BTI LB5,LW5//将字节转换成整数
ITD LW5,LD5//将整数转换成双整数
DTR LD5,#ASC_O:LD1//将双整数转换为实数
2.4 数据处理主程序(MAIN)
当WE2107报文发送格式选择为1时,WE2107输出ASCⅡ码字符的顺序依次为开始字符,符号字符(正或负号),数据字符(含小数点),检验和字符。检验和字符为对所有输出的字符进行XOR计算的结果,本文限于篇幅,不对校验校验字符进行赘述。在WE2107中设置重量数据精确到小数点后一位,最大重量为6000.0kg,因此传送的重量数据最大为6个字符(6000.0),最小为3个字符(0.0)。若传送的数据字符为0.1时,PLC按照读数顺序将“0”、“.”、“1”三个ASCⅡ字符存储到字节VB3002、VB3003和VB3004中。若传送的数据字符为1234.5时,PLC按照读数顺序将“1”、“2”、“3”、“4”、“.”及“5”六个 ASC Ⅱ字符存储到字节VB3002~VB3007中。因为每次传送的字符个数不尽相同,因此需要根据小数点字符位置对传送的数据进行判断和处理。在所有传送的重量字符中,起始字符及符号字符占用存储字节VB3000及VB3001,若字节VB3004中存储的字符为十六进制2E(表示小数点字符),则小数点前分别有一个十位和个位重量数据字符,小数点后有一个十分位重量数据字符。在数据处理程序中通过调用字符转换子程序将ASCⅡ码字符转换成十六进制数,再将转换后的各数位上的重量数值与位权相乘后进行累加即可得到实际的重量数据。
LD SM0.0//启用字符转换子程序使能
3 结束语
由于西门子S7-200系列PLC具有高可靠性,通用性强,编程简单,在小型设备控制中得到了广泛应用。利用PLC的自由通讯口与WE2107进行通讯,读取称量数据准确稳定。两者组成的自动配料系统,能有效提高了配料的自动化程度,减少了人工误配的几率,降低生产过程成本,设备在现场应用后,设备运行稳定,得到用户的普遍好评。