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