只发PLC相关6 随时更新~~ 
一、西门子S7-200 SMART中断程序

中断就是中止当前正在运行的程序,去执行为立刻响应的信号而编写的中断服务程序,执行完毕后再返回原来中止的程序并继续执行。西门子S7-200 SMART CPU最多支持38个中断事件,其中8个为预留。为了便于识别,系统给每一个中断事件都分配了一个编号,又称中断事件号。

嵌入式~PLC-专辑6_人工智能

S7-200 SMART的中断

所有中断事件可以分为三大类:通信中断、I/O中断、定时中断。通信中断为CPU的串行通信端口可以由用户进行控制,称为自由端口模式,在该模式下接收信息完成、发送信息完成、接收一个字符均可以产生中断事件,利用接收和发送中断可以简化程序对通信的控制。I/O中断包括:上升沿中断、下降沿中断、高速计时器中断。CPU可以为输入点I0.0至I0.3以及可选信号板的I7.0和I7.1的上升沿或下降沿产生中断。高速计数器中断允许响应HSC的计数器当前值等于设定值、计数方向改变、计数器外部复位等中断事件。

嵌入式~PLC-专辑6_数据_02

中断事件

定时中断可以用来进行一个周期性的操作,以1毫秒为增量,周期时间可以取1毫秒至255毫秒。定时中断0和定时中断1的时间间隔分别写入特殊寄存器字节SMB34和SMB35。通常可以使用定时中断来采集模拟量或定时执行PID控制程序。定时器中断T32和T96允许及时响应一个给定时间间隔的结束,只有1毫秒分辨率的接通延时TON和断开延时TOF定时器,T32和T96支持此类中断,启用中断后当定时器的当前值等于预设值时,在CPU的1毫秒定时刷新中执行被连接的中断程序。

嵌入式~PLC-专辑6_数据_03

定时中断

每类中断中不同的中断事件又有不同的优先权,多个中断事件同时发生时,根据优先级组以及组内优先权来确定首先处理哪一个中断事件。优先级相同时,CPU按照先来先服务的原则处理中断。任何时刻CPU只能执行一个用户中断程序。一旦一个中断程序开始执行,它要一直执行到完成,即使更高优先级的中断事件发生,也不能中断正在执行的中断程序。正在处理另一个中断时发生的中断会进行排队等待处理。每一个优先级组分别设立相应的队列,产生的中断事件分别在各自的队列排队,先到先处理,各队列能保存的最大中断数以及队列溢出特殊寄存器位如下图表中所示。

嵌入式~PLC-专辑6_人工智能_04

中断队列 

西门子S7-200 SMART规定的中断优先级由高到低依次是通信中断、I/O中断、定时中断。S7-200 SMART的中断管理是通过指令完成的,中断指令包括中断允许与中断禁止指令、中断连接与中断分离指令。CPU进入RUN模式时,自动禁止所有中断。

嵌入式~PLC-专辑6_人工智能_05

中断指令

中断允许指令,全局性地启用对所有连接的中断事件的处理。中断禁止指令,全局性地禁止对所有中断事件的处理,但是已建立了关联的中断事件仍将继续排队。从中断程序有条件返回指令,在控制它的逻辑条件满足时,从中断程序返回。编译程序自动为各中断程序添加无条件返回指令。

嵌入式~PLC-专辑6_人工智能_06

中断允许与中断禁止

 中断连接指令,用来建立中断事件号EVNT与中断程序编号之间的联系,并自动允许该中断事件进入相应的队列排队,能否执行处理还要看禁止的情况。多个中断事件允许与同一个中断程序相关联,但同一个中断事件不允许与多个中断程序相连。

 

嵌入式~PLC-专辑6_串口_07

中断连接

中断分离指令,解除中断事件EVNT与所有中断程序的关联,所指定的中断事件不再进入中断队列,从而禁止单个中断事件。清除中断指令,从中断队列中清除所有编号为EVNT的中断事件。该指令可以用来清除不需要的中断事件。

 

嵌入式~PLC-专辑6_中断事件_08

中断分离

接下来我们通过一个简单的例子来学习中断指令的使用,并练习编写中断程序。在I0.0的上升沿通过中断使Q0.0立即置位,在I0.1的下降沿通过中断使Q0.0立即复位。我们来编写程序,启动STEP7-Micro/WIN SMART创建一个新项目,创建新项目后首先编写处理I0.0上升沿事件的中断程序,在指令树的位逻辑中拖放一个常开触点到中断程序INT_0,输入地址SM0.0,再拖放一个立即置位指令,输入地址Q0.0,置位个数为1。

嵌入式~PLC-专辑6_中断事件_09

编写中断程序INT_0

 我们再来编写一个处理I0.1下降沿事件的中断程序,插入一个新的中断程序INT_1,拖放一个常开触点SM0.0,再拖放一个立即复位指令,输入地址Q0.0,复位个数为1。

嵌入式~PLC-专辑6_串口_10

编写中断程序INT_1

 回到主程序,拖放一个常开触点输入地址SM0.1,在指令树的中断文件夹中拖放中断连接指令到编程区域,INT处输入0号中断程序名,EVNT处输入I0.0上升沿事件号0,向下分支,再拖放一个中断连接指令,INT处输入1号中断程序名,EVNT处输入I0.1下降沿事件3,继续向下分支,拖放一个中断允许指令,这样在程序第一次扫描时就关联了中断事件以及相应的中断服务程序并允许全局中断,程序编写完成后保存项目。

嵌入式~PLC-专辑6_中断事件_11

编写主程序调用中断程序

下载并测试。将项目编译并下载到PLC,在状态图表中输入地址Q0.0,启动对状态图表变量的持续监视,拨动外接开关使I0.0产生上升沿,Q0.0立即变为1,拨动外接开关使I0.1产生下降沿,Q0.0立即变为0。

嵌入式~PLC-专辑6_人工智能_12


二、PLC串口通讯基本知识

01 什么是串口通讯?

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS- 232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

嵌入式~PLC-专辑6_串口_13

02 串口通讯的使用

串口通讯使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:

a.波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。

这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通讯。

b.数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。

比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

c.停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。

因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

d.奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或传输和接收的数据不同步。

03 常用PLC基本接口

a.什么是RS-232?

RS-232 (ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。

RS-232只限于PC串口和设备间点对点的通信。RS- 232串口通信最远距离是50英尺。

嵌入式~PLC-专辑6_人工智能_14

b.什么是RS-422?

RS -422(EIA RS-422-A Standard)是Apple的Macintosh计算机的串口连接标准。

RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。

c.什么是RS-485?

RS -485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。

有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。

RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通信。

嵌入式~PLC-专辑6_中断事件_15

04 串行通信

1、SPI传输

嵌入式~PLC-专辑6_串口_16

▲ 图1  SPI 数据传输

嵌入式~PLC-专辑6_数据_17

 ▲ 图1.2  SPI数据传输(2)

嵌入式~PLC-专辑6_数据_18

▲ 图1.3  SPI时序信号

2、I2C传输

嵌入式~PLC-专辑6_串口_19

▲ 图1.2.1  I2C总线以及寻址方式

3、UART传输

嵌入式~PLC-专辑6_数据_20

▲ 图1.3.1  PC 上通过UART来调试MCU

嵌入式~PLC-专辑6_数据_21

▲ 图1.3.2  RS-232通过电平转换芯片与MCU通讯

4、红外控制

嵌入式~PLC-专辑6_串口_22

▲ 图1.4.1  红外控制信号也是一个串行通讯信号

嵌入式~PLC-专辑6_中断事件_23

▲ 图1.4.2  红外信号接收与放大整形电路

嵌入式~PLC-专辑6_串口_24

▲ 图1.4.3  一个使用红外接收光电管控制继电器进行鱼食投喂电路

5、串并转换电路

嵌入式~PLC-专辑6_数据_25

▲ 图1.5.1  串入、并出移位寄存器

嵌入式~PLC-专辑6_人工智能_26

▲ 图1.5.2  由八个D寄存器组成的移位寄存器

嵌入式~PLC-专辑6_人工智能_27

▲ 图1.5.4  串行传输示意图