西门子PLC利用自由口实现通讯,配合中断效果好!图文实例讲解!
以前我们讲过关于自由口通讯的实例,今天我们讲一下自由口通讯配合中断的实例。
在一些特定场合,比如说与松下系列伺服驱动器的控制时,为了保证数据的安全,我们需要进行多次往返的数据交换,这就需要严格控制通讯的时间。那么这个时候对于PLC来说通讯就是最重要的,所以我们需要打断PLC的正常功能,优先处理通讯,这就需要通讯中断。
实例:2台S7-200 SMART CPU(端口0)采用自由口通信方式实现相互通信
(本文仅为展示自由口通讯和中断,如果想要实现这两个PLC的通讯其实最好是使用向导进行以太网通讯,有机会我们也会进行讲解!)
通信任务:CPU1 每秒触发一次 XMT 指令将 CPU 的实时时钟发送到 CPU2;CPU2 接收到 CPU1 发送的信息后立即将 CPU2 的实时时钟回复到 CPU1。
接线:每个 S7-200 SMART CPU 都提供一个以太网端口和一个 RS485 端口(端口0),标准型 CPU 额外支持 SB CM01 信号板(端口1),信号板可通过 STEP 7-Micro/WIN SMART 软件组态为 RS232 通信端口或 RS485 通信端口。
CPU 通信端口引脚分配
1、CPU1 编程 1.1、CPU1 主程序编程如图 所示:CPU1主程序
程序讲解:
1. 设置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位数据位,无校验)。
2. 设置 SMB87 = 2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms,字符间定时器 SMW92 = 5 ms,允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 发送完成事件,并启用中断。
5. 每秒钟读取一次 CPU 的实时时钟,并将发送缓冲区长度设置为 8 个字符。
6. 执行 XMT 指令之前设置 SM87.7 = 0,同时执行 RCV 指令,终止消息接收。
7. 每秒钟执行一次 XMT 指令将 CPU 的实时时钟发送出去。
1.2、 CPU1 发送完成中断子程序 INT_0 编程
中断子程序INT_0用于恢复 SMB87 的设置(SM87.7 = 1),并执行 RCV 指令开始接收 CPU2的应答信息。程序如图4. 所示:
CPU1 中断子程序 INT_0
2、CPU2 编程
2.1、CPU2 主程序编程如图所示:
CPU2主程序
1. 设置 SMB30 = 2#00001001 (自由口通信,波特率 9600 bps,8 位数据位,无校验)。
2. 设置 SMB87 = 2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms,字符间定时器 SMW92 = 5 ms,允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 接收完成事件,中断子程序 INT_1 到通信端口 0 发送完成事件,并启用中断。
5. 使用 SM0.1 调用 RCV 指令地执行。
2.2、 CPU2 接收完成中断子程序 INT_0 编程
中断子程序INT_0用于读取 CPU 实时时钟,并调用 XMT 指令将实时时钟信息发送出去。程序如图所示。
CPU2 接收完成中断子程序 INT_0
2.3、 CPU2 发送完成中断子程序 INT_1 编程
中断子程序 INT_1 用于执行 RCV 指令,并开始新的信息接收任务。程序如图 7.所示。
CPU2 发送完成中断子程序 INT_0
如何使用三菱ST语言编写一个完整的项目程序,照着写就能成功
哈喽,大家上午好呀!
今天给大家带来如何使用三菱ST语言编写一个完整的项目程序 。
本文作者:陆冯
【本文如有不足之处,请各位高手指点】
众所周知,目前类似于C语言的ST结构化文本语言,已经成为了目前工控行业PLC编程的主流发展趋势。目前,三菱、西门子、施耐德等各大PLC厂商的编程软件,包括国产PLC所采用的CODESYS软件,这些编程开发平台均支持ST结构化文本语言。例如:西门子的SCL、三菱的ST等等。
当然,各家之间只是叫法不一样,但是本质上都是一样的。各家PLC厂商的ST结构化文本语言和C语言非常类似,并且符合IEC-61131-3国际电工委员会规定的标准,像定时器、计数器这些软元件,都有标准的数据结构和形式。因此,ST结构化文本语言,有着“支持跨平台移植”的独特能力,在它的面前,所有的PLC众生平等,不再有品牌之分,只要写一遍程序,就可以同时下载进入不同厂商生产的PLC,实现同样的功能;另外,ST结构化文本语言,也有着在“复杂数据运算处理”方面的天然优势。
那么,【西门子的SCL语言】或者【三菱的ST语言】好学吗?难吗?好用吗?为了回答这些问题,我特意今天给大家写出这样一篇文章,以FX3U小型PLC控制分拣设备为例,详细阐述三菱ST语言的在项目中的使用方法,并对程序进行详细的解析。
(设备总体视图)
正文开始:
内容目录
一、程序架构
二、详细程序解释
(注意:本文中全部程序是面向智控教育新北校区的物料分拣设备所编写的,不适用于世界上任何其他设备)
首先我们明确一点,我们要做的,是让这个设备安全、正确、高效 地运作起来。这是我们的唯一目的!那么为了这个目的去进行PLC编程调试。一个好的电气工程师编写出来的程序,应当具有:安全性、正确性、高效性、移植性和扩展性。PLC程序其实就是人的意志的延伸,你的思维和意识基本决定了这台设备是个傻瓜,还是聪慧过人,当然,这个世界上不可能有完美的程序.......
一、程序架构
为了我们的设备能够正常运行,我们将程序分为以下几个部分:
IO映射程序:
负责PLC输入输出虚拟地址与实际地址的映射。这样的做法,可有效降低PLC某个触点在损坏后,现场维修人员的工作量;并且,我们在本文第二章中,将详细讲解如何借助IO映射实现暂停和设备定时停机功能。
手动程序:
负责在设备进入手动状态后,对各个执行机构的手动操纵。
自动程序部分又分为6个小部分:
1.复位程序:
负责执行设备的复位,并对设备复位完成情况进行判断。
2.急停程序:
负责执行设备的紧急停止,该程序在被调用后,设备将无条件立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户确认后,按下“复位按钮”进行设备复位。
3.暂停程序:
负责设备的暂时停止,该程序在被调用后,设备将无条件立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户按下“启动按钮”进行重新启动,设备将继续去执行没有完成的任务,接着暂停前的流程继续正常运行。
4.预停程序:
负责执行设备的预先停止,该程序在被调用后,设备将在搬运完一个工件,也就是完成一个周期的顺序动作后立即停止运行,所有机构停止运动,并保持当前位置不动,等待用户确认后,按下“复位按钮”进行设备复位。
5.统计程序:
负责设备的完成工件数量的计数,并将数据存储到对应的数据寄存器中;同时为我们这套系统的1分钟工件完成趋势曲线提供参照数据。
6.顺控程序:
作为承载和配合以上4个子功能程序的主体,它负责对设备各个状态下的机构控制,但是也是最好写、行数最多的程序。
二.详细程序解释
1.实际输入信号X的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件X的编号,GXworks2软件会自动调出对应的X输入软元件地址。
2.实际输出信号Y的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件Y的编号,GXworks2软件会自动调出对应的Y输出软元件地址。
3.IO映射数据的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:在ST语言的全局标签建立过程中,可以不指定绝对地址,但是我们为了方便上位机HMI从PLC中读取各个信号的数据,要进行绝对地址指定,否则程序就会多出一个子程序部分,用这个子程序把数据传到绝对地址中,用来对监控信号的抓取操作,这样就不可取了,还不如直接在这里指定。
4.开关量数据(0/1标志位)的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:这些“0/1标志位”的建立,是为了ST语言程序在设备动作中,存储设备的动作完成信号、物料判别信号、系统中断信号、下一步动作许可信号等程序数据。
5.数字量数据(“字”数据类型状态存储器)的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Word”(“字”数据类型),并指定输入软元件D的编号,GXworks2软件会自动调出对应的D数据寄存器的软元件地址。
注意:这些“字”数据类型状态存储器的建立,是为了ST语言程序在设备动作中,存储设备的状态信号、完成个数、周期数量统计等程序数据。
6.HMI交互数据的全局标签建立
在全局标签中,建立类别为“全局标签-变量”,并设置对应的“标签名”,数据类型选择为“Bit”(位数据类型),并指定输入软元件M的编号,GXworks2软件会自动调出对应的M辅助继电器的软元件地址。
注意:这些“HMI交互数据”的建立,是为了PLC与上位机HMI之间的信号交互,主要是操作按钮,也是这台设备实现“人机交互”的关键一步。
7.IO映射、设备暂停程序的编写
将实际输入X软元件的状态,通过赋值语句传递到PLC内部我们建立的“I映射数据”;将PLC内部的“O映射数据”通过赋值语句传递到实际输出Y软元件。
注意:我们在“输出映射”程序段中,IF语句的执行条件被设为“暂停标志”的不得电状态,如果我们将“暂停标志”设置为1,设备将不再进行输出信号的数据更新,PLC所有实际输出软元件Y,将保持“暂停标志”为1前的状态,保持当前位置不动,从而实现设备暂停的功能。
PS:当然我们可以使用“级联方式”对时间继电器编程,自由设置一段时间,当时间到了之后,将“暂停标志”设置为1,设备将不再进行输出信号的数据更新,从而实现“设备的定时停机”。当然,这只是IO映射程序的一种特殊用法,希望能帮助到大家。
8.初始化程序的编写
当设备上电时,所有输出全部复位,为设备运行做好准备。
9.手动程序的编写
当设备处于手动状态时,上位机HMI交互数据(也就是触摸屏上的按钮),将分别控制每个执行机构动作,实现对设备的手动操纵。
10.复位程序的编写
当设备处于自动状态,并按下复位按钮时,系统状态将置为2,系统执行复位,在满足所有复位条件(所有机构的复位信号传感器得电)的情况下,将证明系统复位已经完成,系统状态将变为3,设备进入等待启动状态。
11.顺控程序的编写
主要是,一步一步走下去,正确地操作状态的转移和标志位的更新,就可以完成任务了。我们的顺序控制程序,主要分为3个部分,每个部分之间,依靠标志位进行信息的交换,这些交换的数据内容有很多,比如:设备的动作完成信号、物料判别信号、系统中断信号、下一步动作许可信号等。
顺序控制程序,需要把“0/1标志位”和“字”数据类型状态存储器的配合使用,烂熟于心,因为顺控程序承载的是整个程序的主体,其他所有的功能都是在这个主体上建立的,这个程序要是写不好,基本什么都没戏了。
12.急停、预停程序的编写
当接收到“急停”或者“预先停止”信号时,系统将判断在何时,将顺序控制程序的“字”数据类型状态存储器置为“1”,让设备进入停止状态,设备将从顺序控制的自动运行状态中跳出,不再继续向下执行,PLC所有输出软元件保持当前状态不动作,0依旧为0、1依旧为1,所有机构不会再动,由此可以实现设备的安全停止,防止对人员的二次伤害。
13.统计程序的编写
根据程序中抓取到的信号标志位,并配合“字”数据类型状态存储器,实现对物料分拣总数量的统计;通过定时器T20定时,每隔1分钟对“一分钟统计个数产能”清零,为上位机HMI的统计趋势曲线提供数据依据。
到这里,我们的“智控分拣设备ST语言程序”就全部解释完了。
如果大家对三菱ST语言感兴趣,可以来常州智控教育学习,这里有配套完整、功能先进的教学设备,有认真负责、一丝不苟的专业老师,能够帮助您在工控之路上,走得更快、更远!!!
相关问答
什么是PLC的自由口?
PLC的自由口指的是PLC设备上可自由编程的数字输入/输出(DI/DO)接口。这些口可以通过编程来实现各种各样的控制功能,如传感器信号的接收和处理、电机、气动元件...
西门子PLC设置为自由口通讯模式,如果使用MODBUS通讯协议,要怎么弄?硬件要求和软件要求都有哪些?
00或200C...软件:安装STEP7Micro/WIN32V4.0SP4以上的版本(最新版本SP9);MODBUSSLAVE模拟软件(没有可用的MODBUS硬件时)、ACCESSPORT...
200的plc运行模式有几种?
常见的PLC运行模式包括以下几种:1.循环扫描模式:PLC按照事先设定的程序循环扫描执行,从输入模块读取输入信号,经过逻辑处理后输出控制信号,然后再次循环执...
会plc编程但不想进工厂现实吗?
会PLC编程,可以说是现在每个电工必备的能力之一了,PLC编程是简单的电工应用技术而已,可以说拿这种技术在社会上混并没有太多优势。虽然也有很多类型的电工是可...
什么是plc的自由口通讯?
自由通讯口是一个485无协议通讯口,所谓自由就是通讯里面的起始位结束位还有校验方式都由你自己定义,例如你收到一串数据时可以取他头尾两个字来与你程序里做比...
PLC编程买什么配置的笔记本-ZOL问答
PLC编程软件几乎不更新,对电脑的配置要求很低。可以说只要是电脑就可以运行PLC编程软件。有用(0)回复9990909006对于笔记本来说配置没有装机来的自由不过现...
欧姆龙C200H-DA003plc可编程控制器价格如何解决
[回答]信号范围选择:8点独立。信号范围:1~5V、4~20mA、-10~~10VC200H-DA003。分辨率:1/4000。转换速度:1ms//点以下。外部连接:可拆卸端子块plc可编程控制...
PLC和DDC有什么区别?麻烦说的详细点,谢谢?
1.PLC是可编程控制器DDC是直接数字控制器2.DDC其实是PLC的一种,但是DDC更专业一些,好多程序都是固化在DDC里面的,选择的时候要根据DDC的固有的程序模式来...
plc200联调协议怎么编写?
通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自...
plc自由通讯口可以接dmx512吗?
plc自由通讯口可以接dmx512,以施耐德的SoMachine为例介绍以ICE61163-3为编程标准的PLC编程软件自由通讯口设置。这是以PLC作为数据采集对象常用的通讯方式。...