线下实训
HOME
线下实训
正文内容
plc编程1001plc编程 西门子PLC利用自由口实现通讯,配合中断效果好!图文实例讲解!
发布时间 : 2024-11-23
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子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

举例说明PLC编程中的进制数,看了的都说懂

PLC也是一台微电脑,许多功能指令离不开进制转换,同时也是为了增加程序的可读性,想要对PLC进行编程,那么必须得清楚数制的设置以及转化和对应的符号。今天就给大家说说数制的问题。

以十进制举例,MSD表示高位,LSD表示低位,0、5叫做低两位,6、5叫做高两位。如下图:

如果是二进制,十六进制,它的位是一样的,但数和权就不一样了,二进制的权就是20 21 22 23..,十六进制亦然。如果是八位,那就是低4位,高四位、十六位亦然。

PLC中最常用的是二、十、十六进制数、八进制已经不常用了,它仅用于PLC的输入输出口的编制上,如下图:

n次方表示在哪一位,在0位就是80,在1位是81…

在十六进制中,0-9只是10个数,但十六进制是逢十六进一,A表示10、B表示11…以此例推

例如: 1001,可能以前你会读作一千零一,但作为数制就不一样了。

首先得清楚它属于哪个进制

十进制就是一千零一,

二进制的话:B1001

十六进制就是:H1001

注: 二、十六进制一般在各种PLC中都可用B、H表示

十进制:K6505

注: 在三菱PLC中一般用K表示十进制,其他PLC不定,在一般数字电路的书籍中一般用D来表示十进制。

八进制在数字电路中一般用O来表示,

在国外,表示十进制的方法是:(1001)10、八进制就是(1001)8、

例如:

B1011=1×23+0×22+1×21+1×20=8+0+2+1=11=K11

那么,小编就考考大家

问:H3BC=?

其实无论是十进制还是二进制或者十六进制。到最后在电路里执行的都是二进制。就是0和1。因为电路板只认高电平和低电平。十进制数是无法读取的。而且十六进制的数在内存里占用的空间要比二进制少。

但作为电气人,我们必须要明白这其中的转换原理,为日后的工作打下坚实的基础。

本文为技成原创文章,如需转载请注明出处,违者必究!

——END——

相关问答

拨码开关与plc怎么连接?_住范儿家装官网

一般用到的都是BCD码8/4/2/1四线输出,可将这4根线紧挨着接到PLC输入端,如X0-X.如果拨码开关以2进制编码方式输出,例如设定为5,则输入1001,PLC对应的...

西门子PLC中字无符号十进制数据范围,是B#(0.0)~B#(255.255),怎么理解?在PLC?

B代表其数据类型为BYTE,是字节类型而不是字类型,一个字节所支持的值域为0~255.在西门子中,字节类型为字串类型,所以无法支持带有符号的10进制数,你只能将...

朋友们询问一下!!东升老牌的PLC编程系统联系方式,有了解PLC...

[回答]用传送指令,如MOVk1x0k1y0,k1表示4位(x0--x3),k2为8位(xo--x7),k3为12位,k4为16位,x、y相同·。如x3--x0为1001,y3---y0传送后分别为1、0、0...

PLC中的BCD码是怎么一回事?

BCD码是二进制编码的一种,它是将十进制数的每一位分别转换为4位二进制数表示。在PLC中,BCD码常用于数字量输入输出和计数器等模块中。例如,数字6的BCD码为011...

gbin是什么指令?

比如十进制数9用8位BIN码表示就是00001001;BCD码就是用四位二进制数表示一位十进制数的编码,如8424码等,比如十进制数9用BCE码表示就是1001;1.gbin是一个未...

欧姆龙PLC怎么加密?

欧姆龙PLC(可编程逻辑控制器)的加密通常是为了保护程序代码不被未经授权的用户读取或修改。不同系列的PLC加密方法可能有所不同,但一般来说,欧姆龙PLC的加密...

哪位大佬,求帮忙有实力的台达plc行情,台达plc操作方便吗??

[回答]就用TRD读出就好LDM100TRDD1000在M100接通的情况下,TRD会读出PLC当前时间到D1000、D1001、D1002、D1003、D1004、D1005、D1006,分另是年、月、日、...

3018三菱机床维修参数是啥?

选择参数...先设置参数#1043=22(简体中文)。(有些系统如C64没有简体中文规格,则设置#1043=15繁体中文)。设置#1138=1(随参数号选择参数)即输入参数号后,屏...

西门子200plc输入模块的直流输出电源正负极在哪-ZOL问答

共3条回答1001浏览S7-200输入模块需要直流电源供电才能正常工作,没有直流输出电源,如果设置成两线制4-20mA输入,那么信号输入端子同时输出DC24V。一般上面...

那位有FANUC系统的说明书0系统0IO-M0IMATE系统报警参数说...

三菱PLC-FX系列常用编程指令一程序流程—功能00~0900CJ条件转移01CALL调用子程序02SRET从子程序返回03IRET中断返回04EI开中断05...

 聚商城  2018年315 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部