【工控老马】ABB AC500 系列PLC与WEST 8100+系列仪表的ASCII通讯指南

 

一、硬件设置

仪表设定

在P8100 的组态级(Configuration Mode)中

设置好以下几个参数:

1.通讯协议(Prot):

请改为ASC I (ASC II 通讯协议)

2.通讯速率(bAud):

1.2/2.4/4.8/9.6/19.2kbps 可选,

此处设为19.2kbps

3.设备地址(Addr):

1 – 99 可选,默认为1

4.通讯写入功能(CoEn):

r_o(只读)或r_W(可读可写),默认为r_W

 

PLC设定:

在CoDeSys软件中的硬件配置页面中将AC500 PLC的COM1端口设置为“ASCII”自由口模式,并设定好以下参数:

1.RTS control:      telegram

2.baudrate:         19200

3.parity:           even

4.Date bits:        7

5.Stop bits:        1

    通讯接线采用485模式接线方式。

 

二、通讯程序

    仪表ASCII方式指令格式:

    ASCII通讯协议采用半双工通讯,所有的通讯动作都由上位机开始。上位机给指定地址的控制器发出一命令或要求,控制器对上位机的命令作出应答或发回上位机要求的信息,所有的通讯信息包括以下内容:

     A)1 位信息起始字符;

     B)1 位或2 位地址字符;

     C)1 个命令或数据字符串;

     D)1 位信息停止字符。

    从上位机发出的信息可以是下列4 种形式之一:

     一类指令:L{N}??*

     确认从站状态正常返回信息: L{N}?A 表示可用

     二类指令:L {N} {P} {C}*

     查询/修改从站的某参数正常返回信息: L{N}{P}{DATA}A*

     三类指令:L {N} {P} #{DATA}*

     设置从站的某参数正常返回信息: L{N}{P}{DATA}I*表示:数据和参数有效

     四类指令:L {N} {P}I *

     在指令3 之后发送给同一从站, 如果指令3 中的数据和参数有效, 从站收到此指令后执行参数设置。正常返回信息: L{N}{P}{DATA}A*

    所有字符皆为ASCII 码,且:

    L: 信息开始位;

    {N}: 为控制器地址(1—99),1~9 可以用一位或两位(如:7 和07 皆 可); 

    {P}: 为参数代码

    {C}: 指令

    #: 表示接下来为{DATA}

    {DATA}:是ASCII 码组成字符串

    * : 信息截止字位

    {DATA}内容格式如下:

{DATA}内容

小数点及正负

abcd0

+abcd

abcd1

+abc.d

abcd2

+ab.cd

abcd3

+a.bcd

abcd5

-abcd

abcd6

-abc.d

abcd7

-ab.cd

abcd8

-a.bcd

 

    AC500 PLC ASCII指令的收发:

    AC500 PLC在 ASCII 方式下的指令收发是通过ABB ASCII通讯库中的功能块来完成的,功能块具体介绍如下:

  1. COM_REC

    通过一个"自由模式"的串行接口接收数据,高电平触发。

 

 

 

    功能块参数:

 

 

 

 

  1. COM_SEND

通过一个"自由模式"的串行接口发送数据,上升沿触发。

 

 

    功能块参数:

 

   

 

    DATA通过ADR模块可直接连接双字类型的地址(如:%MD0.100),也可以连接STRING类型的内部字符串变量(如后面例子中用到的“send_ascii”)。连接字符串变量时,仪表指令将直接以字符形式输入及显示;连接双子类型的地址时,输入和显示的将是组成仪表指令的字符的16进制代码。

 

程序实例:

    根据仪表命令格式,我们来做一个通过ASCII功能块实现仪表设定值的查询及修改的例子。

    首先,通过一个COM_SENG模块来发送设定值查询指令:“L1S?*”。其中“S”为仪表设定值的参数代码,其它各参数设置如下图所示,其中“send_ascii”为string类型的内部字符串变量,将指令“L1S?*” 赋予变量后,将“%MX1.0.1”置一,指令发出。

 

   

 

    同时,接收模块“COM_REC”(参数设置如下)将收到仪表应答指令“L1S02771A*”,表示当前设定值为27.7,1位小数。

 

 

 

    然后通过发送指令“L1S#02341*”修改设定值为23.4。

 

    仪表返回指令“L1S02341I*”表示参数和数据没有问题。

 

 

再次发送确认指令“L1SI*”确认修改设置。

 

 

    仪表返回指令“L1S02341A*”表示仪表设定值修改成功。

 

 

至此,ABB AC500系列PLC 与WEST 8100+系列仪表的通讯成功实现。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附件

WEST 8100系列仪表的参数代码表

参数

代码

说明

输入参数:

过程值

M

只读参数(二类指令),命令为:L{N}M?*

超量程时{DATA}为<??>0,

欠量程时{DATA}为<??>5。

过程值偏置

V

可以查询(二类指令)、修改(三类/四类指令串);

命令为:L{N}V?*,L{N}V#{DATA}*/L{N}VI*;

修正输入值,修正的过程值=实际值+过程值偏差,修正的过程值要在量程范围内,可供显示、报警、记录仪输出使用。此参数应小心选择,否则会造成显示的过程值和测量过程值的不一致。

量程上限

G

仅适用于直流线性输入,可用二类指令查询或三/四类指令串修改,小数点位置同输入范围。

命令为:L{N}G?*,L{N}G#{DATA}*/L{N}GI*。

量程下限

H

仅适用于直流线性输入,可用二类指令查询或三/四类指令串修改,小数点位置同输入范围。

命令为:L{N}H?*,L{N}H#{DATA}*/L{N}HI*;

输入小数点位置

Q

仅适用于直流线性输入,可用二类指令查询或三/四类指令串修改,确定小数点位置:0=abcd 1=abc.d 2=ab.cd 3=a.bcd。

命令为:L{N}H?*,L{N}H#{DATA}*/L{N}HI*。

数字滤波时间

m

用二类指令查询或三/四类指令串修改。

命令为:L{N}m?*,L{N}m#{DATA}*/L{N}mI*

输出参数:

输出功率

W

自动状态时,用二类指令查询;手动状态时,用二类指令查询或三/四类指令串修改。

命令为:L{N}W?*,L{N}W#{DATA}*/L{N}WI

输出1 功率限幅

B

用二类指令查询或三/四类指令串修改。

命令为:L{N}B?*,L{N}B#{DATA}*/L{N}BI*

输出1 控制周期

N

用二类指令查询或三/四类指令串修改。

命令为:L{N}N?*,L{N}N#{DATA}*/L{N}NI*

输出2 控制周期

O

用二类指令查询或三/四类指令串修改。

命令为:L{N}O?*,L{N}O#{DATA}*/L{N}OI*

变送输出上限

[

用二类指令查询或三/四类指令串修改,小数点位置与输入一致。

命令为:L{N}[?*,L{N}[#{DATA}*/L{N}[I*

变送输出下限

\

用二类指令查询或三/四类指令串修改,小数点位置与输入一致。

命令为:L{N}\?*,L{N}\#{DATA}*/L{N}\I*

设定值参数:

设定值

S

用二类指令查询或三/四类指令串修改,在设定范围内任意取值。

命令为:L{N}S?*,L{N}S#{DATA}*/L{N}SI*

设定值斜率

^

用二类指令查询或三/四类指令串修改,设置范围为1~9999/小时,{DATA}=00000 时为OFF,小数点位置和输入相同。

命令为:L{N}^?*,L{N}^#{DATA}*/L{N}^I*

设定值上限

A

用二类指令查询或三/四类指令串修改。出厂值为量程上限。

命令为:L{N}A?*,L{N}A#{DATA}*/L{N}AI*

设定值下限

T

用二类指令查询或三/四类指令串修改。出厂值为量程下限。

命令为:L{N}T?*,L{N}T#{DATA}*/L{N}TI*

报警值参数:

报警1 值

C

用二类指令查询或三/四类指令串修改,小数点位置与输入一致。

命令为:L{N}C?*,L{N}C#{DATA}*/L{N}CI*

报警2 值

E

用二类指令查询或三/四类指令串修改,小数点位置与输入一致。

命令为:L{N}E?*,L{N}E#{DATA}*/L{N}EI*

控制参数:

微分时间常数

D

用二类指令查询或三/四类指令串修改,格式为:mm.ss。单位为分钟.秒

命令为:L{N}D?*,L{N}D#{DATA}*/L{N}DI*

积分时间常数

I

用二类指令查询或三/四类指令串修改,格式为:mm.ss。单位为分钟.秒

命令为:L{N}I?*,L{N}I#{DATA}*/L{N}II*

手动积分

J

用二类指令查询或三/四类指令串修改,小数点位置与输入

一致。

ON/OFF 动作回差

F

用二类指令查询或三/四类指令串修改,1 位小数点。

命令为:L{N}F?*,L{N}F#{DATA}*/L{N}FI*

死区

K

用二类指令查询或三/四类指令串修改,无小数点。

命令为:L{N}K?*,L{N}K#{DATA}*/L{N}KI*

比例带1

P

用二类指令查询或三/四类指令串修改,设置范围0.5%~~999.9%或0.0(ON/OFF 动作),1 位小数点。

命令为:L{N}P?*,L{N}P#{DATA}*/L{N}PI*

比例带2

U

用二类指令查询或三/四类指令串修改,设置范围0.5%~~999.9%或0.0(ON/OFF 动作),1 位小数点。

命令为:L{N}U?*,L{N}U#{DATA}*/L{N}UI*

posted on 2022-01-13 22:07  工控老马  阅读(886)  评论(0编辑  收藏  举报