西门子6ES7231-7PF22-0XA0使用方法
一、问题提出:
1 )计算机端是如何编程来实现接收和发送端口的数据的?
2 )如何设置特殊寄存器 D8120 ?
3 )可编程序控制器端是如何编程来接收和发送端口的数据的?
4 )如何将计算机和可编程序控制器连接起来?
二、概述
通用计算机软件丰富,界面友好,操作便利,使用通用计算机作为可编程控制器的编程工具也十分方便,可编程控制器与计算机的通信近年来发展很快。在可编程控制器与计算机连接构成的综合系统中,计算机主要完成数据处理、修改参数、图像显示、打印报表、文字处理、编制可编程控制器程序、工作状态监视等任务。可编程控制器仍然直接面向现场、面向设备,进行实时控制。可编程控制器与计算机的连接,可以更有效地发挥各自的优势,互补应用上的不足,扩大可编程控制器的处理能力。
为了适应可编程控制器网络化的要求,扩大联网功能,几乎所有的可编程控制器厂家,都为可编程控制器开发了与上位机通讯的接口或专用通讯模块。一般在小型可编程控制器上都设有 RS422 通讯接口或 RS232C 通讯接口;在中大型可编程控制器上都设有专用的通讯模块。如:三菱 F 、 F1 、 F2 系列都设有标准的 RS422 接口, FX 系列设有 FX-232AW 接口、 RS232C 用通讯适配器 FX-232ADP 等。可编程控制器与计算机之间的通讯正是通过可编程控制器上的 RS422 或 RS232C 接口和计算机上的 RS232C 接口进行的。可编程控制器与计算机之间的信息交换方式,一般采用字符串、双工或半、异步、串行通信方式。因此可以这样说,凡具有 RS232C 口并能输入输出字符串的计算机都可以用于和可编程控制器的通讯。
运用 RS232C 和 RS422 通道,可容易配置一个与外部计算机进行通讯的系统。该系统中可编程控制器接受控制系统中的各种控制信息,分析处理后转化为可编程控制器中软元件的状态和数据;可编程控制器又将所有软元件的数据和状态送入计算机,由计算机采集这些数据,进行分析及运行状态监测,用计算机可改变可编程控制器的初始值和设定值,从而实现计算机对可编程控制器的直接控制。
三、如何采用 FX-232ADP 的连接通信
RS232C 用通讯适配器 FX-232ADP 能够以无规约方式与各种具有 RS232C 接口的通讯设备连接,实现数据交换。通讯设备包括计算机、条形码读出器、图像器等。使用 FX-232ADP 时,也可用调制解调器进行远程通讯。
(一)通讯系统的连接
图中是采用 FX-232ADP 接口单元,将一台通用计算机与一台 FX2 系列 plc 连接进行通讯的示意图。
(二)通讯操作
FX2 系列 plc 与通讯设备间的数据交换,由特殊寄存器 D8120 的内容指定,交换数据的点数、地址用 RS 指令设置,并通过 plc 的数据寄存器和文件寄存器实现数据交换。下面对其使用做一简要介绍。
1 .通讯参数的设置
在两个串行通讯设备进行任意通讯之前,必须设置相互可辨认的参数,只有设置一致,才能进行可靠通讯。这些参数包括波特率、停止位和奇偶校验等,它们通过位组合方式来选择,这些位存放在数据寄存器 D8120 中
一、可编程控制器控制网络的“周期 I/O 方式”通信
可编程控制器的远程 I/O 链路就是一种可编程控制器控制网络,在远程 I/O 链路中采用“周期 I/O 方式”交换数据。远程 I/O 链路按主从方式工作,可编程控制器带的远程 I/O 主单元在远程 I/O 链路中担任主站,其它远程 I/O 单元皆为从站。在主站中设立一个“远程 I/O 缓冲区”,采用信箱结构,划分为 n 个分信箱与每个从站一一对应,每个分信箱再分为两格,一格管发送,一格管接收。主站中负责通信的处理器采用周期扫描方式,按顺序与各从站交换数据,把与其对应的分箱中发送分格的数据送从站,从从站中读取数据放入与其对应的分信箱的接格中。这样周而复始,使主站中的“远程 I/O 缓冲区”得到周期性的刷新。
在主站中可编程控制器的 CPU 单元负责用户程序的扫描,它按照循环扫描方式进行处理,每个周期都有一段时间集中进行 I/O 处理,这时它对本地 I/O 单元及远程 I/O 缓冲区进行读写操作。可编程控制器的 CPU 单元对用户程序的周期性循环扫描,与可编程控制器负责通信的处理器对各远程 I/O 单元的周期性扫描是异步进行的。
尽管可编程控制器的 CPU 单元没有直接对远程 I/O 单元进行操作,但是由于远程 I/O 缓冲区获得周期性刷新,可编程控制器的 CPU 单元对远程 I/O 缓冲区的读写操作,就相当于直接访问了远程 I/O 单元。
主站中负责通信的处理器采用周期扫描方式与各从站交换数据,使主站中“远程 I/O 缓冲区”得到周期性刷新,这样一种通信方式既涉及到周期又涉及到 I/O ,因而被称为“周期 I/O 方式”。这种通信方式要占用可编程控制器的 I/O 区,因此只适用于少量数据的通信。从表面看来远程 I/O 链路的通信就好像是可编程控制器直接对远程 I/O 单元进行读写操作,因此简单、方便。
二、可编程控制器控制网络的“全局 I/O 方式”通信
“全局 I/O 方式”是一种串行共享存储区通信方式,它主要用于带有链接区的可编程控制器之间的通信。
全局 I/O 方式的通信原理如图所示。在可编程控制器网络的每台可编程控制器的 I/O 区中划出一个块来作为链接区,每个链接区都采用图中所表示的邮箱结构。相同编号的发送区与接收区大小相同,占用相同的地址段,一个为发送区,其它皆为接收区。采用广播方式通信。可编程控制器把 1 #发送区的数据在可编程控制器网络上广播,可编程控制器 2 、可编程控制器 3 收听到后把它接收下来存入各自的 1 #接收区中。可编程控制器 2 把 2 #发送区数据在可编程控制器网上广播,可编程控制器 1 、可编程控制器 3 把它接收下来存入各自的 2 #接收区中。可编程控制器 3 把 3 #发送区数据在可编程控制器网上广播,可编程控制器 1 、可编程控制器 2 把它接收下来存入各自的 3 #接收区中。显然通过上述广播通信过程,可编程控制器 1 、可编程控制器 2 、可编程控制器 3 的各链接区中数据是相同的,这个过程称为等值化过程。通过等值化的通信使得可编程控制器网络中的每台可编程控制器的链接区中的数据保持一致。它既包含着自己送出去的数据,也包含着其它可编程控制器送来的数据。由于每台可编程控制器的链接区大小一样,占用的地址段相同,每台可编程控制器只要访问自己的链接区,就等于访问其它可编程控制器的链接区,也就相当于与其它可编程控制器交换了数据。这样链接区就变成了名符其实的共享存储区,共享区成为各可编程控制器交换数据的中介。
当然这里的共享存储区与并行总线的共享存储区在结构上有些差别,它把物理布在各站的链接区,通过等值化通信使其好像重叠在一起,在逻辑上变成一个存储区,大小与一个链接区一样。这种共享存储区称为串行共享存储区。
链接区可以采用异步方式刷新(等值化),也可以采用同步方式刷新。异步方式刷新与可编程控制器中用户程序无关,由各可编程控制器所带的通信处理器按顺序进行广播通信,周而复始,使其所有链接区保持等值化。同步方式刷新是由用户程序中对链接区的发送指令启动一次刷新。这种方式只有当链接区的发送区数据变化时才刷新(等值化),这样事半功倍。
全局 I/O 方式中的链接区是从可编程控制器的 I/O 区划分出来的,经过等值化通信变成所有可编程控制器共享(全局共享),因此称为“全局 I/O 方式”。这种方式下可编程控制器直接用读写指令对链接区进行读写操作,简单、方便、快速,但应注意在一台可编程控制器中对某地址的写操作在其它可编程控制器中对同一地址只能进行读操作。与周期 I/O 方式一样,全局 I/O 方式也要占用可编程控制器的 I/O 区,因而只适用于少量数据的通信。
三、主从总线 1:N 通信方式(可编程控制器通信网络)
主从总线通信方式又称为 1:N 通信方式,这是在可编程控制器通信网络上采用的一种通信方式。在总线结构的可编程控制器子网上有 N 个站,其中只有一个主站,其它皆是从站,也就是因为这个原因主从总线通信方式又称为 1:N 通信方式。
主从总线通信方式采用集中式存取控制技术分配总线使用权,通常采用轮询表法。所谓轮询表法是一张从机号排列顺序表,该表配置在主站中,主站按照轮询表的排列顺序对从站进行询问,看它是否要使用总线,从而达到分配总线使用权的目的。
为了保证实时性,要求轮询表包含每个从站号不能少于一次,这样在周期轮询时,每个从站在一个周期中至少有一次机会取得总线使用权,从而保证了每个站的基本实时性。对于实时性要求比较高的站,可以在轮询表中让其从机号多出现几次,这样就用静态的方式,赋予该站较高的通信优先权。在有些主从总线中把轮询表法与中断法结合使用,让紧急任务可以打断正常的周期轮询而插入,获得优先服务,这就是用动态方式赋予某项紧急任务以较高优先权。
存取控制只解决了谁使用总线的问题,获得总线的从站还有如何使用总线的问题,即采用什么样的数据传送方式。主从总线通信方式中有两种基本的数据传送方式。一种是只允许主从通信,不允许从从通信,从站与从站要交换数据,必须经主站中转。另一种是既允许主从通信也允许从从通信,从站获得总线使用权后先安排主从通信,再安排自己与其它从站(即从从)之间的通信。
四、令牌总线 N : N 通信方式(可编程控制器通信网络)[NextPage]
令牌总线通信方式又称为 N : N 通信方式。在总线结构上的可编程控制器子网上有 N 个站,它们地位平等没有主站与从站之分,也可以说 N 个站都可以是主站,所以称之为 N : N 通信方式。
N : N 通信方式采用令牌总线存 取 控制技术。在物理总线上组成一个逻辑环,让一个令牌在逻辑环中按一定方向依次流动,获得令牌的站就取得了总线使用权。令牌总线存取控制方式限定每个站的令牌持有时间,保证在令牌循环一周时每个站都有机会获得总线使用权,并提供优先级服务,因此令牌总线存取控制方式具有较好的实时性。
取得令牌的站采用什么样的数据传送方式对实时性影响非常明显。如果采用无应答数据传送方式,取得令牌的站可以立即向目的站发送数据,发送结束,通信过程也就完成了。如果采用有应答数据传送方式,取得令牌的站向目的站发送完数据后并不算通信完成,必须等目的站获得令牌并把应答帧发给发送站后,整个通信过程才结束。这样一来响应时间明显增长,而使实时性下降。
有些令牌总线型可编程控制器网络的数据传送方式固定为一种,有些则可由用户选择。
五、浮动主站 N: M 通信方式(可编程控制器通信网络)
浮动主站通信方式又称 N : M 通信方式,它适用于总线结构的可编程控制器网络。设在总线上有 M 个站,其中 N 个为主站,其余为从站( N<M ) , 故称之为 N : M 通信方式。
N : M 通信方式采用令牌总线与主从总线相结合的存取控制技术。首先把 N 个主站组成逻辑环,通过令牌在逻辑环中依次流动,在 N 个主站之间分配总线使用权,这就是浮动主站的含义。获得总线使用权的主站再按照主从方式来确定在自己的令牌持有时间内与哪些站通信。一般在主站中配置有一张轮询表,可按照轮询表上排列的其它主站号及从站号进行轮询循。获得令牌的主站对于用户随机提出的通信任务可按优先级安轮询之前或之后进行。
获得总线使用权的主站可以采用多种数据传送方式与目的站的通信,其中以无应答无连接方式速度最快。
六、令牌环通信方式(可编程控制器通信网络)
有少量的可编程控制器网络采用环形拓扑结构,其存取控制采用令牌法,具有较好的实时性。如图所示,其表示了令牌环工作过程及其帧结构。在图中,令牌在物理环中按头指向,一站接一站地传送,获得令牌的站才有权发送数据。设 B 站要向 D 站发送数据。当令牌传送到 B 站时, B 站把令牌变为暂定证,然后把等待发送数据按图中表示的格式加在暂停证后面从 B 站发送出去,最后再加上令牌一起发往 C 站。此帧信息经 C 站中转后到达 D 站, D 站把自己的本站地址与帧格式中目的地址相比较,发现两者相同,表明此帧信息是发给 D 站的,然后对此帧信息做差错校验,并把校验结果以肯定应答或否定应答填在 ACK 段中。同时把此帧信息复制下来,再把带有应答的帧继续向下传送,经 A 站中转到达 B 。 B 站用自己的本站地址与帧中源地址相比较,发现两者相同,表明此帧是自己发出的,再检查 ACK 。若为否定应答,要组织重发;若为肯定应答,则把此帧从环上吸收掉,只剩下令牌在环中继续流动。
在图中的帧格式的最后为一令牌,因而当某站获得此令牌后也同样可发送数据,把此令牌变为暂停证,后面带上发送的帧,最后再加上令牌,这时的帧格式就变成两个暂停证、两帧,再加令牌,其传送过程与一帧相似,这里不再重复。从上述传送过程可见,令牌环通信方式采用的是有应答数据传送方式。
七、 CSMA/CD (carrier-sense multiple access with collision detection) 通信方式
这是一种随机通信方式,适用于总线结构的可编程控制器网络,总线上各站地位平等,没有主从之分。采用 CSMA/CD 存取控制方式,此控制方式用通俗的语言描述为“先听后讲,边讲边听”。所谓先听后讲是指要求使用总线的各站,在发送数据之前必须先,看看总线是否空闲,确认总线空闲后再向总线发送数据。“先听后讲”并不能完全避免冲突,如果仍发生了冲突,则不能等到差错校验时再发现,这样对通信资源浪费太严重,而要采用“边讲边听”。发送数据的站,一边发送,一边,若发现冲突,立即停止发送,并发出阻塞音,通知网上其它站发生了冲突,然后冲突双方采用取随机数代入指数函数的退避算法来决定重新上网时间,解决冲突。
CSMA/CD 存取控制方式不能保证在一定时间周期内,可编程控制器网上每个站都可获得总线使用权,也不能用静态方式赋予某些站以较高优先权,不能用动态方式赋予某些紧急通信任务以较高优先权,因此这是一种不能保证实时性的存取控制方式。但是它采用随机方式,方法本身简单,而且见缝插针,只要总线空闲就抢着上网,通信资源利用,因而在可编程控制器网络中 CSMA/CD 通信法适合用于上层生产管理子网。
CSMA/CD 通信方式的数据传送方式可以选用有连接、无连接、有应答、无应答及广播通信中的每一种,这可按对通信速度及可靠性的要求取舍。
八、多种通信方式的集成
在新近推出的一些现场总线中,常常把多种通信方式集成配置在某一级子网上。从通信方法上看,都是一些原来常用的,但如何自动地从一种通信方式切换到另一种,如何按优先级调度,则成为多种通信方式集成的关键罐蒸呢机是在纺织行业当中应用较多的设备,其工作流程为:打开高压釜的门;小车从高压釜中退出;梁(轴)装在星形件上;星形件转动;梁装在小车上;小车进入高压釜;高压釜门关闭;在高压釜中循环。
在罐蒸呢机的控制当中,采用西门子S7-200系列的PLC可满足要求,在系统造价方面要求尽量低。上位机方面:需要控制的数据不是很多,采用专门的组态软件成本太高。基于这种思路,我们在上位机上采用VC++编制串口通讯程序进行数据的传输、控制。
一般S7-200系列通信端口分为四种工作方式:PPI,MPI,PROFIBUS和自由口通信。其中PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC运行方式(RUN)下通信。CPU的串行通信口可由用户程序控制,这种操作方式称之为自由口模式。当选择自由口模式时,用户程序即可以通过发送中断、接收中断、发送指令(XMT)和接收指令(RCV)来控制串行通信口的运行。在自由口模式下,通信协议完全由用户程序来控制。
由于在自由端口模式下,通信协议可完全由梯形图程序控制,还可使用接收中断、发送中断、发送指令和接受指令来控制通信操作,因而选用自由口通信方式。3 上位机(PC)控制程序编程
3.1 初始化
上位机的控制程序的编写按照如下步骤进行:
(1) 建立基于对话框的MFC应用程序;
(2) 在对话框中插入MSComm控件;
(3) 利用ClassWizard定义CMSComm类控制对象;
(4) 在对话框中添加MSComm控件,并赋予变量;
(5) 打开串口、设置参数:需要完成的任务是选择、打开串口,规定波特率,校验类型,数据位、停止位等一些控制信息;
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //选择com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
//打开串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,n,8,1");
//波特率9600,无校验,8个数据位,1个停止位
//在该处的设置要同下位机的通讯参数相匹配,一般根据下位机的具体情况设定
m_ctrlComm.SetbbbbbMode(1);
//1:表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1);
//SetRThreshold(1);
//参数1表示当串口接收缓冲区中有大于等于1个字符时将引发接收数据的OnComm事件
m_ctrlComm.SetbbbbbLen(0);
//设置当前接收区数据长度为0
m_ctrlComm.Getbbbbb();
//先预读缓冲区以残留数据
(6) 添加串口事件消息处理函数OnComm。 这个函数是用来处理串口消息事件的,即每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,就会执行刚才添加的函数,在OnComm()函数中加入相应的处理代码就能实现自己想要的功能。[NextPage]
3.2 控制数据的处理对控制数据进行存储操作,编程时给控制量赋初值即默认值,每次运行上位机控制程序时将控制数据读出并送给相应的控制单元,即使是第一次运行该程序,点击“运行”也能将控制数据从文件中取出并同步下达到下位机;以后每次更改控制数据时就将该控制数据进行保存,作为新的默认控制数据,以备以后启动设备时使用。
在这里我们要实现的功能是控制下位机的启动和停止,以及三个定时器的定时长度的给定。所发送的数据包括下位机的起停标志,3个定时器定时长度和控制信息结束标志。需要注意的是在控制信息的结尾要添加结束标志,该结束标志在PLC上规定,需要上位机配合,作用是下位机接收到该标志以后产生接收完成中断,从而响应上位机的控制。具体操作如下:
发送数据:由发送按钮触发一个单击消息,用以读取编辑框的内容,将读取的数据保存到文件当中,并向串口发送数据。
UpdateData(TRUE); //读取编辑框内容
CFile OutFile;
OutFile.Open(pFileName,CFile::modeCreate|CFile::modeWrite);
OutFile.SeekToEnd();
CArchive ar(&OutFile,CArchive::store);
UpdateData(true);
ar << m_strTXData<<
ar.Close();
OutFile.Close(); //文件关闭
CtrlData=MachineState+m_strTXData+m_strTXData2
+m_strTXData3+EndFlag; //控制数据
MessageBox("发送给定数据?","发送提示!",0+48+512);//添加消息提示框
m_ctrlComm.SetOutput(COleVariant(CtrlData));
//发送数据
CtrlData="";
另外,启动、停止按钮也会触发单击消息,处理方法跟上述发送数据的过程相似,只是在处理时要首先置位MachineState,启动时置1,停止时置0,用来启动或停止设备;而且不再对保存控制数据的文件进行操作。4 下位机(PLC)控制程序编程
4.1 初始化
设定串口的通讯参数。接收完成以及发送完成都要产生中断,中断号分别为9、23。
main:
NETWORK 1
LD SM0.1
MOVB 16#09, SMB30 //自由口参数:无校验,8位数据位,波特率9600,自由口通信;
MOVB 16#B0, SMB87
//接收信息控制,启动接收功能,检测信息结束标志;
MOVB 16#2A, SMB89
//定义信息结束标志,与上位机配合;
MOVW +5, SMW90
//空闲行时间期限,单位微秒;
MOVB 100, SMB94 //接收字符数目最大值
ENI //开中断
ATCH INT_0, 23 //接收中断连接
ATCH INT_2, 9 //发送中断连接
RCV VB100, 0
4.2 控制主程序
NETWORK 1
LDB= VB101, 16#31
//检测到要求起动机器的控制信息,转入开动操作
LPS
S V10.0,1 //设置启动标志位
A V10.0 //检测启动标志位
A I0.1 //检测输入是否为1
TON T51, VW600
//若各条件具备,启动定时器,其定时参数由上位机给定
A T51
A V10.0
//若定时到并且下位机处于启动状态,置位输出Q0.4
= Q0.4
NETWORK 2
LDB= VB101, 16#30
A V10.0
S V10.0, 1
这段程序将接收到的控制数据的启动、停止控制位进行判断,根据判断的结果决定启动还是停止设备;在这段程序里面还将上位机发送的时间数据送给定时器;这样上位机就能实时控制下位机的起停,并且能实时的对定时器的定时长度进行修改,实现远程控制。[NextPage]
4.3 中断处理
INT_0:
//接收完成中断如果接收状态显示接受到结束字符,连接一个10ms定时器
// 发发送,同时将接收到的控制信息中的控制数据部分进行转换,以便后续程序的应用
LDB= SMB86,16#20
MOVB 10,SMB34
BTI VB102, VW600
//数据转换,由ASCII转换为整型数据
-I 16#0030, VW600
//将整型数据进行运算得出操作者见到的数据
*I +10, VW600
ATCH 1,10
CRETI
NOT
RCV VB100,0
//如果接收完成,然后启动一个新的接收
在这段程序中将接收到的数据信息部分进行转换和运算。因为默认的下位机接收和发送的数据都是文本信息,格式为ASCII码值,所以如果想得到用户在上位机上给定值转换成为整数,然后将这些数据用于控制。
4.4 注意事项
在编程时有一点应该注意:那就是接收和发送两种模式之间的切换时间,因为用485通讯口进行通讯时,发送结束后不能立即转为接收模式,有一个反应时间。所以在接收完成后如果要接着发送数据的话,需要设一个定时器,延迟一段时间以后再进行发送操作,反之亦
浔之漫智控技术(上海)有限公司经销/CO-TRUST科思创西门子PLC;S7-200S7-300 S7-400 S7-1200 触摸屏,变频器,6FC,6SNS120 V10 V60 V80伺服数控备件:原装进口电机,电线,电缆,希望能跟您有更多的合作机会。我公司经营西门子全新原装PLC;S7-200S7-300 S7-400 S7-1200 触摸屏,变频器,6FC,6SNS120 V10 V60 V80伺服数控备件:原装进口电机(1LA7、1LG4、1LA9、1LE1),国产电机(1LG0,1LE0)大型电机(1LA8,1LA4,1PQ8)伺服电机(1PH,1PM,1FT,1FK,1FS)西门子保内全新原装产品‘质保一年。一年内因产品质量问题免费更换新产品;不收取任何费。欢迎致电咨询。