BX3100 - Bus Terminal Controller for PROFIBUS-DP

BECKHOFF 现场总线组件

BX3100技术文件

基于PROFIBUS-DP的总线端子控制器

版本: 1.1.7 (对应固件1.17)
日期: 2011-07-27

第一步 - 快速进入

SSB, COM-口, 导航开关等的例子


BX Controller - Overview

BECKHOFF 现场端子控制器:产品概述

BX 控制器 - 概述

BX 系列总线端子模块控制器是一种全新的控制产品系列，具有高度灵活性。在设备和性能范围方面，小型控制器功能介于 BC 系列总线端子模块控制器和 CX 系列嵌入式 PC 之间。独立控制方案，或上位现场总线系统中的从站是从 BC 系列扩展而来的。外壳设计基于 CX1000。BC 与 BX 系列的主要区别在于，BX 系列内存较大且配有扩展接口。

BX 系列总线端子模块控制器由可编程的 IEC 61131-3 控制器和用于连接 Beckhoff 总线端子模块与现场总线接口的 K-bus 接口。此外，BX 系列设备配备了两个串口： 一个用于编程，另一个则可随意使用。控制器本身带有一个背光 LCD 显示屏（分两行显示，每行 16 个字符）、一个拨杆开关和一个实时时钟。通过集成的 Beckhoff 智能总线系统（SSB），还可连接其它外围设备，如显示器等。

总线端子模块可通过常规方法直接连接。通过各种 I/O 能够读取任何可能需要生成的输入信号和输出信号。因此，通过这种小型控制器可以解决各种自动化任务，从车库门控制到注塑机中的独立温度控制。BX 系列还特别适用于模块化设备方案。在通讯网络内，总线端子模块控制器通过现场总线接口与其它设备部件进行数据交换。通过实时时钟也可以实现那些对于日期和时间有严格要求的分布式应用。

该系列控制器的应用范围与 BC 系列相类似，但由于 BX 系列的内存较大，故可执行更为复杂的大型程序，并可在本地管理更多数据（例如历史数据和趋势数据），然后通过现场总线存取。
注意 为了操作BX控制器,至少一个有过程映像的总线端子和终端必须插到K-Bus中！

现场总线接口

BX 系列总线端子模块控制器的各种型号区别在于它们使用的现场总线接口不同。另外，BX 系列还集成了两个串行接口，用于编程和连接其它串行设备。五种不同的型号涵盖了主要的现场总线系统：

  • BX3100: PROFIBUS DP
  • BX5100: CANopen
  • BX5200: DeviceNet
  • BX8000: RS232 或 RS485 (无现场总线接口)
  • BX9000: Ethernet ModbusTCP/ADS-TCP/UDP

编程

BX 设备编程符合 IEC 61131-3 标准。与所有其它 Beckhoff 控制器一样，BX 系列也将 TwinCAT 自动化软件作为组态和编程的基础。因此，用户可以使用熟悉的 TwinCAT 工具（如 PLC 编程界面、System Manager 和 TwinCAT Scope）进行编程和管理。数据可通过串口（COM1）或者使用 Beckhoff 的 FCxxxx 系列 PC 现场总线接口卡通过现场总线进行交换。

组态

其组态也借助 TwinCAT 来实现。现场总线接口、SSB 总线和实时时钟可通过 System Manager 进行组态和参数设置。System Manager 可读取所有连接的设备和总线端子模块。设置参数后，配置通过串口保存在 BX 设备中。因此，可在日后再次访问这些配置。


Principle of the Bus Terminal

BECKHOFF 现场总线组件: 产品概述

总线端子原理


Technical Data - PROFIBUS DP

BECKHOFF 现场总线组件: 产品概述

技术数据 - PROFIBUS DP

系统数据 | PROFIBUS (BX3100)
I/O 模块数 | 126 (BX3100 最多. 99 设备)
I/O点数 | 由控制器决定
数据传输媒介 | 屏蔽的铜质电缆 2 x 0.25 mm², 电缆类型 根据 EN 50 170
电缆长度 | 达 1200 m
电缆数 | 3
数据传输速率 | 达12 MBaud
拓扑 | RS485 线, 光纤环
传送时间 | 大约 0.5 ms 可有10 站,以12 MBaud进行32位的输入/输出


Technical Data - BX

BECKHOFF 现场总线组件: 产品概述

技术数据 - BX

技术数据 | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
处理器 | 16 位微控制器
诊断用LED | 2 x 电源，2 x K-bus
显示 | FSTN 显示屏，2 x 16 个字符用于诊断或自身的文本，背光
开关 | 用于参数设置和诊断的拨杆开关
时钟 | 由电池供电的实时时钟，用于显示时间和日期
组态和编程软件 | TwinCAT PLC
现场总线接口 | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
现场总线 | PROFIBUS DP | CANopen | DeviceNet | - | Ethernet
现场总线接口 | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
串行接口 | COM1 (RS232用来组态和编程, 自动检测 9600/19200/38400/57600 波特率) COM2 (RS232 或 RS485) 用来连接串行设备
SSB | 基于CANopen的子总线接口
终端总线 (K-Bus) | 64 (255 个 K-Bus 扩展)
技术数据 | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
数字量外围信号 | 2040 输入/输出
模拟量外围信号 | 1024 输入/输出
配置 | 通过 TwinCAT 或 控制器
现场总线的最大字节数 | 由现场总线决定
PLC的最大字节数 | 2048 字节输入， 2048 字节输出
现场总线连接 | D-sub, 9针 | 开放式连接器, 5 针 |  | - | RJ45
电源(Us) | 24 VDC (-15%/+20%) To meet the UL requirements use a 4 A fuse or a power supply that has to satisfy NEC class 2!
输入电流(Us) | 180 mA + (全部 K-Bus 电流)/4
启动电流(Us) | 大约 2.5 x 连续电流
K-Bus 供电电流 (5 V) | 最大 1450 mA
电源触点电压 (上限) | 最大 24 VDC. 为了满足UL要求需要用一个4A的保险丝或者一个必须满足NEC 2级的电源！
电源触点电流负载 (上限) | 最大 10 A
电介质强度 | 500 Vrms (电源连接 / 供应电压/ 总线)
工作允许的温度范围 | 0°C... +55°C
储藏允许的温度范围 | -25°C... +85°C
相对湿度 | 95 % 无结露现象
抗振动/抗冲击性 | 根据 EN 60068-2-6 / EN 60068-2-27, EN 60068-2-29
抗电磁及瞬时脉冲干扰/静电放电 | 符合 EN 61000-6-2 / EN 61000-6-4
防护等级 | IP20
机械数据 | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
重量 | 大约 170 g
尺寸(W x H x D) | 大约 83mm x 100mm x 90mm (BX8000: 大约 65mm x 100mm x 90mm)
安装 | 在安装导轨上有锁扣机构(32 mm DIN 导轨)
安装位置 | 任意
终端截面 | 0,08 mm² ... 2,5 mm² AWG 28-14 8-9 mm 剥线长度


Technical Data - PLC

BECKHOFF 现场总线组件: 产品概述

技术数据 - PLC

PLC 数据 | BXxxxx
编程 | 通过编程接口(COM1 或 COM2) 或现场总线接口
程序内存 | 256 kbyte
源代码内存 | 256 kbyte
数据内存 | 256 kbyte
Remanent 数据 | 2 kbyte
PLC周期时间 | 大约 0,85 ms 对 1000 IL 命令 (无I/O循环)
编程语言 | IEC 6-3 (IL, LD, FBD, ST, SFC)
运行时间 | 1 PLC 任务 (第二个任务在准备中)
在线调试 | 是
上传/下载代码 | 是/是


BX Controller - Installation on mounting rails

BECKHOFF BX 控制器: 安装与接线

导轨安装

装配

  1. 在BX控制器的底部，有和锁扣机构连接在一起的白色锁扣
    安装BX控制器到导轨上之前先拉开底部的白色锁扣

    图1: 解锁 BX
  2. 现在把BX控制器安放在导轨上
    警告 注意当安放BX控制器到导轨上时不要按压在显示上，否则显示可能损坏
  3. 在BX控制器成功安放在导轨上后，推回白色锁扣到初始位置

    图2: 锁定 BX

拆卸

  1. 首先解锁所有位于BX控制器底部的锁扣
  2. 然后拉动电源连接旁的橘黄色抽拉条


BX Controller - Programming Cable for COM1

BECKHOFF 现场总线组件: 安装与接线

COM1的编程电缆

你可以用一个1:1的电缆给BX控制器编程。在BX一端你需要一个9针连接器，而在PC一端通常需要一个9针接口。接线是1：1的，并且必要的针可以在下表中找到。电缆的长度不能超过5米！

说明 | BX COM 口1 | PC COM port RS 232 串口
Cable | Plug | Socket
RS 232 RxD/TxD | 2 | 2
RS 232 RxD/TxD | 3 | 3
GND | 5 | 5
警告 请注意没有列出来的针在这个 COM port中不是都可用的，它们是为其他信号服务的

ZK1000-0030

编程电缆ZK1000-0030能让你用COM1编程并将COM2作为你的应用


SSB and COM Interface

BECKHOFF 现场总线组件: 安装与接线

SSB 与 COM 接口

基本的BX模块有一个SSB口,一个COM1口和一个COM2口。COM1和COM2接口位于一个D-Sub母头上。一个来自Beckhoff的特殊编程电缆(ZK1000-0030)适用于所有这些接口，COM2接口倾向于连接串行设备。对于COM2口，你可以在RS232或RS485中选择。
Libraries 适用于串行COM2接口.

SSB 接口

SSB接口的分配 (socket X00)
引脚 | 信号
1 | 保留
2 | CAN low
3 | GND
4 | 保留
5 | Shield
6 | GND
7 | CAN high
8 | 保留
9 | 保留

COM 1 (RS 232) 与 COM 2 (RS 232/485) 接口

COM接口的分配 (plug X01)
针 | 接口 | 信号
1 | COM2 | RS485 D+
2 | COM1 | RS232 TxD
3 | COM1 | RS232 RxD
4 | VCC +5 V | VCC
5 | GND | GND
6 | COM2 | RS485 D-
7 | COM2 | RS232 RxD
8 | COM2 | RS232 TxD
9 | GND | GND


Start-up Behaviour of the Bus Terminal Controller

BECKHOFF 现场总线组件: 参数与调试

总线端子控制器启动特性

开机后，总线端子控制器确认其状态，配置K-bus， 创建关于基本总线端子的结构列表并启动本地PLC程序。
当总线耦合器启动时，I/O LED灯亮并闪烁。如果没有异常，I/O LED灯将在2-3 秒后停止闪烁。如果发生异常，根据LED灯的闪烁情况反映了相应的错误类型（详见诊断LED）。


Bus Terminal Controller - Creating a TwinCAT configuration

BECKHOFF 现场总线组件: 参数与调试

创建 TwinCAT 配置

配置BCxx50，BCxx20或BXxx00系列的总线端子控制器，需要在System Manager中创建一个BX 文件。为了简化操作，基础文件已经准备好了。 在New from Template 中打开相应的BX 控制器。

选择相应的 BX Controller.

所有 BX 控制器组件都可以使用

  • 现场总线接口
  • K-Bus 接口
  • PLC 程序
  • SSB (只有 BX-控制器)

请参考与设备配置相关的资料。


PROFIBUS Settings

BECKHOFF 现场总线组件: 参数与调试

PROFIBUS 设置

PROFIBUS 相关设置可以在 DP slaves栏中完成。

PROFIBUS 出错

PROFIBUS 出错的情况(e.g. PROFIBUS电缆被拔掉了), PROFIBUS主站的输出数据会被完整保留或者调至0（根据设定 ）。对 BX3100而言，输入数据将由 PROFIBUS总站传送到 BX3100。

DP 数据形式

PROFIBUS 数据可以以 Intel或 Motorola 形式进行传送。

检测 DP 配置数据

配置数据功能

  • 无需核对;
  • 检查数据长度是否正确
  • 检查数据长度和内容


Basic Device File (GSD)

BECKHOFF 现场总线组件: 参数与调试

基础设备文件(GSD)

所有PROFIBUS从站接口的现场设备都是通过GSDfile描述。BC3150是一个PROFIBUS DP从站。为了数据交换，主站配置工具需要嵌入GSD file。 每个输入输出数据的最大长度为128个字节。

下载 GSD file (德语):
下载 GSD file (英语):

GSD file 可以被分为以下几种数据类型：

变量 | 长度
Integer 8 | 1 字节
UnInteger 8 | 1 字节
Integer 16 | 2 字节
UnInteger 16 | 2 字节
Integer 32 | 4 字节
UnInteger 32 | 4 字节
Float 32 | 4 字节

没有列出的数据类型，例如 BOOL变量，也可以通过长度来描述。因此，GSD file 包含了从1个字节到64个字的配置数据。


Variable Mapping - PROFIBUS DP

BECKHOFF 现场总线组件: 参数与调试

变量映射 - PROFIBUS DP

创建PROFIBUS数据.

图1:创建 PROFIBUS 数据

只有导入PLC程序时，才能连接其项目。在PLC Configuration下添加你的PLC程序。此时，PLC变量已经连接到总线变量。

注意 可允许的PROFIBUS数据最大值
(BX3100: 最大244字节输入和244字节输出)!
(BC3150: 最大128字节输入和128字节输出)!


Configuration: Siemens S7 Controller

BECKHOFF 现场总线组件: 参数与调试

配置 - Siemens S7 控制器

安装图标

为了在Siemens软件中将每一个映像分配给设备，以下的图像必须复制到Step7\S7Data\ncbmp 目录下。

BX3100d.DIB

BX3100n.DIB

BX3100s.DIB

安装 GSD 文件

  • 在Step7 hardware 配置窗口 安装新的GSD文件。
  • 选择BECKHOFF GSD所在的目录，并且导入文件。
  • 你会在硬件目录Profibus DP\Other field devices\I/O下找到他们。


Configuration: Siemens S7 Controller with BX3100

BECKHOFF 现场总线组件: 参数与调试

配置: Siemens S7 控制器与 BX3100

BX3100 参数数据

图1: 设置

BX3100 模块配置

例 1

1 x BX3100

图2: 输入单个字节。注意：每一个单个的字节需要一个ConfigData字节。

图3:输入连续的字节


Measuring the PLC Cycle Time

BECKHOFF 总线端子控制器: 参数与调试

测试 PLC 循环时间

在PLC Control设置任务时间.默认设置是20ms.

在默认设置中,PLC程序每20ms被调用一次,只要常规的循环时间小于20ms.System Manager中的循环时间可以被测量用来判断你系统是否被加载,为了确定无障碍运行,设置的任务时间应该高于测量时间20%到30%.一个准确的循环时间故障可以在 K-Bus tab 的描述中发现.


BX-Controller - SSB-Configuration

BECKHOFF BX 控制器: 参数与调试

SSB - 配置

SSB在system manager中组态.打开你存已有的组态或一个在PLC工程中的新组态,K-Bus与高级的现场总线已经组态好了.
在 I/O devices 下(左击鼠标)可以增加更多的设备.

选择CANopen主站SSB并OK确认.

左击鼠标,CANopen节点现在被选择到SSB设备上.

所有的Beckhoff CAN都是可用的,与从其他制造商CANopen设备中的一般CANopen节点一样.

现在连接PLC变量到你的CAN节点.一旦组态完成,就把它加载到BX中.


BX Controller - SDO communication from the PLC

BECKHOFF BX 控制器: SSB

来自PLC的SDO通讯

ADS块用于PLC的SDO通信.这些块能被用于发送SDO电报并且接受从站的响应 (ADSWRITE/ADSREAD).

输入参数 | 描述
NETID | local NetId of the BX, or leave empty, e.g. with ''
Port number | 0x1000hex + NodeId (从站数)
IDXGRP | SDO Index
IDXOFFS | SDO Subindex
LEN | SDO 数据长度 (1...4)

BX 例程:

设置个人或所有节点在预备运行或运行状态

ADSWRTCTL能被用来设置个人的CANopen节点或所有的从站给预备运行或运行状态.

输入参数 | 描述
NETID | local NetId of the BX, or leave empty, e.g. with ''
Port number | 0x1000hex + NodeId (从站数) / 153dec (所有节点)
ADSSTATE | ADSSTATE_RUN
DEVSTATE | 1 - Pre / 0 - 运行的
LEN | 0
SRCADDR | 0

BX 例程:

SSB 接口重启

通过ADSWRTCTL块你可以重启SSB接口.先停止SSB设备然后启动SSB.

输入参数 | 描述
NETID | local NetId of the BX, or leave empty, e.g. with ''
Port number | 153dec
ADSSTATE | ADSSTATE_STOP, ADSSTATE_RUN
DEVSTATE | 0
LEN | 0
SRCADDR | 0

或

输入参数 | 描述 (us 软件版本 1.16 或更高对所有的BX控制器)
NETID | local NetId of the BX, or leave empty, e.g. with ''
Port number | 300dec
ADSSTATE | ADSSTATE_RESET
DEVSTATE | 0
LEN | 4
SRCADDR | ADR from a DWORD variable with the ID from the SSB device (你可以从System Manger 文件中读取ID值 1...3)


Emergency Telegrams and Diagnostics

BECKHOFF BX 控制器: SSB

紧急的电报与诊断

CAN总站的状态由NodeState所规定.如果收到一个紧急的电报DiagFlag将被设置.紧急计数器在每个紧急电报后增加.

节点状态值 | 描述
0 | 没有错误
1 | 节点失效
2 | 没有发现节点
4 | SDO 在启动时有语法错误
5 | SDO 在启动时数据不匹配
8 | 节点启动正在进行
11 | SSB 总线关断
12 | 预运行
13 | Servere 总线差错
14 | 保护: 触发错误
20 | TxPDO太短
22 | 期望的 TxPDO 缺失
23 | 节点正在运行但是不是所有的 TxPDOs 被接收

ADS Port 153

通过Ads读取紧急电报

输入参数 | 描述
NETID | local NetId of BX
Port number | 153
IDXGRP | 16#xxxxF180 (xxxx) NodeId, the Diag flag is only reset when at least 106 字节s are read 16#xxxxF181 (xxxx) NodeId, the Diag flag is reset immediately
IDXOFFS | 字节 偏移量流量表连接巴巴变宝宝贝贝宝宝贝贝白斑病个g个vck

数组的描述

偏移量 | 位 | 数值 / 描述
0 - 1 | Bit 0 | 保留
 | Bit 1 | 启动信息没有收到或不正确
 | Bit 2 | 紧急-溢出
 | Bits 3- 15 | 保留
2 - 3 | Bits 0- 14 | TX-PDO (i+1) 已收到
 | Bit 15 | 所有的TX PDOs 16-n 已收到
4 - 5 | Bits 0- 4 | 1: 错误的TX PDO 长度
 |  | 2: 同步的 TX PDO 缺失
 |  | 3: 节点信号预运行
 |  | 4: 对 TX PDO 的事件超时计时器
 |  | 5: 没有响应或保护被触发
 |  | 6: 触发器多次丢失且保护被激活
 | Bits 5- 15 | 相关的 COB ID
6 | Bits 0- 7 | 1: 在 SDO 上传期间数值不正确
 |  | 2: 在 SDO 上传期间长度不正确
 |  | 3: 在 SDO 上传/下载期间终止
 |  | 4: 在一个启动信息中有不正确的日期
 |  | 5: 因等待启动信息而超时
7 | Bits 0- 7 | 2: 不正确的 SDO 命令指示符
 |  | 3: SDO 切换位没有改变
 |  | 4: SDO长度太大
 |  | 5: SDO-终止
 |  | 6: SDO-超时
8 - 9 | Bits 0- 7 | SDO 上传/下载 索引
10 | Bits 0- 7 | SDO 上传/下载 子索引
11 | Bits 0- 7 | 保留
12 | Bits 0- 7 | 终止errorClass
13 | Bits 0- 7 | 终止 errorCode
14 - 15 | Bits 0- 15 | 终止 additionalCode
16 - 19 |  | 读取的值 (如果偏移 6 = 1)
20 - 23 |  | 期望值 (如果偏移 6 = 1)
24 - 25 |  | 连续紧急事件的数量
26-n |  | 紧急事件 (每8 个字节)

BX 例程:

例子 - BX system manager 文件:

通过 AdsRead 读取 PDO 的电报号

输入参数 | 描述
NETID | local NetId of BX
Port number | 153
IDXGRP | 16#xxxxF930 (xxxx) NodeId
IDXOFFS | 0

BX 例程:

注意 节点ID必须在 TwinCAT configuration 中组态在ADS模块被调用之前.

发送一个 CAN 信息

这个 ADSWRITE 使任意的 CAN 消息被发送.

输入参数 | 描述
NETID | local NetId of BX
Port number | 153
IDXGRP | 16#0000F921
IDXOFFS | 0
LEN | 11 字节s
SRCADDR | 指向一个 11 字节的数组

11 字节 CAN 数据的结构

字节 | 描述 | 例子节点 7 SDO 0x607 Len 8 下载需要 0x2100 (Index) 子索引 1 - 值 "1"
1 | COB-ID 低字节 | 0x06 (SDO 低字节)
2 | COB-ID 高字节 | 0x07 (SDO 高字节)
3 | LEN (长度) | 0x08 (LEN, 在这个情况下可能是 5 )
4 | Data[1] | 0x22 (下载要求)
5 | Data[2] | 0x00 (索引低字节)
6 | Data[3] | 0x21 (索引高字节)
7 | Data[4] | 0x01 (子指标)
8 | Data[5] | 0x01 (数值 "1")
9 | Data[6] | 0x00
10 | Data[7] | 0x00
11 | Data[8] | 0x00


BK5120 at SSB

BECKHOFF BX 控制器: 参数与调试

BK5120 的 SSB

需要:
  • TwinCAT 2.9 基于 953 或更高
  • BX3100 版本 0.80 或更高
  • 1 x KL1xx4
  • 1 x KL2xx4
  • 1 x KL9010
  • 1 x BK5120
  • 1 x KL1xx4
  • 1 x KL2xx4
  • 1 x KL9010
  • 电缆材料与电源
  • TwinCAT System Manager 文件 [image] (System Manager文件必须通过ADS传给BX控制器).
  • BX 程序文件

为了通过ADS进行组态的下载,需要一个Beckhoff的 PROFIBUS 主站 (FC310x) 或一个串口 (在准备中) .


Communication between BXs (via SSB)

BECKHOFF BX 控制器: 参数与调试

BX之间的通讯 (通过 SSB)

2个或更多的BX可以通过SSB来交换数据.为了实现数据交换,利用在system manager中的CAN第二层电报,CAN电报通讯可以通过COB ID规定.与BX的类型无关,因为它是基于任意BX且同一形式的工程.

组态例程
BX_ONE:
Node Id 2
CAN_Out AT %QB100: ARRAY[0..7] OF BYTE
COD Id 514 0x202
CAN_In AT %IB100: ARRAY[0..7] OF BYTE
COD Id 386 0x182 		BX_TWO:
Node Id 2
CAN_Out AT %QB100: ARRAY[0..7] OF BYTE
COD Id 386 0x182
CAN_In AT %IB100: ARRAY[0..7] OF BYTE
COD Id 514 0x202

组态和例程:

所需材料
  • TwinCAT 2.9 基于959 或更高
  • 2 x BXxx00
  • 电缆材料与电源
  • TwinCAT System Manager 文件 BX_ONE
  • BX_ONE 文件 程序
  • TwinCAT System Manager 文件 BX_TWO
  • BX_ONE 文件 程序

为了通过ADS进行组态的下载,需要一个Beckhoff主站(FC310x, FC510x, FC520x) 或一个空余的串口.


Cimrex panel at SSB

BECKHOFF BX 控制器: 编程

Cimrex 面板的 SSB

BX的CAN接口也可以用来连接操作面板,在这个例子中,一个来自Beijers公司的面板被连接,更多关于面板的信息请参考 http://www.beijerelectronics.de .

所需组件

1 x BX3100
一对 K-Bus 的总线端子(这里的 3 x KL2114,在system manager 文件中适用)
1 x Cimrex 41

1 x CAB 15 CAN 适配器

BX 例程在ST:

BX 例子组态:

Cimrex 41的例子:
- 波特率 500 kbaud
- CAN 从站地址 10


Lenze Frequency Converter at SSB

BECKHOFF BX 控制器: 参数与调试

Lenze 变频器的 SSB

所需材料
  • TwinCAT 2.9 基于953 或更高
  • BXxx00
  • 1 x KL1xx4
  • 1 x KL2xx4
  • 1 x KL9010
  • 1 x Lenze 8200 矢量电机
  • 1 x Lenze CANopen 接口 2175
  • 电缆材料和电力供应

对于通过ADS的组态下载,需要一个Beckhoff现场总线主站或一个空闲的串口.

Lenze 描述

以下章节是从 Lenze 2175 手册中摘录的. 它们由 Lenze Drive Systems GmbH 公司提供来描述一些基本参数. 更多的信息可以在 http://www.Lenze.com上找到.

初步调试

为内部电源的总线模块设置电源.

扩展的电源 内部电源
(交货状态)

对 CANopen 通信 设置 DIP 开关 10 到 "ON".

波特率 DIP 开关 7-9
传送率 [kbps] | S7 | S8 | S9
10 | ON | ON | OFF
20 | ON | OFF | ON
50 | OFF | ON | ON
125 | OFF | ON | OFF
250 | OFF | OFF | ON
500 (DEFAULT) | OFF | OFF | OFF
1000 | ON | OFF | OFF
CAN 地址 DIP 开关 1-6
注意 DIP 开关 6 权重最小.
例子: 地址 3 转变 5 与 6 "ON".

激活通信模块

为了激活通信模块要切换到操作模式3.这能通过SSB实现，如下所示:

同步电报

在默认设置中, 一旦收到CAN主站的同步电报,Lenze驱动将发送它的PDO输出一次.如果trans. type被设置到2，例如,Lenze驱动将在他收到每两个同步电报后发送一个PDO输出.

例程
  • TwinCAT-System-Manager-文件:
  • TwinCAT-PLC-文件:


COM Port

BX控制器有两个串口，对于PIN任务请参考硬件描述.

设置选项:

描述 | 选择
波特率 | 9600 波特率 19200 波特率 38400 波特率 (starting with auto 波特率 rate detection) 57600 波特率 115200 波特率 (only COM 2)
数据位 | 7 8 (缺省)
奇偶性 | 无 奇 偶 (缺省)
停止位 | 1 (缺省) 2

COM 1

COM1口用于KS2000软件的通信或TwinCAT PLC Control（通过串口登录 ）

COM 2

COM2口(通过RS 232 或 RS 485) 用于用户协议或协议库的应用 (例如 ModbusRTU, RK512, 等等.) 其他串行设备的连接。

库

串口通信可访问功能块。

  • Documentation
  • Example
  • Library


BX Menu Settings

BECKHOFF 现场总线组件: 参数与调试

BX菜单设置

为了切换到菜单，按住导航开关三秒。先出现菜单目录。

  • 通过RIGHT/LEFT键你可以改变菜单设置 (第一排显示的菜单是活动菜单).
  • 按住DOWN键来切换到子菜单
  • 按住UP键来回到主菜单

子菜单的第一排显示了菜单项，第二排显示这个菜单项的当前设置。

一些设置是不能改变的 (只读). 这些项目只能被用来提供检查和给予用户相关信息。要关闭菜单的话必须在主菜单中按住导航开关3秒。

在设置改变前，必须设置密码。当固件升级后密码依旧保留并且可以通过重启到工厂设置。如果你忘了密码，BX控制器将不得不返厂。

开关作业

主菜单 | 子菜单 1排 | 子菜单 2排 | 读/写
MENU | Password | **** not set ???? set | 见下文
 | Factory settings | Activate? | Pressing the key causes the factory setting to be reset and the controller to be rebooted automatically
 | Reboot | Activate? | Pressing the key causes the controller to be rebooted
AMS | AMS | >AMS Net-ID< Default BX3100, BX5100, BX5200, BX8000: 1.1.1.1.1.1 Default BX9000: 172.16.21.20.1.1 | 只读
PLC | NAME | >current NAME< | 只读
 | Curr. Exex. Time | >current value< | [ms]
 | Task time | >current value< | The cycle time can be set if the key is pressed
 | Status | >Boot-Prj< >PLC Status< | Boot project exists PLC status
Config | NAME | >current NAME< | 只读
 | Delete config | Activate? | Pressing the right key causes the current configuration to be deleted
Real Time Clock | Date and Time | >current time< | 只读
 | Year | Setting | 2003-2xxx
 | Month | Setting | 1-12
 | Day | Setting | 1-31
 | Day of week | Setting | Mon, ... Fri
 | Houre | Setting | 0-23
 | Minute | Setting | 0-59
 | Second | Setting | 0-59
COM 1 只读 | Baud rate | >current value< | 9600/19200/38400/56800
COM 2 只读 | Baud rate | >current value< | 9600/19200/38400/56800/115k
SSB 只读 | Baud rate | >current value< | 1MBaud, 500k, 250k, 125k, 100k, 50k
 | Cycle Time | >current value< [in µs] | 只读
 | Utilization | >current value< [in %] | 只读
K-Bus 只读 | Diagnostics | >current diagnosis< | 只读
 | Number of Bus Terminals | >current value< | 只读

总线-具体菜单项

BX3100
F-Bus PROFIBUS 只读 | Address* | >current value< | 1-126
 | Baud rate* | >current value< | 只读
 | Status | >current value< | 只读
 | Diagnostic* | >current value< | 只读
BX5100
F-Bus CANopen 只读 | Address* | >current value< | 1-126
 | Baud rate* | >current value< | 只读
 | Status | >current value< | 只读
 | Diagnostic* | >current value< | 只读
BX9000
Ethernet | MAC ID | >current value< | 000105-xx-xx-xx, 只读
 | ADDR.STATE | >current value< | 只读
 | ADDRESSING MODE | FIXED IP (Default) DHCP BOOTP BOOTP & SAVE | 读/写
 | NAME | >current value< | BX_xxxxxx (xxxxxxx last 3 Bytes from the MAC ID) 读/写
 | DNS SERVER 3* | >current value< | IP address from a DNS Server 读/写
 | DNS SERVER 2* | >current value< | IP address from a DNS Server 读/写
 | DNS SERVER 1 | >current value< | IP address from a DNS Server 读/写
 | DEFAULT GATEWAY | >current value< | 读/写
 | IP MASK | 255.255.0.0 | 读/写
 | IP ADDRESS | 172.16.21.20 | 读/写

*) 在准备中

代码

默认设置是 "****", 例如 密码无效。需要一个为了设置参数的密码。

菜单导航

按下导航开关3秒后你可以打开菜单目录。一些菜单项将在下面描述。

菜单
菜单
 主菜单

DOWN (press briefly)

PASSWORD
???? 		???? - password set
**** - no password set

PRESS (press briefly)

PASSWORD ENTER?
???? 		Do you want to enter the password
Yes - PRESS (press for approx. 2 seconds, then enter the password) / No - UP

PRESS (press for approx. 2 seconds, then enter the password)

PASSWORD
???? 		Enter password
PRESS <OK>

PRESS

PASSWORD
1234 		Enter password
OK <PRESS> and <PRESS> again to confirm (press for approx. 1 second until OK appears in the display)
F bus (only BX3100)
F-BUS
WAIT FOR SETPRM 		Fieldbus status (只读)
WAIT FOR SETPRM - waiting for parameter data from PROFIBUS
SSB
SSB
 Smart System Bus
COM2
COM2
         Serial interface COM2 (只读)

DOWN

Baudrate
xxx 		Current baud rate (只读)
COM1
COM1
         Serial interface COM2 (只读)

DOWN

Baudrate
xxx 		Current baud rate (只读)
K-Bus
KBUS OK
10 TERMINALS 		K-Bus diagnosis (只读)

DOWN

KBUS RESET
         K-Bus reset

PRESS (short)

KBUS RESET EXCT?
         PRESS 1 sec - the K-Bus is reset
PLC
PLC
 PLC status (只读)

DOWN

PROJECT
>NAME< 		PLC project name

RIGHT

CURR. EXEC. TIME
xxx ms 		Total processing time in [ms]

RIGHT

CYCLE TIME
20 ms 		Set cycle time


BX PLC properties

BECKHOFF 现场总线组件: 编程

BX PLC 特征

说明 | 数值
数据内存 | 256 kbyte
程序内存 | 256 kbyte 包括 Task配置和POUs在线修改需要的内存
源代码内存 | 256 kbyte
RETAIN | 2 kbyte
输入 | 2 kbyte
输出 | 2 kbyte
FLAG | 4 kbyte
最大变量数 | 16 kbyte
Max. POUs | 受内存限制


TwinCAT PLC error codes

BECKHOFF 总线端子控制器: 编程

TwinCAT PLC 错误代码

错误类型 | 说明
PLC 编译错误 | Maximum number of POUs (...) exceeded
PLC 编译错误 | Out of global data memory ...

POUs错误

对于每个块均创建一个 POU (过程对象单元) 。默认可用256个块。

如果调用了库POU的数量就有可能超出。 在这种情况下，POUs的数量应该增加。

为此，请在PLC Control下Projects/Options中打开控制器设置。

在PLC Control中Projects/Options进行控制器设置。

这些设置不能在线更改。

全局内存错误

默认2 × 16 KB的数据可用。如果要使用大量的数据，这个范围内应该增加。对于BX，最大可有14个数据段。


Bus Terminal Controller - Remanent data

BECKHOFF 总线端子控制器: 编程

Remanent 数据

BX控制器有2000 Byte 的 remanent 数据可用。在PLC Control中这样声明：VAR RETAIN 。

例

VAR RETAIN
Test :BOOL;
Count :INT;
END_VAR

Retain 数据定义位置在 VAR RETAIN 和 END_VAR 之间。 这些数据会保存到 2kB大小的NOVRAM 中。RETAIN 在每次PLC循环后即存入NOVROM 中，对于2KB的数据需要任务时间为2ms（1KB为1ms）。这些变量可以定义为局部或全局变量，但指定为IO型的变量（%I...,%Q...,%M...）不能用作Retain数据。

注意 VAR_RETAIN 不能用做功能块。否则所有功能块数据会复制到retain 内存中，这样会增加很多不必要的PLC循环时间以及Retain内存占用。
注意 指定为IO地址(%I...,%Q.., %M...)的变量不能声明为 retain 型变量。

功能块中使用 remanent 数据的例子

由于在功能块中即使只使用一个 remanent 数据也会将功能块中所有数据做保存，所以应该避免这种情况。下面是这样的一个例子程序。

功能块测试 (不需要程序代码 - 在 ST 中一个分号就足够了)

FUNCTION_BLOCK Test

VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
VAR_IN_OUT
Counter :INT;
END_VAR

主程序

PROGRAM MAIN

VAR
fb_Test:Test;
END_VAR
VAR RETAIN
iCounter1:INT;
END_VAR

fb_Test(Counter:=iCounter1);


Allocated flags

BECKHOFF 总线端子控制器: 编程

标记地址分配

有4k byte 的标记地址可以分配。它们可以对一个地址分配不同的变量类型，例如，可用作字符串转换为Byte型。这些数据也可以通过ADS功能进行读写。

注意 BX 控制器不能将标记地址变量再定义为 remanent 数据。

通过ADS读写标记地址变量

在PROFIBUS中可以通过ADS读写标记变量，我们可以使用DPV1的服务来实现。在CANopen中可以通过SDO通讯来实现。
AmsNetId 可以在System Manager中找到，或在BX控制器的液晶显示菜单里找到。
PLC port 号是 800.

索引组 | 含义 | 索引偏移(取值范围)
0x4020 | Flag (only BXxxx0) | 0..4096
例子

BX program

VAR
Flag_01 AT %MB0: WORD;
END_VAR

TwinCAT PC/CX Master Programm

VAR
fbADRSREAD: ADSREAD;
Flag_M: WORD;
END_VAR

fbADRSREAD(
NETID:='172.16.3.0.2.3' ,  (* AMSNetId BX *)
PORT:=800 ,                (* 800 - PLC *)
IDXGRP:=16#4020 ,          (* 0x4020hex
flags *)
IDXOFFS:=0 ,               (* byte offset *)
LEN:=2 ,                   (* Lenght byte *)
DESTADDR:=ADR(Merker) ,
READ:=TRUE ,
TMOUT:=t#1s  );
IF NOT fbADRSREAD.BUSY THEN
fbADRSREAD(READ:=FALSE);
END_IF


Mapping of the Bus Terminals

BECKHOFF现场总线组件：组态

总线端子映射

对面向字节的总线端子进行映射的详细分配，可以在总线端子组态指南中找到。该文档也可在产品的 CD 上或下列的因特网上找到：http://www.beckhoff.com.

字节操作型总线端子 | 位操作型总线端子
KL15x1 | KL10xx, KL11xx, KL12xx, KL17xx, KM1xxx
KL25xx | KL20xx, KL21xx, KL22xx, KL26xx, KL27xx, KM2xxx
KL3xxx |
KL4xxx |
KL5xxx |
KL6xxx |
KL7xxx |
KL8xxx |
 | KL9110, KL9160, KL9210, KL9260


Local process image in the TwinCAT configuration

BECKHOFF 总线端子控制器: 编程

TwinCAT配置中的本地进程映像

TwinCAT配置(TwinCAT CONFIG) 使得PROFIBUS / K-Bus / PLC变量之间可以自由映射。通过System Manager ，变量可以独立于它们的地址连接。

在TwinCAT 配置中， 所有的总线端子均有固定地址。如果插入一个总线端子，整个地址范围可能会改变。 许多数据是不必要的，占据了宝贵的地址内存空间。 TwinCAT 配置纠正了该缺点。 已分配的变量可以与一个总线端子自由连接。配置在System Manager中执行，然后配置被传输到BX(查看 TwinCAT configuration)中。


BX Controller - Libraries - Overview

BECKHOFF BX 控制器: 编程

库 - 概述

总线端子控制器有大量的库 (带有PLC功能的总线耦合器，称为BXxxxx) (查看 Beckhoff InfoSys).

下载

为了下载库请左击磁盘图标,并请复制库到文件夹TwinCAT\PLC\LIB.

  • Standard
  • TcSystemBX [image] (The TcSystemBX requires the TcBaseBX library)
  • TcBaseBX [image] (TcDisplayBX, TcNaviSwitchBX and TcDebugBX are now included here)
  • TcComPortBX
  • ChrAscBX.lbx
注意 最新的固件需要最新的库,如果你升级你的BX控制器，请也更新库，把这些库复制到LIB文件夹，把这些库移出你的工程并重新加载它们

TcSystemBX

ADS | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
ADSREAD | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
ADSWRITE | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
ADSRDWRT | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
ADSWRTCTL | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
ADSRDSTATE | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
ADSRDDEVINFO | 04.03.04 | 0.90 | 0.14 | 1.00 | 0.02 | 1.00
Bit Functions | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
CLEARBIT32 | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
CSETBIT32 | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
GETBIT32 | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
SETBIT32 | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
Display Function | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
FB_DispWrite | 31.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
Diagnose | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
BX_Security | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
DeviceTyp | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
固件版本 | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
固件版本String | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
DeviceTyp | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
Read_Diagnose | 15.08.06 | 1.12 | 1.14 | - | 1.12 | 1.14
CRCBootproject | 15.08.06 | 1.14 | 1.14 | - | 1.14 | 1.14
Read Address | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
ReadSlaveAddress | 15.08.06 | 1.12 | 1.12 | 1.10 | 1.12 | -
Controller | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
FB_BasicPID | 04.03.04 | 0.64 | 0.01 | 1.00 | 0.01 | 1.00
Event Logger Functions | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
- | - | - | - | - | - | -
File Access | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
FB_ReadFromFile | 03.08.04 | 1.04 | 1.04 | 1.00 | 1.04 | 1.00
FB_WriteToFile | 03.08.04 | 1.04 | 1.04 | 1.00 | 1.04 | 1.00
FB_ReadWriteFile | 03.08.04 | 1.04 | 1.04 | 1.00 | 1.04 | 1.00
Memory Functions | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
MEMCMP | 07.03.03 | 0.41 | 0.01 | 1.00 | 0.01 | 1.00
MEMCYP | 07.03.03 | 0.41 | 0.01 | 1.00 | 0.01 | 1.00
MEMMOVE | 07.03.03 | 0.41 | 0.01 | 1.00 | 0.01 | 1.00
MEMSET | 07.03.03 | 0.41 | 0.01 | 1.00 | 0.01 | 1.00
NOVRAM Functions | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
- | - | - | - | - | - | -
Serial Communication Interface | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
FB_COMPortClose | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
FB_COMPortOpen | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
F_COMPortRead | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
F_COMPortWrite | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
SFC | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
AnalyzeExpression | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
AppendErrorString | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
SFCActionControl | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
System / Time / TBus | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
DRAND | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
RTC | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
SYSTEMTIME_TO_DT | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
DT_TO_SYSTEMTIME | 07.03.03 | 0.28 | 0.01 | 1.00 | 0.01 | 1.00
GetSysTick | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
PresetSysTick | 14.07.03 | 0.49 | 0.01 | 1.00 | 0.01 | 1.00
Reboot | 21.07.03 | 0.59 | 0.14 | 1.00 | 0.02 | 1.00
Persistent_Data | 21.08.07 | 1.17 | 1.17 | - | 1.17 | 1.17
Debug | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
F_ReadDebugTimer | 08.08.03 | 0.59 | 0.14 | 1.00 | 0.02 | 1.00
F_StartDebugTimer | 08.08.03 | 0.59 | 0.14 | 1.00 | 0.02 | 1.00
NaviSwitch | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
All blocks | 10.10.03 | 0.64 | 0.14 | 1.00 | 0.02 | 1.00

TcComPortBX

Com FBs | 版本 | 固件
 |  | BX3100 | BX5100 | BX5200 | BX8000 | BX9000
All blocks | 20.08.03 | 0.60 | 0.02 | 1.00 | 0.01 | 1.00


Libraries - System Task Info

BECKHOFF BX 控制器: 编程

系统任务信息

VAR_GLOBAL
    SystemTaskInfoArr 	: ARRAY[1..2] OF SYSTEMTASKINFOTYPE;
END_VAR

系统标识是隐性声明变量。利用输入助手，在系统变量中找到一个变量SystemTaskInfoArr 。这个变量是一个拥有四个SYTEMTASKINFOTYPE的结构类型 。该结构定义可以在系统库中找到。 index在这里是任务ID 。

开发环境 | 目标系统类型 | 连接的 PLC 库
TwinCAT v2.9.0 | BX 控制器 | TcBaseBX.lbx


Libraries - System Task Info Type

BECKHOFF BX 控制器: 编程

系统任务信息类型

TYPE SYSTEMTASKINFOTYPE
STRUCT
    active			:	BOOL;
    taskName			:	STRING(16);
    firstCycle		:	BOOL;
    cycleTimeExceeded		:	BOOL;
    cycleTime		:	UDINT;
    lastExecTime		:	UDINT;
    priority			:	BYTE;
    cycleCount		: 	UDINT;
END_STRUCT
END_TYPE
说明

active: 该变量表示任务是否处于触发状态.
taskName:任务名称.
firstCycle: 在第一个PLC任务周期下，变量值为TRUE.
cycleTimeExceeded: 该变量表示设置的任务周期时间是否超出.
cycleTime: 设置的任务周期时间为100ns的倍数.
lastExecTime: 最后一个循环所需的周期时间，为100 ns的倍数.
priority: 设置任务优先级.
cycleCount: 周期计数器.

开发环境 | 目标系统类型 | 连接的 PLC 库
TwinCAT v2.9.0 | BX 控制器 | TcBaseBX.lbx


Libraries - System Info

BECKHOFF BX 控制器: 编程

系统信息

VAR_GLOBAL
    SystemInfo     : SYSTEMINFOTYPE;
END_VAR

系统标识是隐性声明变量。利用输入助手，在系统变量中找到一个变量SystemTaskInfoArr 。这个变量是一个拥有四个SYSTEMINFOTYPE 结构类型 。 该结构定义可以在系统库中找到。 为了访问该变量， 系统库必须要导入到工程中。

开发环境 | 目标系统类型 | 连接的 PLC 库
TwinCAT v2.9.0 | BX 控制器 | TcBaseBX.lbx


Libraries - System Info Type

BECKHOFF BX 控制器: 编程

系统信息类型

TYPE SYSTEMINFOTYPE
STRUCT
    runTimeNo			:	BYTE;
    projectName		:	STRING(32);
    numberOfTasks		:	BYTE;
    onlineChangeCount		:	UINT;
    bootDataFlags		:	BYTE;
    systemStateFlags		:	WORD;
END_STRUCT
END_TYPE
说明

runTimeNo: 指定runtime system 的个数(1).
projectName: 项目名称为STRING类型.
numberOfTasks: 在runtime system中包含的任务数 (最大 1).
onlineChangeCount : 从最后一次完全下载开始，在线更改的次数.
boot Data Flags: 保留
system State Flags: 保留

开发环境 | 目标系统类型 | 连接的 PLC 库
TwinCAT v2.9.0 | BX 控制器 | TcBaseBX.lbx


BX Controller - Local ADS port numbers - Overview

BECKHOFF BX 控制器: 编程

本地 ADS 端口号 - 概述

端口号 | 描述
100 dec | 从耦合器与复杂的总线端子中读写寄存器和表
150 dec | RTC 的读写(实时时钟)
153 dec | SSB - 读取紧急信息
800 dec | 本地 PLC 过程映像, 查看端口 801
801 dec | 本地 PLC 过程映像, 查看端口 800
0x1000 + Node ID | SSB - SDO 通信通过CANopen 节点 (从站数)


Deactivating the LED for cycle time exceeding

BECKHOFF BX 控制器: 编程

为循环超时停用PLC

BX控制器监视设置的任务循环时间,如果超时了, 循环超时 位和PLC上红色的LED将被置位. 一些应用可以承受短期的超时, 例如如果许多数据通过串行通信被接收时会产生校验码. 如果不想PLC的红色LED灯闪烁,可以通过ADSWRITE来关闭.

ADSWRITE 结构

ADSWRITE命令能使BX控制器的PLC红色LED灯失效.

输入参数 | 描述
NETID | local NetId of BX
Port number | 800
IDXGRP | 16#0000_4080
IDXOFFS | 0
LEN | 1 字节
SRCADDR | Pointer on 1 bytes 0: red LED ON 1: red LED OFF


COM port - Overview

BECKHOFF BX 控制器: 编程

COM 口 - 概述

包括功能块的库支持BXxxxx总线控制器和远程对象的数据交换.最大COM口能接收512 bytes的数据.

功能块

名称 | 描述
FB_ComPortOpen | 对一个对象打开串口连接
FB_ComPortClose | 对一个对象关闭串口连接

功能

名称 | 描述
F_ComPortRead | 从 COM 缓冲区读取数据
F_ComPortWrite | 从 COM 缓冲区写入数据

支持的波特率

波特率（带宽） | COM 1 | COM 2
300 | 否 | 是
600 | 否 | 是
1200 | 否 | 是
2400 | 否 | 是
4800 | 否 | 是
9600 | 是 | 是
19200 | 是 | 是
38400 | 是 | 是
57600 | 是 | 是
115200 | 否 | 是

进一步的帮助模块可以在 TcComPortBX.lbx 中被找到.

  • 把ComLib, ModbusRTU等用于BX COM 口的模块
  • 与 BK8x00 总线耦合器通信的模块
  • 用于对 BK8x00 从站仿真的模块


BX Controller - COM Port - Function Block

BECKHOFF BX 控制器: 编程

COM 口 - 功能块

COM 口打开

函数模块 FB_COMPORTOPEN

VAR_INPUT

bOpen :布尔型;
stComConfig :ST_COMCONFIG;

要点

bOpen: 上升沿触发模块
stComConfig: COM 接口数据结构

VAR_OUTPUT

bBusy :布尔型;
bErr :布尔型;
iErrId :字节型;
iHandle :字节型;

要点

bBusy: 只要它是TRUE就激活模块.
bErr: 错误位.
iErrId: 错误代号.
iHandle: 指针转移.

返回参数 iErrId | 含义
0 | 没有错误
-1, 0xFFFF | 错误的 COM 口
-2, 0xFFFE | 波特率或不支持. 检查 stComConfig.BaudRate 参数.
-3, 0xFFFD | 数据格式残缺或错误. 检查 stComConfig 参数.
-4, 0xFFFC | 初始误差 COM 口
-5, 0xFFFB | 非法例子
-6, 0xFFFA | 错误的 RX 缓冲区大小
-7, 0xFFF9 | 错误的 TX 缓冲区大小
-8, 0xFFF8 | COM 口被锁

COM 口关闭

函数模块 FB_COMPORTCLOSE

VAR_INPUT

bOpen :布尔型;
iHandle :字节型;

要点

bClose: 上升沿触发模块
iHandle: FB_COMPORTOPEN的指针转移.

VAR_OUTPUT

bBusy :布尔型;
bErr :布尔型;
iErrId :字节型;

要点

bBusy: 只要它是TRUE就激活模块.
bErr: 错误位
iErrId: 错误代码.

返回参数 iErrId | 含义
0 | 没有错误
> 0 | 错误代号 (#没有记录#)


BX Controller - COM Port - Functions

BECKHOFF BX 控制器: 编程

COM 口 - 函数

COM 口读取

函数 F_COMPORTREAD

VAR_INPUT

hCom :INT;
cbRxBuffer :UINT;
pRxBuffer :UDINT;

要点

hCom: 通过 iHandle of FB_COMPORTOPEN 连接
cbRxBuffer: 能被读取的最大数据长度
pRxBuffer: 数据指针向COM缓冲区写入内容

返回值 | 含义
> 0 | 字节数从COM缓冲区复制到PLC
< 0 | 错误

COM 口写入

函数 F_COMPORTWRITE

VAR_INPUT

hCom :INT;
cbTxBuffer :UINT;
pTxBuffer :UDINT;

要点

hCom: 通过 iHandle of FB_COMPORTOPEN 连接
cbTxBuffer: 复制到COM缓冲区的数据量
pTxBuffer: 含数据指针的COM缓冲区已满

返回值 | 含义
> 0 | 字节数从PLC复制到COM缓冲区
< 0 | 错误


COM Port - ComConfig Data Structure

BECKHOFF BX 控制器: 编程

COM 口 - 数据结构

BX串口通信的设置是通过以下数据结构传输的.

TYPE ST_COMConfig:
STRUCT
cbRxBufferLen :WORD;
cbTxBufferLen :WORD;
dwMode :DWORD;
BaudRate :DWORD;
eCommPort :E_CommPort;
eDataBits :E_DataBits;
eParity :E_Parity;
eStoppBits :E_StoppBits;
END_STRUCT
END_TYPE

要点

cbRxBufferLen: 数据接收缓冲区长度 - 例如 300
cbTxBufferLen: 数据发送缓冲区长度 - 例如 300
dwMode: 数据模式 COM 1 只有"0" - COM 2 RS232 "0" 与 RS485 "1"
BaudRate: 波特率
eCommPort: COM 口 COM1/COM2
eDataBits: 数据位的数量 SEVEN_DATABITS/EIGHT_DATABITS
eParity: 偶/奇/无
eStoppBits: 停止位的数量 ONE_STOPPBIT/TWO_STOPPBITS


COM Port - Example

BECKHOFF BX 控制器: 编程

COM 口 - 例程

ST 例程

PROGRAM MAIN
VAR
(* EXAMPLE - BRIDGE between PIN 7 and 8 from X01 COM 2 Port *)
fb_COMPortOpen_1 : FB_COMPortOpen;
stCOMConfig_1 : ST_COMConfig;
hCOM : WORD;
Result_R : INT;
Result_W : INT;
Var_M : ARRAY[0..9] OF BYTE:=11,22,0,33,0(6);
Var_R : ARRAY[0..9] OF BYTE;
Value : INT;
Counter_V : BYTE; (* It is all OK, this value counts up *)
i : INT;
i_k : INT;
fbTimer : TON;
END_VAR

stCOMConfig_1.cbRxBufferLen :=300;
stCOMConfig_1.cbTxBufferLen :=300;
stCOMConfig_1.dwMode :=0;
stCOMConfig_1.BaudRate :=19200;
stCOMConfig_1.eCommPort :=COM2;
stCOMConfig_1.eDataBits:=EIGHT_DATABITS;
stCOMConfig_1.eParity:=EVEN;
stCOMConfig_1.eStoppBits:=ONE_STOPPBIT;

CASE i OF
(* Open Port *)
0: fb_COMPortOpen_1(bOpen:=TRUE , stCOMConfig:=stCOMConfig_1 );
IF NOT fb_COMPortOpen_1.bBusy THEN
IF NOT fb_COMPortOpen_1.bError THEN
hCOM:=fb_COMPortOpen_1.iHandle ;
i:=i+1;
ELSE
i:=100;
END_IF
END_IF
(* Write data*)
1: fbTimer(IN:=FALSE);
Result_W:=F_COMPortWrite(hCom, 4, ADR(Var_M[0]));
IF Result_W>0 THEN
i:=i+1;
Var_M[2]:=Var_M[2]+1;
ELSE
i:=101;
END_IF
(*Receive data*)
2: Result_R:=F_COMPortRead(hCom, 100, ADR(Var_R[Value]));
IF Result_R<>0 THEN
Value:=Result_R+Value;
END_IF
IF Value>=4 THEN
FOR i_k:=0 TO Value DO (*Check protocol*)
IF Var_R[i_k-4]=11 AND Var_R[i_k-3]=22 AND Var_R[i_k-1]=33 THEN
Counter_V:=Var_R[i_k-2];
i:=1;
Value:=0;
END_IF
END_FOR
END_IF
fbTimer(IN:=TRUE,PT:=t#1s); (*Watchdog receive*)
IF fbTimer.Q THEN
fbTimer(IN:=FALSE);
i:=102;
END_IF
100: ; (*ERROR open port*)
101: ; (*ERROR send data*)
102: i:=1; (*WD ERROR no data receive*)
END_CASE


BX Debug Function - Overview

BECKHOFF 总线端子控制器: 编程

BX Debug Function - 概述

这些功能可用于测量一个PLC项目命令的执行时间。单位是tick。一个tick相当于5.12微秒。

Start Debug Timer function

调用此函数启动定时器。返回值是“0“。

Read Debug Timer function

这个函数读取定时器的值。返回值必须乘以5.12微秒。

例

VAR
Timer_BX :WORD;
i :INT;
END_VAR

程序

F_STARTDEBUGTIMER();
For i:=0 to 1000 do
;
END_FOR
Timer_BX:=F_READDEBUGTIMER();


FB GetNavSwitch

BECKHOFF BX 控制器: 编程

函数 GetNavSwitch

这个函数用于读取导航开关。

VAR_Output

F_GETNAVSWITCH: WORD;

要点

F_GETNAVSWITCH: 交换数据

字描述
位 | 15 | 14 | ... | 5 | 4 | 3 | 2 | 1 | 0
名称 | LOCKED | - | ... | - | PRESS | RIGHT | LEFT | DOWN | UP

当位15被置位时总线端子控制器菜单打开.只要用户在使用BX3100菜单那这个位就一直置位.当退出菜单时,导航开关立即释放给PLC；例如,在程序中按压按钮也是可见的.请在你的应用中考虑这一点.例如,开关只应该在通过位15的下降沿触发一个定时器而产生的一个短暂的延迟后被测定.

ST 例程:


BX Controller - FB Display

BECKHOFF BX 控制器: 编程

FB 显示

函数模块 FB_DISPWRITE

VAR_INPUT

bWrite :BOOL;
bBlanking :BOOL;
nRow :UINT;
sData :STRING(16)

要点

bWrite: 上升沿启动模块

bBlanking: FALSE 背光开启, TRUE 背光关闭,默认是背光开启 (FW 1.15 对所有的BX控制器是必要的).

nRow: 在显示 1 或 2中的行.

sData: 显示的字符串

VAR_OUTPUT

bBusy :BOOL;
bErr :BOOL;
iErrId :WORD;

要点

bBusy: 模块是活动的只要它是 TRUE.

bErr: 错误位.

iErrId: 错误数.

返回参数 | 含义
0 | 没有错误
> 0 | 错误数
ST 例程

PROGRAM MAIN
VAR
fb_DispWrite1: FB_DispWrite;
i: INT;
udiCounter: UDINT;
strCounter: STRING;
strLine: STRING;
k: INT;
END_VAR

CASE i OF
0: strCounter:=CONCAT('Counter : ',UDINT_TO_STRING(udiCounter));
fb_DispWrite1(bWrite:=TRUE , nRow:=1 , sData:=strCounter );
IF NOT fb_DispWrite1.bBusy THEN
IF NOT fb_DispWrite1.bErr THEN
fb_DispWrite1(bWrite:=FALSE);
udiCounter:=udiCounter+1;
i:=1;
END_IF
END_IF
1: fb_DispWrite1(bWrite:=TRUE , nRow:=2 , sData:=strLine );
IF NOT fb_DispWrite1.bBusy THEN
IF NOT fb_DispWrite1.bErr THEN
fb_DispWrite1(bWrite:=FALSE);
k:=k+1;
strLine:=REPLACE(' ','#',1,k);
IF k=16 THEN
k:=0;
END_IF
i:=0;
END_IF
END_IF
END_CASE

显示 ASCII 表

字符"&" 的例子(查看行 1, 列 7): 00100110bin = 38dez = 26hex. 这就等于 PLC 值 '$26' (string).

ASCII 字符 PDF 文件.


BX Controller - Real-time Clock - Example

BECKHOFF BX 控制器: 编程

实时时钟 - 例程

BX控制器的一个特点是有实时时钟。当前时间可以通过功能块读取。接下来的例程将说明这一点

函数模块 RTC

VAR_INPUT

EN :BOOL;
PDT :DT;

要点

EN: 设定时间上升沿给在PDT输入中的有效值

PDT:设置日期与时间.

VAR_OUTPUT

Q :BOOL;
CDT :BOOL;

要点

CDT: 当前时间.

需要的库:

  • TcSystemBX.lb6
  • TcBaseBX.lb6

ST 例程:

PROGRAM MAIN
VAR
fbTimer: TON;
fbRTC: RTC;
END_VAR

fbTimer(PT:=t#60s,IN:=NOT fbTimer.Q);

IF fbTimer.Q THEN
fbRTC;
END_IF

注意 调用RTC模块会增加5 ms的循环时间,用于时间与日期变量的数据转换.

因此模块不应该在每个PLC循环中被调用!
或者你也可以通过 ADS block 来读取时间. ADS 模块以独立的字节变量发送日期和时间.
例 19:30 - Hour: 19 / Minute: 30


BX Controller - TcComPortBX - Overview

BECKHOFF BX 控制器: 编程

TcComPortBX - 概述

需要的库:

  • TcBaseBX
  • TcSystemBX

概述

名称 | 描述
fb_BX_BK8x00 Master | BK8x00 COM 口功能块, 与总线耦合器 BK8x00 通信
fb_BX_BK8x00 Slave | BK8x00 COM 口功能块, 与 PC 通信.一个 BK8x00 被模拟

名称 | 描述
FB_BX_COM_5 | 仿真一个 KL60x1的模块 (如果COMlib.lb6 或ModbusRTU.lb6 被使用).
FB_BX_COM_64 | 仿真一个 PC 接口的模块 (如果COMlib.lb6 或 ModbusRTU.lb6 被使用).
FB_BX_COM_64ex | 仿真一个 PC 接口的模块 (如果COMlib.lb6 或 ModbusRTU.lb6 被使用). 这里的COM接口也可以在操作期间被关闭.


BK8x00 FB COM Port

BECKHOFF BX 控制器: 编程

BK8x00 FB COM 口

这个函数块能被用来连接(通过BXxxxx的串口) BK8000串行总线耦合器通过RS485和BK8100的RS232连接.最大波特率为38400波特.

VAR_INPUT

stCOMConfig :ST_COMConfig;
byAddress :BYTE;
byLen :BYTE;
byMaxInputLen :BYTE;
ptDataOut :POINTER TO BYTE;
ptDataIN :POINTER TO BYTE;
bStart :BOOL;
TmOut :TIME;

说明

stComConfig: 选择COM参数的结构
byAddress: BX8x00 地址 1-98 (0 与 99 是保留的)
byLen: 数据长度以 [BYTES] (只允许偶数, 例如 0, 2, 4, ...)
byMaxInputLen: 连接到SIZEOF并且变量连接到 ptDataIN
ptDataOut: 连接到ADR和数据输出
ptDataIn: 连接到ADR和数据输入
bStart: 上升沿启动模块
TMOut: 延迟直到过程结束

VAR_OUTPUT

bBusy :BOOL;
bError :BOOL;
iErrorId :WORD;
Input_len :WORD;

说明

bBusy: 模块是活动的只要它是TRUE.
bError: 错误位
iErrorId: 错误数
Input_Len: 接收到的数据量

返回参数 iErrorId | 含义
0 | 没有错误
100dec | 在打开COM口时报错
101dec | 在发送数据时报错
102dec | 看门狗错误, 在看门狗时间内没有从站的响应
105dec | 输入缓存区太小
200dec | CRC 错误
0x80xxhex | 总线耦合器错误 xx 总线耦合器的状态位(查看 BX8x00 文件)

硬件

RS 232 通信 针 任务
BX COM1 RS232 | BX COM2 RS232 | BK8100
2 | 8 | 2
3 | 7 | 3
5 | 5 | 5
RS 485 通信 针 任务

FB 设置: 当使用R485连接时stCOMConfig变量设置为1并且选择COM2接口是重要的.

BX COM2 RS485 | BK8000
1 | 3
6 | 8
ST 例程

需要材料:

  • BX3100 + 总线端子
  • BK8100, KL1xx8, KL2xx8, KL9010
  • 串行电缆, 引脚分配: 查看例程


BK8x00 FB Slave COM Port

BECKHOFF BX 控制器: 编程

BK8x00 FB 从站 COM 口

通过这个函数块,PC(TwinCAT or KS8000)能通过串口连接到BXxxxx.PC作为串行主站,并且BXxxxx通过函数块来模拟BK8x00.

VAR_INPUT

stCOMConfig :ST_COMConfig;
byAddress :BYTE;
byLenDataOut :BYTE;
byLenDataIN :BYTE;
ptDataOut :POINTER TO BYTE;
ptDataIN :POINTER TO BYTE;
WDTime :TIME;

说明

stComConfig: 选择COM参数的结构
byAddress: BX8x00 地址 1-98 (0 与 99 是保留的)
byLenDataOut: 数据长度以 [BYTES] (只允许偶数, 例如 0, 2, 4, ...)
byLenDataIn: 数据长度以 [BYTES] (只允许偶数, 例如 0, 2, 4, ...)
ptDataOut: 连接到ADR和数据输出
ptDataIn: 连接到ADR和数据输入
WDTime: 在看门狗时间内如果没有新的信息收到将发出错误信息 (0 ms 则看门狗失效)

VAR_OUTPUT

bError :BOOL;
iErrorId :WORD;
Input_Len :BYTE;

说明

bError : 错误位
iErrorId: 错误代号
Input_Len: 收到的错误数据数

返回参数 iErrorId | 含义
0 | 没有错误
1 | 开门狗错误, 如果大于 0 ms (如果是 0 ms 则看门狗失效)
100dec | 在打开COM口时发现错误
101dec | Error during sending of data在发送数据时出现错误
103dec | 内部接收缓存区溢出
104dec | 数据大于PLC缓存区
105dec | 不能从PLC缓存区复制数据
200dec | CRC 错误

硬件

RS 232 通信引脚分配
BX COM 1 RS232 | BX COM 2 RS232 | PC COM 接口
2 | 8 | 2
3 | 7 | 3
5 | 5 | 5
RS 485 通信引脚分配

FB 设置: 当使用R485连接时stCOMConfig变量设置为1并且选择COM2接口是重要的.

BX COM 2 RS485 | PC COM 口 (e.g. RS485 卡 W&T #13601, 2-线, without echo, automatic)
1 | 1 - 2 bridges
6 | 6 - 7 bridges
ST 例程 对 BXxxx

TwinCAT 的System Manager 文件作为主站. 如图所示, 一个带总线端子的总线耦合器被组态. 在这种情况下,总线端子的类型与数量决定了数据长度. 一般来说, 总线端子的类型是无关紧要的. 例子:

  • 2 x KL3002 结果是 4 字的输入
  • 2 x KL4002 结果是 4 字的输出

需要材料:

  • BX3100 + 总线端子
  • PC with RS232 接口 与 TwinCAT 版本 2.9, 串行电缆, 引脚分配: 如上


FB_BX_COM_5

通过BX控制器的串口这个模块连接ModbusRTU.lib 和 ComLib.lib. 它模拟了KL60x1, 数据输出不是通过总线端子的,而是通过BX的两个串口中的一个.

VAR_INPUT

pstrEmo_IN :POINTER TO BYTE;
pstrEmo_OUT :POINTER TO BYTE;
ComConfig :ST_COMConfig;

说明

pstrEmo_IN: 指向 KL6inData5B
pstrEmo_OUT: 指向 KL6outData5B
ComConfig: COM 接口的参数设定

ST 例程对连接 COMLib 到 BX:


BX Controller - FB_BX_COM_64

BECKHOFF BX 控制器: 编程

FB_BX_COM_64

通过BX控制器的串口这个模块连接ModbusRTU.lib 和 ComLib.lib. 它模拟了PC接口, 数据输出不是通过PC接口的,而是通过BX的两个串口中的一个(COM1 or COM2).

VAR_INPUT

pstrEmo_IN :POINTER TO BYTE;
pstrEmo_OUT :POINTER TO BYTE;
ComConfig :ST_COMConfig;

要点

pstrEmo_IN: 指向 ModbusPCComInData
pstrEmo_OUT: 指向 ModbusPCComInData
ComConfig: COM 接口的参数设定

ST 例程对连接 ModbusRTU 到 BX:

ST 例程对连接 ModbusRTU 版本 2 到 BX:

这个例子需要 ModbusRTU 库!


FB_BX_COM_64ex

通过BX控制器的串口这个模块连接ModbusRTU.lib 和 ComLib.lib. 模拟了一个64位用户数据的PC接口. 数据输出不是通过PC接口的,而是通过BX的两个串口中的一个(COM1 or COM2).

VAR_INPUT

pstrEmo_IN :POINTER TO BYTE;
pstrEmo_OUT :POINTER TO BYTE;
ComConfig :ST_COMConfig;

VAR_OUTPUT

ComPortIsClose :BOOL;
bError :BOOL;
iErrorId :INT;

要点

pstrEmo_IN:
指向 ModbusPCComInData
pstrEmo_OUT:
指向 ModbusPCComOutData
ComConfig:
 COM 接口的参数设定
COM_Port_Open:
如果这个位被置位, 接口就被打开. 如果这个位被复位, 接口就被关闭.
ComPortIsClose:
 如果接口被关闭,这个位就被置位.
bError:
这有一个错误.
iErrorId:
错误代码 (查看 FB_COMPortOpen)

ST 例程对连接 ModbusRTU 到 BX:

这个例子需要 ModbusRTU 库!


BX Controller - BX COM Port as ModbusRTU Master

BECKHOFF BX 控制器: 编程

BX COM 口作为 ModbusRTU 主站

BX的串口也可以用作Modbus主站.

必要组件

1 x BX3100
K-Bus 总线端子(任意, 因为例子中不使用)
1 x BK7300
2 x KL2xx4
2 x KL1xx4
1 x KL9010

RS 485 电缆*

BX3100 COM 2 / RS 485 | BK7300 RS 485
1 | 3
6 | 8

*) 激活终端电阻不需要短的电缆线长度 (≤ 5 m) 与低的波特率 (≤19200 baud)

ST 例程 对于连接 ModbusRTU 主站 通过 BX:

ST 例程 对于连接 ModbusRTU 主站 版本2 通过 BX:

例程需要 ModbusRTU, TcComPortBC, TcBaseBX 库.
波特率 9600, n, 8.1 默认 BK7300,
BK7300 地址11

反应时间

反应时间是独立于任务时间的,从站的数量与Modbus电报的长度以及从站的反应时间的
如下表中说明了Beckhoff BK7300 Modbus从站.对其他从站来说并不适用,但你可以用这个表来估测.

波特率 38400 波特(一个读 Reg. und 一个写 Reg. 每个从站电报)

从站数 | BX任务时间 | 轮询所有节点的时间
1 | 5 | 100 ms* / 125 ms**
2 | 5 | 200 ms / 225 ms
1 | 10 | 180 ms / 220 ms
2 | 10 | 350 ms / 390 ms
1 | 20 | 350 ms / 350 ms
2 | 20 | 700 ms / 700 ms

*) 2 字节进- 与 2 字节出
**) 20 字节进- 与 20 字节出


BX COM Port with Cimrex Panel

BECKHOFF BX 控制器: 编程

BX COM 口 与 Cimrex 面板

BX的串口可以被用为Modbus从站.在这个例子中,连接上了Beijers公司的面板.关于这个面板的更多信息可以在 www.beijerelectronics.de中找到.

必要组件

1 x BX3100
1 x Cimrex 12
任意总线端子 (任意, 因为在这个例子中不用总线端子)

RS 232 电缆

BX3100 COM 2 / RS 485 | Cimrex 12 RS 232
7 | 2
8 | 3
9 | 5

RS 485 电缆*

BX3100 COM 2 / RS 485 | Cimrex 12 RS 485
1 | 2 -3
6 | 15 -16

*) 激活终端电阻需要短的电缆线长度 (≤ 5 m) 与低的波特率 (≤19200 baud)

BX例程在ST:

Cimrex 面板的例子:

例子需要 ModbusRTU, TcComPortBC 与 TcBaseBX 库.
- 波特率 9600,n,8,1 D
- Cimrex 12


BX-Controller - BX COM Port - RK512 Protocol

BECKHOFF BX 控制器: 编程

BX COM 口 - RK512 协议

RK52协议可以通过BX控制器的COM1和COM2口进行远程通信.RK512模块的详细资料能在Beckhoff的Information System中找到.
PC的串口可以通过BX控制器的64位仿真来模拟.

需要：

硬件:

  • 有RS232接口的PC TwinCAT PLC 2.9版
  • BX 控制器
  • 为BX - PC连接的串行电缆

软件:

  • TwinCAT 2.9版
  • COMlib.lib
  • COMlib3964R.LIB
  • COMlibRK512.LIB
  • TcComPortBX.lbx
  • Standard.lbx
  • TcBase.lbx
  • TcSystemBX.lbx
  • ChrAscBx.lbx

例程 BX3100 :

例程 PC :

例程 - PC system manager 文件:


BX COM Port - SMS

BECKHOFF BX 控制器: 编程

BX COM 口- SMS

BX可以通过串口来发送SMS。接下来的例程将使用Siemens S35手机的SMS库

例程:

针 作用 (Siemens 电缆 S30880-S4501 A801-2)
S35 | COM 1 | COM 2
2 | 3 | 7
3 | 2 | 8
5 | 5 | 9


Bus Terminal Controller - Programming via Serial Interface

BECKHOFF 总线端子控制器: 编程

通过串口编程

每个总线端子控制器都能通过PC的RS232接口编程。

在TwinCAT PLC Control中选择串行接口。

串行接口设置, 串口号, 波特率等. 均可在 PLC Control的Online/Communication parameters中找到。总线端子控制器需要设置如下:

  • 波特率: 9600/19200/38400/57600 baud (自动波特率检测)
  • 停止位: 1
  • 校验位: 偶校验

通过串口与ADS编程

总线端子控制器可以通过PC的RS232接口来编程。 在它可用之前，TwinCAT必须先识别出该总线端子控制器(查看串行 ADS).

在TwinCAT PLC Control中选择ADS连接。

PLC Control可以通过Online/Communication Parameters....来访问


Diagnostics

BECKHOFF 现场总线组件: 错误处理与诊断

诊断

以太网状态

在许多情况下，了解与更高级别主站通讯的好坏非常重要。为此，将现场总线状态变量与你的PLC程序连接起来。

图. 在System Manager中PROFIBUS诊断字节

错误代码 | 描述 | 解决方案
0 | 没有错误 | -
129 | 等待配置数据 | 启动 PROFIBUS
130 | 等待配置数据 | 启动 PROFIBUS
131 | 没有可访问的主站 | 检查PROFIBUS电缆和接头
例如
如果PROFIBUS被终止，例如因为电缆被拔掉或PLC已关机，该BX3100/BC3150会在DP状态下显示130。这意味着BX3100/BC3150在等待主站的参数数据。
在超时或者主站开始启动后从站启动顺序如下：
参数数据 - 配置数据 - 数据交换

通过ADS读取现场总线状态

现场总线状态可以通过默认配置下ADSREAD或在TwinCAT组态中读取。

ADSREAD功能块的参数 | 描述
NetID | local - empty string
Port | 1
IndexGroup | 16#0006
IndexOffset | BX3100: 16#000C_A0F4 BC3150: 16#000C_A080
LEN | 1

K-Bus状态

一个内部总线或总线端子错误可以在K-Bus状态中显示出。更精确的故障描述可通过功能块（编制中）获得。为此，将K-Bus状态变量与你的PLC程序连接起来。

错误位 | 描述 | 错误类型
0 | 没有错误 | 没有错误
Bit 0 | K-Bus 错误 | 错误
Bit 2 | K-Bus 被再次触发 | 注意

通过ADS 读取K-Bus状态

在默认或TwinCAT 配置中，现场总线状态可以通过ADSREAD.读取。

ADSREAD功能块的参数 | 描述
NetID | local - empty string
Port | 1
IndexGroup | 16#0006
IndexOffset | 16#000C_9000
LEN | 1


Example Programs - Overview

BECKHOFF BX 控制器: 附录

例程概述

名称 | 说明
Display | 控制显示屏的例程
Navigation switch | PLC导航开关的资料
Menu | 导航开关和显示屏的例程
COM port - BK/BC8x00 Master Interface | COM 1 或 COM 2 接口作为主站通过BK8x00 协议
COM port - BK8x00 Slave Interface | COM 1 或 COM 2 接口作为从站通过BK8x00 协议
COM port - Cimrex 12 | 通过ModbusRTU控制CIMREX 12显示屏的例程
COM port - ModbusRTU Slave | 连接ModbusRTU Lib 通过 BX 的 COM 1 or COM 2 接口
COM port - ModbusRTU Master | 连接ModbusRTU Lib 通过 BX 的 COM 1 or COM 2 接口
COM port - RK512 Protocol | RK512 协议通过 COM 1 or COM 2
COM port - ComLibV2 | 通过COMlibV2m发送字符串的例程
RTC | 通过功能块读取 RTC 的例程
SMS via COM port | 为了发送SMS信息通过COM接口连接西门子 S35 手机
SSB - Display | Cimrex 面板的 SSB
SSB - AX2000 | AX2000 的 SSB
SSB - BK51x0 | BK5120 的 SSB
SSB - BX / BX communication | 从 BX 到 BX 的通信 (通过 SSB)
SSB - IclA Drive | IclA Drive 的 SSB
SSB - Lenze Drive | Lenze 变频器的 SSB


Standards for device testing

BECKHOFF 现场总线组件: 附录

设备测试标准

EMV

EMC resistance burst

EN 61000-6-2

ESD

EN 61000-6-4

耐振动/冲击

Vibration resistance

EN 60068-2-6

Shock resistance

EN 60068-2-27, EN 60068-2-29


Bibliography

BECKHOFF 现场总线组件: 附录

参考文献

德语书籍

PROFIBUS

  • PROFIBUS-DP/DPV1
    Grundlagen, Tipps und Tricks für Anwender (Principles, Tips for Users)
    by Manfred Popp
    ISBN: 3778527819

综合现场总线技术

  • Gerhard Gruhler (Pub.): Feldbusse und Geräte-Kommunikationssysteme (Fieldbus and Device Communication Systems)
    Praktisches Know-How mit Vergleichsmöglichkeiten (Practical Know-how with Comparative Resources)
    Franzis Verlag, 2001
    244 pages
    ISBN 3-7723-5745-8

英语书籍

(准备中)

PROFIBUS-DP 标准

  • IEC 61158 and IEC 61784
  • DIN 19245, Part 3
  • Euronorm EN 50 170

网站

  • http://www.profibus.com


Bus Terminal Controller - Local Process Image

BECKHOFF Fieldbus Components: Programming

Local Process Image

The default setting is for all the connected Bus Terminals to be assigned to the local process image of the BC/BX.

Mapping within the Bus Terminal Controller is carried out according to the following rule:
First come all the complex Bus Terminals, in whatever sequence they are physically inserted, followed by the digital Bus Terminals which are padded to a whole byte.

The default mapping of the complex Bus Terminals is:

  • complete evaluation
  • Intel format
  • word alignment
Example

1 x BCxxxx or BXxxxx
1 1 x KL1012
2 1 x KL1104
3 1 x KL2012
4 1 x KL2034
5 1 x KL1502
6 1 x KL3002
7 1 x KL4002
8 1 x KL6001
9 1 x KL9010

Bus Terminal | Position | Input image | Output image
KL1502 | 5 | %IB0...%IB5 | %QB0...%QB5
KL3002 | 6 | %IB6...%IB13 | %QB6...%QB13
KL4002 | 7 | %IB14...%IB21 | %QB14...%QB21
KL6001 | 8 | %IB22...%IB29 | %QB22...%QB29
KL1012 | 1 | %IX30.0...30.1 | -
KL1104 | 2 | %IX30.1...30.5 | -
KL2012 | 3 | - | %QX30.0...30.1
KL2034 | 4 | - | %QX30.2...30.5
KL9010 | 9 | - | -

Note

If you do not know the addresses at which the Bus Terminals that you have assigned to the local PLC of your BC/BX are located,

then configure your hardware in the System Manager.
After you have entered all the Bus Terminals and PLC variables, click with the right mouse button on the BC/BX in the hardware tree of the System Manager and select the menu item Export variables information...
A file is saved, and this file can be inserted in the PLC Control under Project -Import.

Now you will have the entry TwinCAT import under the global variables, and you will find here all the variables that you have assigned to the local PLC of your BC/BX.


Loading a TwinCAT Configuration from BX into the System Manager

The configuration is transferred to the BX Controller via ADS.

ADS serial

Enter the serial ADS connection, as described in section Serial ADS .

ADS fieldbus

A prerequisite is that TwinCAT operates as the master and data exchange is active, i.e. physical and PROFIBUS configuration must be completed, and data must be exchanged from the master (FC310x) to the BX3100 (PROFIBUS configuration).

BX3100:

  • Master TwinCAT with FC310x
  • TwinCAT 2.9 starting with build 931 or higher

Selecting the target system

Select the BX3100 to which you wish to upload the configuration. F8 opens the dialog for downloading the associated device.

Select the associated BX Controller.

The device state (BX) is displayed at the bottom right of the System Manager.

Click on the red folder. The TwinCAT configuration will now be uploaded.


BX-Controller - BX COM-Port - ComLibV2

BECKHOFF BX-Controller: Programming

BX COM-Port - ComLibV2

Example for ComLibV2, send Strings oder the internal COM interface from the BX controller. To send and receive data you can do a bridge between PIN 7 and 8 X01 (COM2).

Required material

Hardware:

  • BX-Controller

Software:

  • TwinCAT ab 2.10
  • COMlibV2.lib
  • TcComPortBX.lbx
  • Standard.lbx
  • TcBase.lbx
  • TcSystemBX.lbx

Example program BX:


Creating own menus

The display and the navigation switch can also be used for user-specific purposes, for example displaying diagnostic information or changing parameters. A simple example is provided that can be used and adapted to get you started.

Example Program:


Profibus Verkabelung

BECKHOFF Fieldbus Components: Installation

PROFIBUS Cabling

In preparation.


Approvals

Conformity mark

CE

Protection class

IP20 in accordance with EN60529


Listen

BECKHOFF Fieldbus Components: Appendix

Lists

In preparation.


Literaturverzeichnis

BECKHOFF Fieldbus Components: Appendix

Bibliography

TCP/IP

TCP/IP (english)

Illustrated, Volume1 The Protocols
von W. Richard Stevens
Publishing house: ADDISON-WESLEY Longmann Verlag

TCP/IP (german)

Aufbau und Betrieb eines TCP/IP Netzes
von Kevin Washburn, Jim Evans
Publishing house: ADDISON-WESLEY Longmann Verlag

Modbus/TCP

http://www.modicon.com
http://www.modbus.org

TwinCAT

TwinCAT Information documentation
http://tcinfosys.beckhoff.com


Beckhoff Fieldbus Components - CANopen Baud Rate and Bit Timing

BECKHOFF Fieldbus Components: Settings

CANopen Baud Rate and Bit Timing

The following baud rates and entries in the bit-timing register are supported by the CANopen devices:

Baud rate [kBaud] | BTR0 | BTR1 | Sampling Point
1000 | 0x00 | 0x14 | 75%
800 | 0x00 | 0x16 | 80%
500 | 0x00 | 0x1C | 87%
250 | 0x01 | 0x1C | 87%
125 | 0x03 | 0x1C | 87%
100 | 0x04 | 0x1C | 87%
50 | 0x09 | 0x1C | 87%
20 | 0x18 | 0x1C | 87%
10 | 0x31 | 0x1C | 87%

The bit-timing register settings given (BTR0, BTR1) apply, for example, for the Philips 82C200, SJA1000, Intel 80C527, Siemens 80C167 and other CAN controllers. They are optimized for the maximum bus length.