【经典编程案例】S7-200SMART与扫描枪自由口通信应用
本案例主要让读者掌握练习S7-200SMART串口通信的接线,协议的分析,熟悉使用自由口通信的发送指令和接收指令,自由口通信程序的设计等。
通过PLC发送读取命令到扫描枪,触发扫描枪对条码进读取。扫描枪型号为ES230AT+系列扫描枪。该信号扫描枪具有USB、PS/2、RS23三种类型的接口,在本案例中选择接口为RS232的扫描枪。
西门子S7-200SMART本地自带的通信端口为RS485接口,可通过扩展信号板扩展一个RS232的接口,在本示例中通过一个RS232转RS485的转换器把扫描枪的RS232接口转换为RS485接口后与西门子S7-200SMART本体上的RS485端口进行连接,如图1-1所示为连接示意图,图1-2所示为通信接线图:
图1-1 连接示意图
图1-2 通信端口接线图
设置扫描枪的通信参数,主要设置的参数有扫描模式、波特率、数据位、奇偶校验位和停止位等参数。
扫描模式:扫描模式可设置为手动模式和自动关于模式,手动扫描需要进行触发,这里我们选择手动模式下的按键保持,自动模式选择禁止,如图1-3所示:
图1-3 扫描枪扫描模式设置
通信参数设置:在本例中波特率设置为9600bps、奇偶校验设置为无奇偶校验,数据为设置8位,停止设置为1位。如图1-4所示:
图1-4 通信参数设置
信息帧格式说明
①PLC发送数据:
开始扫描命令:“ 0x 54 ”( T),当扫描枪接收到开始扫描命令后,扫描枪会按选定的手动扫描模式进行扫描。
②扫描枪返回信息:
读取条码成功:如果扫描枪成功读取条码,扫描枪会将扫描到的信息传送给PLC。
读取条码失败:如果扫描在停止扫描前,无法成功读取条码信息,扫描枪将返回(%%NoRead)字符给PLC。
(1)初始化程序:在初始化程序中需要定义通信格式字,接收控制格式字,并连接相应的发送完成中断和接收完成中断。根据信息帧格式,本例中在接收的控制格式中使用空闲线作为消息的起始判断,使用消息定时器作为消息结束的判断,初始化程序如图1-5所示:
图1-5 初始化程序
(2)通信程序:在通信子程序的变量表中建立两个变量,一个变量用于触发发送的功能,另外一个变量用于指定需要发送数据的缓冲区(以指针的方式指定),如图1-6所示:
图1-6 变量表
在该子程序中调用发送指令XMT进行数据的发送功能以及数据发送功能激活后在一定的时间内没有接收到回传信息时关断接收功能,如图1-7所示:
图1-7 通信程序
(3)发送完成中断程序:在发送完成中断程序中调用接收指令,启用接收功能,同时置位心跳标志位,使用该标志位触发开始计时功能,用来判断在规定的时间内是否可完成接收功能,若不能则只需通信程序中的关断接收功能。程序如图1-8所示:
图1-8 发送完成中断程序
(4)接收完成中断程:进入接收完成中断后,首选复位心跳检测信号,其次对是否正常读取到条码进行判断,若正常读取条码则把读取的条码转存出来,若未正确读取到条码,则报警。程序如图1-9所示:
图1-9 接收完成中断程序
(5)主程序:在主程序中调用通信程序子程序,并分配对应的实参变量,如图1-10所示:
图1-10 主程序