西门子公司的simatic s7-200系列plc是广泛适用于中小型设备控制的工业可编程控制器,以其可靠性高、丰富的指令和内置功能、通信能力强、性价比较高等特点,在工业控制领域中得到越来越广泛的应用。在本文的控制系统中,plc作为下位机完成现场各种信号和数据的采集、运算和控制。工控pc机作为上位机可提供人机交互界面,实现数据的处理以及现场数据的实时显示等监视和远程控制等功能。s7-200系列的plc可以在四种通信模式下工作:ppi模式、mpi模式、profibus-dp模式和自由口通信模式。其中,ppi和mpi是西门子专门开发的通信协议。ppi协议用于点对点接口,是一个主/从协议。mpi协议适用于多点接口,可以是主/主协议或主/从协议。profibus-dp是西门子支持的现场总线网络。而大多数用户则是选用对用户完全开放的自由口通信模式。在自由口通信模式下,通信协议是由用户定义的。用户可以用梯形图程序调用接收中断、发送中断、发送指令(xmt)、接收指令(rcv)来控制通信操作。本设计采用自由口方式,重点介绍工控pc机与主控plc的通信原理与实现。
1、 硬件组成
iter导体穿缆测力测长控制系统的框图如图1所示。将测力传感器和测长编码器通过信号线与plc相连,这样穿缆过程中的拉力数据和行程数据就能够实时写入plc的寄存器中。plc通过通信电缆与pc机的串行通信口相连,在pc机中设置vb的mscomm控件来实现串口通信,这样pc机就能读取plc寄存器中的拉力和行程数据,对穿缆过程进行实时监控。
2、 工控pc机与主控plc的自由口通信协议
工控pc机标准的串口为rs232c,s7-200系列提供的串口为rs485,利用西门子公司提供的pc/ppi电缆,可以方便地实现s7-200系列plc与pc之间硬件连接。
上位机向plc发送指令(即指令帧),指令帧格式如图2所示,由起始字符、指令类型、目标plc站地址、目标寄存器地址、读/写字节数、待写入的数据(当从plc读数据时,具体数据部分为空)、校验码和结束字符组成。
例如写vb100开始的两个字节的指令帧如下:83h,06h,08h,00h,00h,64h,30h,32h,31h,32h,33h,34h,35h,36h,115h。下面按顺序说明每段字节的含义:
83h为字符“s”的ascii码,表示指令的开始,在本设计中是固定的。
06h表示指令的类型,为写操作。在本文中定义05h代表读操作,06h代表写操作。
08h,00h表示要写plc中v存储区的内容。
00h,64h表示要从vb100开始写。
30h,32h表示要写两个字节。
31h,32h,33h,34h表示vb100写入12h,vb101写入34h。
35h,36h是校验和。
115h为字符“s”的ascii码,是结束字符,表示指令的结束,在本设计中是固定的。
一条指令除包含数据外,还包含必要的控制字(如起始字符、结束字符、指令类型等)。如果指令中的数据直接以其原本的形式传输,则不可避免地会与指令中的控制字发生混淆。为了避免这种情况的发生,可以用文本来传送二进制数据。通过16进制ascii码的格式来描述数据,每个二进制的字节都可以表示成一对ascii编码,这对编码表示这个字节的两个16进制字符。这种格式可以表示任何的数值,仅仅使用ascii代码的30h~39h(表示0~9)和41h~46h(表示a~f)。ascii码的其余部分可以用作控制字。这样就避免plc因接收到数据中错误的标志位而停止接收的错误。
在plc接到上位机指令后,会向上位机发送一个反馈消息,即反馈帧,反馈帧格式如图3所示。其组成与指令帧基本相同,但它是由plc发出的,所以具体数据段不同,在向plc写数据时,反馈帧的具体数据部分为空,而在从plc读数据时,具体数据部分不能为空。
例如,plc接收到写vb100开始两个字节后的发送反馈帧如下:83h,02h,08h,00h,00h,64h,30h,32h,35h,36h,115h。下面按顺序说明每段字节的含义:
83h为字符“s”的ascii码,与指令帧相同。
02h为状态信息,表示接收到上位机指令后plc的执行状态。在本文中02h表示写入正确,相应地规定01h表示读取正确,03h表示bcc校验码错误,04h表示指令不合法。
08h,00h表示要写入plc中v存储区的内容,与指令帧相同。
00h,64h表示要从vb100开始写,与指令帧相同。
30h,32h表示要写两个字节,与指令帧相同。需注意的是,此时具体数据段为空。
35h,36h是校验和,因无数据段,与指令帧可能不同。
115h为字符“s”的ascii码,表示此帧结束,与指令帧相同。
3、 工控pc机软件设计
工控pc机端通信程序流程图如图4所示。发送指令帧后,注意查询反馈帧,如一定时间内没有接收到,应再次发送,两次无响应,则要提示通信故障或plc不存在。
在工控pc机中可采用vb来实现上位机监控程序,通过mscomm控件就可控制串口通信,主要参数设置代码如下:
mscomm1.settings=“9600,n,8,1”
//串口通信参数设置
mscomm1.commport=1
mscomm1.portopen=true
mscomm1.inputlen=0
4、 主控plc软件设计
cpu224xp自由口通信模式的初始化是通过对特殊存储字节smb30(port0)写入通信控制字来设置通信的波特率、奇偶校验、停止位和数据位数。smb30中的内容如下:
pp:奇偶选择。00为无奇偶校验;01为偶校验;10为奇校验;11为保留。
d:每个字符的数据位。0为每个字符8位;1为每个字符7位。
bbb:自由端口波特率。本设计为010,表示波特率为9 600 b/s。
mm:协议选择。00为点到点接口协议的ppi从站模式;01为自由端口协议;10为ppi主站模式;11为保留。缺省设置为00,即ppi从站模式。
本文中传输速率固定为9 600 b/s,数据格式由1位起始位、8位数据位、无校验位、1位停止位组成。
配置自由口通信模式后,就可以进行数据的收发了。plc通信程序框图如图5所示。接收数据指令rcv的命令格式为rcv table,port0,rcv指令可以接收一个或多个字符,一次最多接收255个字符。发送数据指令xmt的命令格式为xmt table,port0,激活发送缓冲区table中的数据。数据缓冲区的第一个数据指明了要发送的字节数,最多有255个字符的缓冲区。
通信程序的设计需遵循一定的规则,例如,中断通信处理程序要短小精悍,要避免xmt与rcv指令在一个端口同时执行。本设计采用主从方式通信,pc设为主机,plc设置为从机。只有plc接收到指令帧后,才可能根据接收数据情况发送反馈帧。为简化程序设计,pc机只发出读指令和写指令两种指令帧。若为读指令,plc准备好发送数据后执行xmt指令;若为写指令,plc先把数据写入指定存储区,准备好应答数据后同样执行xmt命令;若接收到错误帧(如校验错误及不能识别的命令),plc准备相应标志数据执行xmt指令。
主要代码如下:
ld sm0.0
movb 9,smb30//设置端口0为:9 600,n,8,1
ld sm0.0//rcv指令初始化
movb 16#ec,smb87
//允许接收信息,使用smb88,smb89。
movb 83,smb88//设置起始字符为“s”
movb 115,smb89//设置结束字符为“s”
movb +1000,smw92//接收信息时间不能超过1 ms
movb 30,smb94//接收的最大字符数,这里设置为30
r smb87.2,1//复位smb87.2,使其为0,忽略smw92
ld sm0.0
atch rcvover,23
//将0口接收完成中断事件连接到rcvover上
ld sm0.0
atch xmtover,9、
//将0口发送完成中断事件连接到xmtover上
ld sm0.0
eni//允许中断
s7-200自由口通信方式使用户可以自己定义plc指令通信协议,与任何公开通信协议(如rs-422或rs-232c)接口设备进行通信,使通信范围大大增加,控制系统配制更加灵活。本通信程序用于iter导体穿缆测力测长监控系统,plc完成数据采集及现场控制,工控pc机实时显示导体穿缆的速度及行程,同时以梯形图和通信控件显示动作过程,便于监控及故障诊断,得到用户好评。本文设计的通信协议也可用于其他控制系统的监控。
RTL8710模块方案_低功耗wifi模块在智能小家电的应用
自动X-ray检测技术对SMT工艺的作用
高通公司选择是德科技为其5G测试方案合作伙伴
C语言入门教程-数组
警方通报特斯拉成都11连撞事故:轻伤3人
采用自由口通信模式实现工控PC机与主控PLC之间的通信
LLC谐振变换技术在开关电源中的应用
深入了解法国DynaBox精密蜗轮蜗杆减速机应用、特点及选型指引
PIR传感器成为楼宇自动化创新选择
智能电视启动缓慢的原因分析
数字波束成形相控阵技术在军事和商业方面的应用
Varjo即将推出新款高分辨率的企业VR耳机
维安达斯旗舰版激光对射技术要点
上海伯东激光器零件氦质谱检漏法
香薰灯智能电源管理ic怎么选?
基于FPGA与DSP中实现的TS201的LinkPort口的协议设计
苹果iPhone 11 Pro Max运行iOS 14时的多任务界面曝光
华为新一代智慧屏换面板供应商了?
压力触控明年爆发,Android 手机也会有
网络附加存储的优缺点有哪些