西门子PLC 200 smart与上位机通信控制传送带

目录

编程下载

程序上传

与台达B2伺服驱动器通讯-脉冲控制

西门子smart200 串口通信-自由口配置

简介

通信条件

通信要点

自由口通信端口定义

XMT发送指令

发送完成判断

RCV接收指令

中断事件

接收状态字

RCV 指令的控制字节

以起始字符及结束字符为例

通讯实例

运动控制

运动向导配置

子指令

问题

错误代码

上位机控制传送带运行距离传送

源程序


SIMATIC S7-200 SMART - SIMATIC 控制器 - CN (siemens.com)

SIMATIC S7-200 SMART 是西门子为中国客户量身定制的一款高性价比小型 PLC 产品。结合西门子 SINAMICS 驱动产品及 SIMATIC 人机界面产品,以 S7-200 SMART 为核心的小型自动化解决方案将为客户创造更多的价值。

特点:高性能,高集成,更简约。

  • 使用的软件与1200、300等不同:STEP 7-MicroWIN SMART;
  • 软件中不含虚拟仿真。

编程下载

通过以太网网线连接。

程序上传

支持程序上传

问题

  1. 找不到通讯接口?

200SMART通信问题及解决方案_smart通讯接口没有地址是怎么回事_花酒提壶的博客-CSDN博客

与台达B2伺服驱动器通讯-脉冲控制

B2伺服驱动器使用手册DELTA_IA-ASD_ASDA-B2_UM_SC_20230421.pdf (delta-china.com.cn)

西门子smart200 串口通信-自由口配置

自由接口模式允许程序控制 S7‑200 SMART CPU 的通信端口。可以在自由端口模式下使用用

户定义的通信协议与多种类型的智能设备进行通信。自由端口模式支持 ASCII 和二进制协议。

串口通信自由口配置可以在西门子下面的文档中找到具体的介绍

西门子 S7-200 SMART PLUS V2.6 技术参考 - ID: 76488152 - Industry Support Siemens
简介

S7-200smart CPU本体集成一个RS485通信板,端口号为0.或者增加一个扩展信号板(RS285/RS233),串口号为1.

通信条件

S7-200 SMART CPU 本体集成的通信口在电气上是标准的RS-485半双工串行通信口。此串行字符通信的格式可以包括:

  • 一个起始位
  • 7或8位字符(数据字节)
  • 一个奇/偶校验位,或者没有校验位
  • 一个停止位

自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或115200。

凡是符合这些格式的串行通信设备,理论上都可以和S7-200 SMART CPU通信。

通信要点
  1. 将端口号设置为自由口模式,同时设置通信格式。通过特殊存储器进行设置,特殊存储器SMB30(对端口0 即 CPU 本体集成 RS485 口)、SMB130(对端口1 即通信信号板)控制通信口的工作模式。
  2. 自由口通信的核心指令是发送(XMT)和接收(RCV)指令。自由口通信常用的中断有“接收指令结束中断”、“发送指令结束中断”,以及字符接收中断。
  3. XMT和RCV指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。如果接收的消息中包括了起始或结束字符,则它们也算数据字节。
  4. 调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。
  5. 由于S7-200 SMART的通信端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。
自由口通信端口定义

SMB30(端口 0 ) 和 SMB130(端口 1 )用于定义通信端口的工作模式。S7-200 SMART CPU 处于 RUN 模式时,才能进行 PPI 通信或自由口通信模式的选择;

CPU 处于STOP 模式时,自由口通信模式被禁用,自动进入 PPI 通信模式。

通信端口工作模式的定义如图所示。

定义S7-200 SMART CPU 通信端口 0 为自由口通信模式,8位数据位,偶校验,9600波特率,程序如下图所示。

XMT发送指令

发送指令(XMT 指令)用于在自由口通信模式下将发送缓冲区(TBL)的数据通过指定的通信端口(PORT)发送出去。

XMT 指令一次最多可以发送 255个字符。XMT 指令发送缓冲区格式如表1.所示。

字节偏移量

描述

0

发送字符的个数(N)

1

发送的第1个字符

2

发送的第2个字符

N

发送的第N个字符

发送完成判断

如果将中断子程序连接到发送完成事件,CPU 将在发送完缓冲区的最后一个字符后产生一个中断事件(对于端口 0 为中断事件 9,对于端口 1 为中断事件 26)。

如果不使用中断,也可以通过监视 SM4.5(端口 0 )或 SM4.6(端口 1 )的上升沿信号来判断发送是否完成。

RCV接收指令

接收指令(RCV 指令)用于在自由口通信模式下通过指定的通信端口(PORT)接收数据,接收的数据存储到接收缓冲区(TBL),数据长度最多为 255个字符。

RCV 指令接收缓冲区格式如表 1. RCV 指令接收缓存区格式所示。

字节偏移量

描述

0

接收到字符的个数(N) -PLC默认统计,并占用第一个字节

1

接收的第1个字符

2

接收的第2个字符

N

接收的第N个字符

RCV指令的基本工作过程为:

  1. 在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态
  2. 监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态
  3. 如果满足了设置的消息结束条件,则结束消息,然后退出接收状态

所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。

所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

中断事件

如果中断子程序连接到接收完成事件,CPU 将在接收到最后一个字符后产生一个中断事件(对于端口 0 为中断事件 23,对于端口 1 为中断事件 24)。

端口 0 :

发送完成事件,为中断事件 9

接收完成事件,为中断事件 23

接收状态字

如果不使用中断,也可以通过监视接收信息状态字节 SMB86(端口 0 )或 SMB186(端口 1 )来判断接收是否完成。SMB86 /SMB186 等于0时表示相应的通信端口正在处于接收状态中。

接收信息状态字节 SMB86 /SMB186 的说明见下表2.所示。

端口 0

端口 1

接收信息状态字节

SMB86

SMB186

n:1= 接收消息功能被终止:用户发送禁止命令。

r:1= 接收消息功能被终止:输入参数错误或丢失启动或结束条件。

e:1= 接收到结束字符。

t:1= 接收消息功能被终止:定时器时间已用完。

c:1= 接收消息功能被终止:实现最大字符计数。

P: 1 = 接收消息功能被终止:奇偶校验错误。

RCV 指令的控制字节

执行 RCV 指令时,必须预先使用接收信息控制字节 SMB87 (端口 0 ) 或 SMB187 (端口 1 )来定义接收消息的起始和结束条件。

接收消息的起始条件可以同时包含多个条件,只有所有条件都满足才开始接收消息;接收消息的结束条件也可以同时包含多个条件,只要有一个条件满足就会结束消息的接收。

接收信息控制字节 SMB87/SMB187 的说明见下表 3. 所示。

端口 0

端口 1

接收信息控制字节

SMB87

SMB187

en:0=禁用接收消息功能。

1=允许接收消息功能。

sc:0=忽略SMB88或SMB188。

1=使用SMB88或SMB188的值检测起始消息。

ec:0=忽略SMB89或SMB189。

1=使用SMB89或SMB189的值检测结束消息。

il: 0=忽略SMW90或SMW190。

1=使用SMW90或SMW190的值检测空闲状态。

c/m:0=定时器是字符间定时器。

1=定时器是消息定时器。

tmr:0=忽略SMW92或SMW192。

1=当SMW92或SMW192中的定时时间超出时终止接收。

bk:0=忽略BREAK状态。

1=使用BREAK状态作为消息检测的开始。

SMB88

SMB188

消息字符的开始

SMB89

SMB189

消息字符的结束

SMW90

SMW190

空闲线时间,以毫秒为单位

SMW92

SMW192

字符间/消息定时器,以毫秒为单位

SMB94

SMB194

允许接收的最大字符数(1 ~ 255)

以起始字符及结束字符为例

起始字符检测: il = 0,sc = 1,bk = 0,忽略SMW90/SMW190,SMB88/SMB188 = 起始字符。

在该起始条件下,执行 RCV 指令时当收到 SMB88/SMB188 中指定的起始字符时,便会开始消息接收。

接收消息功能会将起始字符作为消息的第一个字符存入接收缓冲区,接收消息功能忽略在起始字符之前收到的任何字符,起始字符以及在起始字符之后收到的字符被存储到接收缓冲区。

如下图. 使用起始字符检测启动信息接收所示。

使用起始字符检测启动信息接收:

1:执行 RCV 指令。

2:起始字符 16#55 之前接收到的字符16#01、16#02、16#03 都被忽略。

3:起始字符 16#55 之后接收到的字符都被存储到接收缓冲区,包括起始字符。

结束字符检测:ec = 1,SMB89/SMB189 = 结束字符。

执行 RCV 指令并找到起始条件之后,接收消息功能将检查接收到的每一个字符,并判断其是否与结束字符匹配。

接收到结束字符时,会将其存入接收缓冲区并终止信息接收,如图 6. 使用结束字符检测终止信息接收所示。

图 6. 使用结束字符检测终止信息接收

1:执行 RCV 指令。

2:起始字符 16#55 之前接收到的字符16#01、16#02、16#03 都被忽略。

3:检测到起始字符 16#55 ,开始消息接收。

4:检测到结束字符 16#CC ,终止消息的接收,结束字符之后接收到的字符 16#01 被忽略。

4、最大字符个数:SMB94/SMB194 = 最大字符个数

执行 RCV 指令时当接收字符个数达到或超过最大字符个数(SMB94/SMB194)时接收消息功能将终止。

由于接收指令需要知道接收信息的最大长度,以保证信息缓冲区之后的数据不被覆盖,所以即使最大字符计数不被专门用作接收结束条件,也必须指定最大字符个数。

5、奇偶校验错误

执行 RCV 指令时,当通信端口检测出奇偶校验错误、组帧错误或超限错误时,消息接收功能自动被终止。

6、用户终止:en = 0

设置 SM87.7/SM187.7 = 0 ,同时再调用 RCV 指令,将立即终止消息接收功能。

通讯实例

2台S7-200 SMART CPU(端口0)采用自由口通信方式实现相互通信

通信任务:CPU1 每秒触发一次 XMT 指令将 CPU 的实时时钟发送到 CPU2;CPU2 接收到 CPU1 发送的信息后立即将 CPU2 的实时时钟回复到 CPU1。

1、CPU1 编程

1.1、CPU1 主程序编程如图3. 所示:

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的应答信息。程序如图所示:

2、CPU2 编程

2.1、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 指令将实时时钟信息发送出去。程序如图如图所示。

2.3、 CPU2 发送完成中断子程序 INT_1 编程

中断子程序 INT_1 用于执行 RCV 指令,并开始新的信息接收任务。程序如图所示。

以上描述步骤参考下面的通信例程,例程中的 CPU 类型可能与用户实际使用的类型不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。

运动控制

西门子smart对于电机的控制主要提供两种方式。一种是基于运动向导配置,可实现一至三个电机单轴运动,2D或3D的轴组运动。另外一种是基于PLS指令,对运动程序进行编写。使用上运动向导更为简单,下面是以运动向导来进行记录。

运动向导配置
  1. 打开“运动控制”向导,“工具”->“向导”->“运动控制”,选择需要配置的轴。然后根据要求进行配置。(运动控制细节可参考西门子 S7-200 SMART PLUS V2.6 技术参考 - ID: 76488152 - Industry Support Siemens

子指令

下述是可以通过运动向导生成的子指令,通过调用指令,实现运动控制。

指令名称

指令功能

AXISx_CTRL

启用和初始化运动轴

AXISx_MAN

手动模式

AXISx_GOTO

命令运动轴转到所需位置

AXISx_RUN

运行包络

AXISx_RSEEK

搜索参考点位置

AXISx_LDOFF

加载参考点偏移量

AXISx_LDPOS

加载位置

AXISx_SRATE

设置速率

AXISx_DIS

使能/禁止DIS输出

AXISx_CFG

重新加载组态

AXISx_CACHE

缓冲包络

  1. AXISx_CTRL
    功能:启用和初始化运动轴,方法是自动命令运动轴每次 CPU 更改为 RUN 模式时加载组态/包络表。

注意:

在您的项目中只对每条运动轴使用此子例程一次,并确保程序会在每次扫描时调用此子例程。使用 SM0.0(始终开启)作为 EN 参数的输入。

MOD_EN 参数必须开启,才能启用其它运动控制子例程向运动轴发送命令。 如果 MOD_EN 参数关闭,运动轴会中止所有正在进行的命令;未接通时,相当于运动控制功能未启用,Error报130 运动轴未启用。运动轴减速停止。可作为紧急停止。

Done 参数会在运动轴完成任何一个子例程时开启;

Error 参数存储该子程序运行时的错误代码;

C_Pos 参数表示运动轴的当前位置。 根据测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL);

C_Speed 参数提供运动轴的当前速度。 如果您针对脉冲组态运动轴的测量系统,C_Speed 是一个 DINT 数值,其中包含脉冲数/每秒。如果您针对工程单位组态测量系统,C_Speed 是一个 REAL 数值,其中包含选择的工程单位数/每秒 (REAL)。

C_Dir 参数表示电机的当前方向:信号状态 0 = 正向;信号状态 1 = 反向;

  1. AXISx_MAN
    功能:将运动轴置为手动模式。 这允许电机按不同的速度运行,或沿正向或负向慢进。

RUN 参数会命令运动轴加速至指定的速度(Speed 参数)和方向(Dir 参数)。 您可以在电机运行时更改 Speed 参数,但 Dir 参数必须保持为常数。 禁用 RUN 参数会命令运动轴减速,直至电机停止;

JOG_P(点动正向旋转)或 JOG_N(点动反向旋转)参数会命令运动轴正向或反向点动。 如果 JOG_P 或 JOG_N 参数保持启用的时间短于 0.5秒,则运动轴将通过脉冲指示移动 JOG_INCREMENT 中指定的距离。 如果 JOG_P 或 JOG_N 参数保持启用的时间为 0.5秒或更长,则运动轴将开始加速至指定的 JOG_SPEED;

Speed 参数决定启用 RUN 时的速度。 如果您针对脉冲组态运动轴的测量系统,则速度为 DINT 值(脉冲数/每秒)。 如果您针对工程单位组态运动轴的测量系统,则速度为 REAL 值(单位数/每秒)。

注意:同一时间仅能启用 RUN、JOG_P 或 JOG_N 输入之一。

  1. AXISx_GOTO
    功能:命令运动轴转到所需位置。

START 参数开启会向运动轴发出 GOTO 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 GOTO 命令。为了确保仅发送了一个 GOTO 命令,请使用边沿检测元素用脉冲方式开启 START 参数;

Pos 参数包含一个数值,指示要移动的位置(绝对移动)或要移动的距离(相对移动)。 根据所选的测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL);当GOTO指令正在运行时,原Pos跟定的值为Pos1,在运行中将Pos1改为Pos2,GOTO指令人按照Pos1运行。

Speed 参数确定该移动的最高速度。 根据所选的测量单位,该值是脉冲数/每秒 (DINT) 或工程单位数/每秒 (REAL);

Mode 参数选择移动的类型:

0:绝对位置

1:相对位置

2:单速连续正向旋转

3:单速连续反向旋转

Abort 参数启动会命令运动轴停止当前包络并减速,直至电机停止。适用于急停、停止指令

注意:若 Mode 参数设置为 0,则必须首先使用 AXISx_RSEEK 或 AXISx_LDPOS

指令建立零位置。

使用总结

当Abort启动时,Done输出为1,报警代码为1:由用户打断。需注意:Done输出时并不代表着运动到指定的位置。

问题
  1. 运动控制面板为灰色,不能操作?

运动控制面板要在STOP模式下操作。

错误代码

运动控制指令报错,无法执行指令怎么办?

查看错误代码,根据错误代码查看相关问题,错误代码如下图所示。

错误代码

说明

0

无错误

1

由用户打断

2

组态错误 (如果SDBO组态出错,则发生此错误。)

3

命令非法

4

因组态无效而打断 (如果组态表出错,则发生此错误。)

5

预留

6

由于无定义的参考点而打断

7

由于STP输入激活而打断

8

由于 LMT-输入激活而打断

9

由于LMT+输入激活而打断

10

由于执行运动时出错而打断

11

没有为指定曲线组态曲线块

12

操作模式非法

13

此命令不支持该操作模式

14

曲线块中的步数非法

15

方向更改非法

16

距离非法

17

达到目标速度前发生RPS/TRIG触发

18

RPS有效区域宽度不足

19

速度超出范围

20

距离不足无法执行所需的速度更改

21

位置非法

22

零位置未知

23

未定义DIS输出

24

预留

错误代码

说明

25

因CPU转入STOP模式而打断

26

因运动控制面板活动结束而打断

27

AXIS_GOTO超驰功能中的操作模式无效

28

轴组正在运行,因此禁止单轴运动

29到127

预留

128

运动轴无法处理此指令:要么是运行轴忙于执行另一指令,要么是没有此 指令的启动脉冲。

129

预留

130

运动轴未启用

131

预留

132

预留

133

指定的曲线非法。AXISx_RUN和AXISx_CACHE指令曲线编号的取值范围必 须在0到31之间。

134

在AXISx_GOTO指令中指定了非法模式

上位机控制传送带运行距离传送

项目要求:与上位机自由口通讯,上位机控制三个传送带运行距离,以及启停。(PLC只接受不发送)

思路:

电机采用相对位置控制,上位机跟定移动距离,电机运行,目标到达后保持静止。为了便于控制,移动距离采用工程单位,并采用GOTO指令进行距离的移动。

通信协议如下

上位机控制

波特率9600,8位数据位,无校验,起始字符F

字节

功能

要求

PLC地址

字节0

起始字符

16#0F

V101

字节1~2

轴0相对位置数据

16位有符号整型

VW102

字节3~4

轴1相对位置数据

16位有符号整型

VW104

字节5~6

轴2相对位置数据

16位有符号整型

VW106

字节7~8

全轴的速度

16位有符号整型(取值范围:0~1000)

VW108

字节9.0

全轴启停

1为启动,0为停止,

V110.0

例:0F 03E8 03E8 03E8 01F4 01,电机1走1000mm,电机2走1000mm,电机3走1000mm.三个电机速度为500mm/s,启动运行。

0F XXXX XXXX XXXX XXXX 00,三个电机减速停止。

注:通讯协议中,轴的位置数据和速度采用的是16位有符号整型,而GOTO指令中,位置Pos,速度Speed的数据类型为浮点数,需要进行转换,如下:

  1. 通信配置

SMB30 = 2#00001001

自由口模式,波特率9600,8位数据位,无校验;

SMB87 = 2#11010100

起始字符,SMB88 = 16#0F

空闲线检测为信息接收的起始条件,SMW90 = 5 ms;

字符间定时器为消息接收的结束条件,SMW92 = 5 ms;

设置允许最大接受字符个数SMB94 = 18

  1. 接收及中断

接收完成的中断事件为23,在主程序中设置接收中断并使能,并设置一个接收,即主程序运行时一直保持着等待接收状态,当收到信息并接收完成时,进入中断程序,在中断程序中设置一个接收。即中断程序执行完毕时,打开接收等待状态,等待下一个信息接收并进入中断,执行中断程序后再次打开接收等待状态。

主程序

中断程序最后一行

  1. 运动轴的控制

主要控制运动轴启动、停止以及移动的距离、速度。根据下图GOTO指令的参数进行配置

  • 距离Pos与速度Speed是上位机给出并进行数据转换为浮点数即可。
  • EN子指令使能,保持常闭。断开时GOTO指令无效,电机会减速停止。这里Runing与急停信号关联。
  • START运动开启,START一直使能时,GOTO指令会一直循环运行,即START只需要脉冲沿触发一次即可运行一回。Runing_0与启动信号关联,上位机每发送一次信号时,就会对启动信号进行重置。
  • Done GOTO指令运行结束,Done输出为1,这时对Runing_0进行复位,避免GOTO指令再启动,直到上位机发送新的信号对启动信号重置。
  • Abort,此引脚为1时,GOTO指令会减速停止,这里与Stoping停止信号关联。
源程序

POU如下,记事本粘贴,将文件属性改为awl,导入到西门子软件中查看原工程。

ORGANIZATION_BLOCK MAIN:OB1
TITLE=主程序:
// 设置SMB30、SMB87;
// 设置SMW90、SMW92、SMB94;
// 连接中断程序到中断事件,启用中断;
// 执行RCV指令。
BEGIN
Network 1 
// SMB30 = 2#00001001
// 自由口模式,波特率9600,8位数据位,无校验;
// SMB87 = 2#11010100
// 起始字符,SMB88 = 16#0F
// 空闲线检测为信息接收的起始条件,SMW90 = 5 ms;
// 字符间定时器为消息接收的结束条件,SMW92 = 5 ms;
// 设置允许最大接受字符个数SMB94 = 18
LD     SM0.1
LPS
MOVB   2#1001, SMB30
MOVB   2#11010100, SMB87
MOVB   16#0F, SMB88
MOVW   5, SMW90
AENO
MOVW   5, SMW92
LPP
MOVB   18, SMB94
Network 2 
// 中断程序 INT_0连接到通信端口0,接收完成事件,并启用中断
LD     SM0.1
ATCH   INT0, 23
ENI
RCV    VB100, 0
Network 3 
// 进入自动运行模式
LD     SM0.0
AN     M0.0
=      M0.1
Network 4 
// 启用和初始化运动轴
LD     SM0.0
=      L60.0
LDN    M0.0
=      L63.7
LD     L60.0
CALL   SBR1, L63.7, M4.1, VB900, VD902, VD906, V910.0
Network 5 
LD     SM0.0
=      L60.0
LDN    M0.0
=      L63.7
LD     L60.0
CALL   SBR12, L63.7, M5.1, VB920, VD922, VD926, V930.0
Network 6 
LD     SM0.0
=      L60.0
LDN    M0.0
=      L63.7
LD     L60.0
CALL   SBR23, L63.7, M6.1, VB940, VD942, VD946, V950.0
Network 7 
// 轴0运动
LD     M0.1
=      L60.0
LD     M4.3
EU
=      L63.7
LD     L60.0
CALL   SBR3, L63.7, VD316, VD328, 1, M0.3, M4.2, VB900, VD902, VD906
Network 8 
LD     M4.2
R      M4.3, 1
Network 9 
// 轴1运动
LD     M0.1
=      L60.0
LD     M5.3
EU
=      L63.7
LD     L60.0
CALL   SBR14, L63.7, VD320, VD328, 1, M0.3, M5.2, VB920, VD922, VD926
Network 10 
LD     M5.2
R      M5.3, 1
Network 11 
LD     M0.1
=      L60.0
LD     M6.3
EU
=      L63.7
LD     L60.0
CALL   SBR25, L63.7, VD324, VD328, 1, M0.3, M6.2, VB940, VD942, VD946
Network 12 
LD     M6.2
R      M6.3, 1
END_ORGANIZATION_BLOCK

INTERRUPT_BLOCK INT_0:INT0
TITLE=通信端口0接收中断程序
BEGIN
Network 1 
// 控制字传送
LD     SM86.2
MOVB   VB110, MB2
Network 2 
// 起动停止命令
LD     SM86.2
LPS
A      M2.0
S      M0.2, 1
R      M0.3, 1
LPP
AN     M2.0
R      M0.2, 1
S      M0.3, 1
Network 3 
// 电机启动开关
LD     M0.2
S      M4.3, 1
S      M5.3, 1
S      M6.3, 1
Network 4 
// 相对位置有符号整型转浮点数
LD     SM86.2
LPS
ITD    VW102, VD304
AENO
DTR    VD304, VD316
LRD
ITD    VW104, VD308
AENO
DTR    VD308, VD320
LRD
ITD    VW106, VD312
AENO
DTR    VD312, VD324
LPP
ITD    VW108, VD300
AENO
DTR    VD300, VD328
Network 5 
// 保持接收状态
LD     SM0.0
RCV    VB100, 0
END_INTERRUPT_BLOCK
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值