1、信以致远捷行弘毅,W y,Wang yang,#,信以致远捷行弘毅,W y,信以致远捷行弘毅,#,信以致远捷行弘毅,W y,信以致远捷行弘毅,#,信以致远捷行弘毅,W y,2019/11/22,#,信捷,PLC,培训,第,9.3,课时,第,9.3,章 通讯,C,语言,Modbus,通讯,Block,自由格式,触摸屏如何实现可以实时显示,PLC,的状态?,PLC,与变频器通讯程序改怎么编写?,通讯概述,通讯口,1,通讯口,2,的,232,通讯口,2,的,485,XC2,、,XC3,、,XC5,、,XCM,以及,XCC,系列可编程控制器都支持,Modbus,协议、自由协议通讯功能。,1,、通
2、讯口,站号,Modbus,站号,1254,、,255,(,FF,)为自由格式通讯,波特率,300bps115.2Kbps,数据位,8,个数据位、,7,个数据位,停止位,2,个停止位、,1,位停止位,校验,偶校验、奇校验、无校验,2,、通讯参数设置,通过上述通讯口,我们可以使两个串行通讯设备任意通信,但是在通讯之前,必须设置相互可以辨识的参数,具体见表,通讯口默认参数:站号为,1,、波特率,19200bps,、,8,个数据位、,1,个停止位、偶校验。,XCPPro,编程软件中集成了修改通讯口的模块,如下图所示:,通过软件来修改通讯口参数,方便直观,且不易出错,修改完成后,重新上电才能生效。,3,
3、通讯相关指令,信捷通讯指令包括,mudbus,指令,和,自由格式指令,两大类。,modbus,通讯,(,1,),modbus,通讯指令,Modbus,指令,分为线圈读写、寄存器读写,采用标准的,mudbus-RTU,协议。下面具体介绍这些指令的用法。,A,线圈读,COLR,线圈读是,将指定局号中指定线圈状态读到本机内指定线圈中的指令。指令说明如图所示:,第一节,Modbus,通讯,S1,指定远端通讯局号,S2,指定远端线圈首地址编号,S3,指定线圈个数的数值,D1,指定本地接收线圈的首地址,D2,指定串口编号,其中个操作数的含义如下表:,当,X0,由,OFF,到,ON,变化时,将站号为,1,
4、的远端设备的,modbus,地址为,K500,和,K501,的两个线圈状态映射到本机的,M1,和,M2,两个线圈。本通讯指令通过,PLC,的,port2,发送。,第一节,Modbus,通讯,B,单个线圈写,COLW,单个线圈写是,将本机内指定线圈状态写到指定局号中指定线圈的指令。指令说明如图所示:,操作数,作用,D1,指定远端通讯局号,D2,指定远端线圈首地址编号,S1,指定本地发送线圈首地址编号,S2,指定串口编号,第一节,Modbus,通讯,C,多个线圈写,MCLW,多个线圈写是,将本机内指定的多个线圈的状态写到指定局号中指定线圈的指令。指令说明如图所示:,操作数,作用,D1,指定远端通讯
5、局号,D2,指定远端线圈首地址编号,D3,指定线圈个数的数值,S1,指定本地发送线圈首地址编号,S2,指定串口编号,第一节,Modbus,通讯,D,寄存器读,REGR,寄存器读是,将指定局号指定寄存器读到本机内指定寄存器的指令。指令说明如图所示:,操作数,作用,S1,指定远端通讯局号,S2,指定远端寄存器首地址编号,S3,指定寄存器个数的数值,D1,指定本地接收寄存器首地址编号,D2,指定串口编号,第一节,Modbus,通讯,E,单个寄存器写,REGW,单个寄存器写,是将本机内指定寄存器写到指定局号指定寄存器的指令。指令说明如图所示:,操作数,作用,D1,指定远端通讯局号的数值,D2,指定远端
6、寄存器首地址编号,S1,指定本地发送寄存器首地址编号,S2,指定串口编号,第一节,Modbus,通讯,操作数,作用,D1,指定远端通讯局号,D2,指定远端寄存器首地址编号,D3,指定寄存器个数的数值,S1,指定本地发送寄存器首地址编号,S2,指定串口编号,F,多个寄存器写,MRGW,多个寄存器写是将本机内指定的多个寄存器写到指定局号指定寄存器的指令。指令说明如图所示:,第一节,Modbus,通讯,Mudbus,通讯举例,1,一台信捷,XC,系列,PLC“A”,控制,1,台,XC,系列,PLC“B”,,要求“,A,”,PLC,的,X0,导通时,“,B,”,PLC,的,Y0,导通。,可编程控制器的
7、软元件,modbus,地址见手册!,第一节,Modbus,通讯,A,A,B,B,第一节,Modbus,通讯,Mudbus,通讯举例,2,一台信捷,XC,系列,PLC“A”,控制,1,台信捷变频器,要求可通过通讯,更改变频器的运行频率以及运行命令。,变频器的软元件,modbus,地址及参数修改详见变频器用户手册!,第一节,Modbus,通讯,A,A,B,B,第一节,Modbus,通讯,自由格式通讯,(,2,)自由格式指令,所谓自由格式,即自定义协议通讯,现在市场上很多智能设备都支持,RS232,或者,RS485,通讯,而各家产品所使用的协议不尽相同,例如:信捷,PLC,使用标准的,Modbus-
8、RTU,协议,一些温度控制器厂家使用的自定义协议;如果用信捷,PLC,和温度控制器通讯,读取温度控制器采集的当前温度,则需使用自由格式通讯,完全按照仪表厂家的协议来发送数据,这样即可通讯上。,第二节 自由格式通讯,自由格式通讯指令包括发送数据和接收数据两条,下面介绍这两条指令的用法。,A,发送数据,SEND,发送数据将本机内指定的数据写到指定局号指定地址的指令。指令说明如图所示:,操作数,作用,S1,指定本地发送数据的首地址编号,S2,指定发送字符个数的数据或软元件地址编号,n,指定通讯口编号,其中个操作数的含义如下表:,第二节 自由格式通讯,M0,的一次上升沿发送一次数据,发送字符的个数由,
9、D100,的值决定,时序图如图所示:,在数据发送过程中正在发送标志位,M8132,(通讯口,2,)置,ON,。,第二节 自由格式通讯,操作数,作用,S1,指定本地接收数据的首地址编号,S2,指定接收字符个数的数据或软元件地址编号,n,指定通讯口编号,B,接收数据,RCV,接收数据是将指定局号的数据写到本机内指定地址的指令。指令说明如图所示:,第二节 自由格式通讯,M0,的一次上升沿接收一次数据,接收字符的个数由,D200,的值决定,时序图如图所示,在数据接收过程中正在接收标志位,M8134,(通讯口,2,)置,ON,。,第二节 自由格式通讯,在举例之前,我们需要先了解一下,Modbus-RTU
10、协议,,以及,C,功能的使用。,第二节 自由格式通讯,Modbus,通讯协议,Modbus,是由,Modicon,(现为施耐德电气公司的一个品牌)在,1979,年发明的,是全球第一个真正用于工业现场的总线,协议,。,Modbus,协议,是应用于,电子控制器,上的一种通用语言。通过此协议,,控制器,相互之间、控制器经由网络(例如,以太网,)和其它设备之间可以通信。它已经成为一通用工业标准。,有了它,不同厂商生产的控制设备可以连成,工业网络,,进行集中监控。此,协议,定义了一个,控制器,能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一,控制器,请求访问其它设备的过程,如何回应
11、来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。,第二节 自由格式通讯,Modbus,具有以下几个特点:,(,1,)标准、开放,用户可以免费、放心地使用,Modbus,协议,,不需要交纳许可证费,也不会侵犯知识产权。目前,支持,Modbus,的厂家超过,400,家,支持,Modbus,的产品超过,600,种。,(,2,),Modbus,可以支持多种电气接口,如,RS-232,、,RS-485,等,还可以在各种介质上传送,如双绞线、光纤、无线等。,(,3,),Modbus,的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。,第二节 自由格式通讯,控制器,通
12、信使用主,从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:,可编程控制器,。,主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。,Modbus,协议,建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。,从设备回应消息也由,Modbus,协议,构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一
13、错误消息并把它作为回应发送出去。,第二节 自由格式通讯,控制器,能设置为两种传输模式(,ASCII,或,RTU,)中的任何一种在标准的,Modbus,网络通信。,用户选择想要的模式,包括,串口通信,参数(,波特率,、校验方式等),在配置每个,控制器,的时候,在一个,Modbus,网络上的所有设备都必须选择相同的传输模式和串口参数。,所选的,ASCII,或,RTU,方式仅适用于标准的,Modbus,网络,它定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何解码。,第二节 自由格式通讯,C,语言功能,C,语言功能,梯形图一直以来都是,PLC,最主流的编程方式,它有着能
14、最让人理解的方式去完成程序编写的优势,但是随着工艺要求的复杂化与多元化,传统的梯形图编程语言在很多功能上的实现需要花费很多的精力才能完成程序的编写,而大量的梯形图语言会比较大的影响到整个系统的扫描周期,导致一些无法预料的问题出现,同时在运动控制上面如果依靠梯形图语言来进行误差补偿,可能达不到比较好的效果。而,C,语言高强度适应性的特点则可以很大程序的去解决梯形图无法解决的问题,因而信捷特别在开发了编程软件在支持梯形图的同时,最大程度的能够兼容,C,语言的编写。,第三节,C,语言功能,C,语言功能的使用方法,四步操作法完成,C,语言的使用,(演示),:,(,1,)添加,C,语言功能块,(,3,)
15、调用,C,语言功能块,(,2,)编辑,C,语言功能块,在进行,C,函数调用的时候,,D0,,,M,0分别表示函数里面,W,0,B,0的初始地址,,W0,表示为,D0,,,B0,表示为,M0,,如果调用程序时写为,PAIXU D10 M1,0,则,C,程序中,W0,表示的值为的,D10,B10,标志的值为,M20,。,第三节,C,语言功能,功能:,支持几乎所有的,C,语言函数;,在涉及到复杂的数学运算时,C,语言的优势更加明显;,增强了程序的保密性,(,无论何种方式下载,,C,语言部分都无法上传,),;,可进行多处调用和不同文件的调用,大大提高了编程人员的效率。,第三节,C,语言功能,自由格式通
16、讯举例,1,一台信捷,XC,系列,PLC“A”,控制,1,台信捷变频器,要求可通过自由格式通讯,更改变频器的运行频率以及读取设定频率。,第三节,C,语言功能,A,A,B,B,第三节,C,语言功能,第三节,C,语言功能,自由格式通讯举例,2,字符,含义,:,数据开始,R,读功能,T,温度,CR,回车,数据结束,信捷,PLC,与温控仪表通讯,而仪表使用自己的通讯协议,协议规定读取温度需发送“:”“,R”“T”“CR”,四个字符,各字符含义如下:,第三节,C,语言功能,字符,对应,ASCII,码值,:,3A,R,52,T,54,CR,0D,PLC,需要将上述字符的,ASCII,码发送到仪表,才能读取
17、到仪表测得的当前温度值。通过查询,ASCII,码表可得到各字符的,ASCII,码值(十六进制):,显然按照上面描述的情况,使用,MODBUS,指令不能通讯,这个时候就需要使用自由格式通讯。,第三节,C,语言功能,操作步骤:,先将硬件线路连接好。,按照温控仪表的通讯参数将,PLC,的串口参数设定好(注意自由通讯,PLC,站号设置成,255,),参数设置好后重新上电才能生效。,按照上一页中描述的协议编写程序。,读取温度需发送:“:”,“,R,”,“,T,”,“,CR,”,“:”,-,数据开始,“,R,”,-,读功能,“,T,”,-,温度,“,CR,”,-,回车,数据结束,第三节,C,语言功能,【,
18、控制程序,】,第三节,C,语言功能,BLOCK,功能块,顺序功能块,即,BLOCK,(以下简称,BLOCK,)是为了实现某些功能而存在的一段程序块。可以将,BLOCK,理解为一个特殊的流程,在这个特殊的流程里,所有的程序按照一个原则来执行,顺序执行原则,即上一条程序执行完成之后,才会去执行下一条程序。,这也是,BLOCK,与一般流程最大的不同之处。同时根据,BLOCK,的这个特点,可以解决对同一脉冲口发脉冲导致的双线圈问题,也可以解决不能在同一流程对同一串口发送多条通讯指令的问题。,第四节,Block,功能块,用户执行语段,脉冲,通讯,变频器配置,Wait,指令,命令语列表,SBLOCK,顺序
19、功能块,n,SBLOCKE,BLOCK,运行开始,BLOCK,内的执行语段,,所有指令按顺序执行,BLOCK,运行结束,BLOCK,开始于,SBLOCK,、结束于,SBLOCKE,,中间为编程人员书写指令区。如果同一个,BLOCK,中包含多个发脉冲指令(其他指令也适用),那么脉冲指令将按照触发条件成立的先后顺序依次执行;同时,先执行的脉冲指令结束后才开始下一条脉冲指令的执行。,一个完整的,BLOCK,结构,如下图所示:,第四节,Block,功能块,在一个程序文件中,至多不可以调用超过,100,个,BLOCK,程序块。,BLOCK,的调用方法为面板配置法,下面带大家演示,BLOCK,配置的具体操作。,第四节,Block,功能块,思考练习题,前面的几个例子请用,BLOCK,功能块的方法重新完成,思考与练习,Thank You!,






