首页 上一页 1 2 下一页 尾页

ABB 510 与 s7-200 控制通信 点击:10621 | 回复:39



st008

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-09 16:14:27
楼主
求助帖20分-已结帖

首先感觉大家来的我的帖子,由于小弟不懂甚多,恳请各位帮忙。。

我来谈谈我的疑问:

这是一个我在论坛看到的帖子,诸多明白,,请帮助。。谢谢

我要做的是一个基于s7-200与ABB变频器的控制。。

1:首先对变频器的参数的设置:

如下。

ACS510变频器参数设置:
9802=1        MODBUS
5302=1 站号        5303=9.6kbit/s        波特率        5304=1 校验方式为8N2      5305为0       
1001=10 由MODBUS控制变频器启停(这点)
1102=0 由MODBUS控制变频器给定速度(0-20000对应0-50Hz)
1103=8 …

(以上都是变频器的参数的设置)大家看看有没有不对的地方

2

控制变频器起停. a.初始化,即向Modbus寄存器40001中写入1142(16进制数为476)并延时100毫秒;
b.停止电机,即向Modbus寄存器40001中写入1143(16进制数为477);
c.启动电机,即向AModbus寄存器40001中写入1151(16进制数为47F)

请问这是1142是怎么来的是通过ABB传动配置文件控制字  而 设置的吗 )
例:通讯初始化:发出【02 06 00 00 04 76 CRC校验码】,延时100毫秒;2 b9 L5 h  E) 
      启动电机:发出【02 06 00 00 04 7F CRC校验码】
      停止电机:发出【02 06 00 00 04 77 CRC校验码】请问这个02 地址 06功能 00 00是寄存器地址(这个地址可以顺便定义吗 04 77是数据字 (请问通过发送是个4字,从200CPU的vb区,发送到MODBUS 存储器40001,如果这样的话,发送4个字岂不是把40002这个寄存器的地址也占有了。200CPU与modbus寄存器的地址是映射的。)

3.用Modbus修改给定频率的方法0 ~: 
主机向通讯给定1(Modbus寄存器40002)中写入设定的频率数值(范围=0~+20000(换算到0~1105给定1最大),或-20000~0(换算到1105给定1最大~0));  
例如:若1105=50.00Hz;发出【01 06 00 01 27 10 CRC校验码】表示修改频率为25.00Hz。

第一步:设置变频器参数1105=50.00Hz; 
第二步:修改频率为25.00Hz。上位机发出【01  06  00  01  27  10  CRC校验码】

(请问这个给定的频率是这么个计数得到的)

还有就是这个

功能03:读多个保持寄存器:
发送:01 03 00 65 00 03(站号 功能 开始 个数)(开始  这个是地址的寄存器的开始吗
响应:01 03 06 02 EE 00 FA 00 00(站号 功能 字节数 字节1 字节2 …)

这种读写 是规定的格式吗。

我正在做plc与ABB变频器的恒压供水系统。。

以上诸多不解,还请各位亲们,帮帮忙,嘻嘻谢谢







伍琪生

  • 精华:2帖
  • 求助:0帖
  • 帖子:1200帖 | 11283回
  • 年度积分:2326
  • 历史总积分:62523
  • 注册:2006年8月05日
发表于:2012-12-09 16:31:29
1楼

这个我目前因为硬盘毁损导致资料丢失很多,就是找联想花了1200大洋做数据恢复也是只找到80%,

不过你的这个只要按照说明书设定好通讯参数(就是变频器的那些专用寄存器置入规定数据,对PLC的串口进行通讯初始化程序),再对变频器写入控制数据即可(需要按照变频器的Modbus地址进行写入

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-10 12:29:48
2楼

兄弟你说的太迷糊了,我还是不清楚咯。。能不能根据我的问题来说说呀。

王者-曹建军

  • 精华:2帖
  • 求助:0帖
  • 帖子:813帖 | 2407回
  • 年度积分:0
  • 历史总积分:16025
  • 注册:2011年12月25日
发表于:2012-12-10 14:17:36
3楼

ABB变频器 通讯 
MODBUS通讯
1.        ACS510变频器参数设置:
9802=1        MODBUS
5302=1 站号        5303=9.6kbit/s        波特率        5304=1 校验方式为8N2                5305为0     1001=10 由MODBUS控制变频器启停
1102=0 由MODBUS控制变频器给定速度(0-20000对应0-50Hz)
1103=8 
2.控制变频器起停
a.初始化,即向Modbus寄存器40001中写入1142(16进制数为476)并延时100毫秒;
b.停止电机,即向Modbus寄存器40001中写入1143(16进制数为477);
c.启动电机,即向AModbus寄存器40001中写入1151(16进制数为47F)‘ 
例:通讯初始化:发出【02 06 00 00 04 76 CRC校验码】,延时100毫秒;
      启动电机:发出【02 06 00 00 04 7F CRC校验码】
      停止电机:发出【02 06 00 00 04 77 CRC校验码】
3.用Modbus修改给定频率的方法
主机向通讯给定1(Modbus寄存器40002)中写入设定的频率数值(范围=0~+20000(换算到0~1105给定1最大),或-20000~0(换算到1105给定1最大~0));
例如:若1105=50.00Hz;发出【01 06 00 01 27 10 CRC校验码】表示修改频率为25.00Hz。
4.用Modbus修改加速时间的方法
向Modbus寄存器42202中写入设定的加速时间数值由参数的分辨率和范围决定;
例:发出【01 06 08 99 02 58 CRC校验码】表示修改加速时间为60.0S。

附:
功能01:读线圈状态:
发送:01 01 00 20 00 03(站号 功能 开始 个数)
响应:01 01 01 06(站号 功能 字节数 字节1 字节2 …)
功能02:读离散功能输入状态:
发送:01 02 00 20 00 03(站号 功能 开始 个数)
响应:01 02 01 05(站号 功能 字节数 字节1 字节2 …)
功能03:读多个保持寄存器
发送:01 03 00 65 00 03(站号 功能 开始 个数)
响应:01 03 06 02 EE 00 FA 00 00(站号 功能 字节数 字节1 字节2 …)
功能04:读多个输入寄存器:
发送:01 04 00 00 00 02(站号 功能 开始 个数)
响应:01 04 04 00 01 01 F1(站号 功能 字节数 字节1 字节2 …)
功能06:写单个保持寄存器:
发送:01 06 08 99 02 58(站号 功能 寄存器号 数值)
响应:01 06 08 99 02 58(站号 功能 寄存器号 数值)
功能10:写多个保持寄存器:
发送:01 10 08 99 00 02 02 01 f4(站号 功能 开始 个数 字节数 字节1 字节2 …)
响应:01 10 08 99 00 02(站号 功能 开始 个数)
以上调试程序对ABB 其它交流变频器都同样适用, 如ACS600, ACS800,ACS143,ACS400,ACS510,ACS550同样适用.,不过对于ACS600,ACS800变频器需要增加MODBUS扩展模块.

3 RS-485信号 B RS-485信号 B 或 TxD/RxD +  
8 RS-485信号 A  RS-485信号 A 或 TxD/RxD -  
1. 调用 Modbus RTU 主站初始化和控制子程序

使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:


图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序

各参数意义如下:

a. EN 使能: 必须保证每一扫描周期都被使能(使用 SM0.0) 
b. Mode 模式: 为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议 
c. Baud 波特率: 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。 
d. Parity 校验: 校验方式选择 
  0=无校验 
1=奇较验 
2=偶较验    
e. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。 
   注意: 这个值必须设置足够大以保证从站有时间响应。 
f. Done 完成位: 初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程) 
g. Error  初始化错误代码(只有在 Done 位为1时有效): 
  0= 无错误 
1= 校验选择非法 
2= 波特率选择非法 
3= 模式选择非法 

 

2. 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;


图 3. 调用Modbus RTU 主站读写子程序

各参数意义如下:

a. EN 使能: 同一时刻只能有一个读写功能(即 MBUS_MSG)使能 
   注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。  
b. First 读写请求位: 每一个新的读写请求必须使用脉冲触发  
c. Slave 从站地址: 可选择的范围   1 - 247 
d. RW 从站地址: 0 = 读, 1 = 写 
   注意: 
1. 开关量输出和保持寄存器支持读和写功能 
2. 开关量输入和模拟量输入只支持读功能 
e. Addr 读写从站的 选择读写的数据类型 
  数据地址: 00001 至 0*x - 开关量输出 
  10001 至 1*x - 开关量输入 
30001 至 3*x - 模拟量输入 
40001 至 4*x - 保持寄存器 
f. Count 数据个数 通讯的数据个数(位或字的个数) 
   注意: Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令) 
g. DataPtr 数据指针: 1. 如果是读指令,读回的数据放到这个数据区中 
  2. 如果是写指令,要写出的数据放到这个数据区中 
h. Done 完成位 读写功能完成位 
i. Error 错误代码: 只有在 Done 位为1时,错误代码才有效 
  0 = 无错误 
1 = 响应校验错误 
2 = 未用 
3 = 接收超时(从站无响应) 
4 = 请求参数错误(slave address, Modbus address, count, RW) 
5 = Modbus/自由口未使能  
6 = Modbus正在忙于其它请求 
7 = 响应错误(响应不是请求的操作) 
8 = 响应CRC校验和错误 

101 = 从站不支持请求的功能 
102 = 从站不支持数据地址 
103 = 从站不支持此种数据类型 
104 = 从站设备故障 
105 = 从站接受了信息,但是响应被延迟 
106 = 从站忙,拒绝了该信息 
107 = 从站拒绝了信息 
108 = 从站存储器奇偶错误 

 

常见的错误:

如果多个 MBUS_MSG 指令同时使能会造成 6 号错误 
从站 delay 参数设的时间过长会造成主站 3 号错误 
从站掉电或不运行,网络故障都会造成主站 3 号错误 
3. 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory)

Modbus Master 指令库需要一个284个字节的全局 V 存储区。

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-10 19:29:24
4楼

兄弟,虽然小弟初出茅庐,但copy我还是知道杂用。。。。能根据我的问题来说说嘛,谢谢

五代重歼

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 1142回
  • 年度积分:0
  • 历史总积分:2358
  • 注册:2004年5月23日
发表于:2012-12-11 17:20:40
5楼

标准modbus-RTU格式,变频器会自动解析出有效的数据。例如 启动电机:发出【02 06 04 7F CRC校验码】

变频器会解析出数据 16#47F,并写入40001映射的地址,并不会向你所说的挤占后面的寄存器地址。

你讲到的1142,就是你讲的ABB传动配置文件控制字

根据要求发送控制字和给定值就可以,控制字发到40001,给定值分别发40002和40003(外部1和外部2)。 

 

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-12 19:43:11
6楼
回复内容:
对:五代重歼关于标准modbus-RTU格式,变频器会自动解析出有效的数据。例如 启动电机:发出【02 06 04 7F CRC校验码】变频器会解析出数据 16#47F,并写入40001映射的地址,并不会向你所说的挤占后面的寄存器地址。你讲到的1142,就是你讲的ABB传动配置文件控制字。根据要求发送控制字和给定值就可以,控制字发到40001,给定值分别发40002和40003(外部1和外部2)。  内容的回复:


真是一针见血哪。。小弟在请教一下。CRC这个校验码 ,一般这么来判断。能几个例子吗?还有,我需要控制的是6台ABB的变频器,通过MODBUS,s7-200设为主站,MBUS-CTRL,在写12个MBUS-MSG.分别用于读写,吗,不知道这种思路对不对。请大侠多多指教。。这是我 的 QQ411627018,能不能加你一下。如果我能完成这个项目,小弟必有重谢。呵呵

五代重歼

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 1142回
  • 年度积分:0
  • 历史总积分:2358
  • 注册:2004年5月23日
发表于:2012-12-13 12:04:03
7楼

你既然用了S7-200的modbus 库文件,库文件含有CRC校验子程序,你的程序中会自动添加几个子程序MBUSM1、MBUSM2,MBUS_MSG执行时会自动调用MBUSM1/MBUSM2完成CRC校验。写12个MBUS_MSG也没问题,用上一个MBUS_MSG执行的Done信号触发下一个MBUS_MSG。

gsja

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 175回
  • 年度积分:0
  • 历史总积分:730
  • 注册:2008年8月22日
发表于:2012-12-13 12:28:08
8楼

1.请问这是1142是怎么来的是通过ABB传动配置文件控制字  而 设置的吗

  是的,1142是控制字而来,转化为2进制是10001110110,对应abb控制字的各位

2. 停止电机:发出【02 06 00 00 04 77 CRC校验码】请问这个02 地址 06功能 00 00是寄存器地址(这个地址可以顺便定义吗 04 77是数据字 (请问通过发送是个4字,从200CPU的vb区,发送到MODBUS 存储器40001,如果这样的话,发送4个字岂不是把40002这个寄存器的地址也占有了。

   04 77是数据字,它们刚好是一个字(两个字节),即用一个vw便可发送04 77

40001是一个字即一个vw

3.用Modbus修改给定频率的方法0 ~: 
主机向通讯给定1(Modbus寄存器40002)中写入设定的频率数值(范围=0~+20000(换算到0~1105给定1最大),或-20000~0(换算到1105给定1最大~0));  
例如:若1105=50.00Hz;发出【01 06 00 01 27 10 CRC校验码】表示修改频率为25.00Hz。

第一步:设置变频器参数1105=50.00Hz; 
第二步:修改频率为25.00Hz。上位机发出【01  06  00  01  27  10  CRC校验码】

(请问这个给定的频率是这么个计数得到的)

   频率的换算是将0--50hz转换为0--20000,即1hz=400,那么25hz=10000,10000转换为16进制为2710(自己可以算一下)。

4.   功能03:读多个保持寄存器:
        发送:01 03 00 65 00 03(站号 功能 开始 个数)(开始  这个是地址的寄存器的开始吗
         响应:01 03 06 02 EE 00 FA 00 00(站号 功能 字节数 字节1 字节2 …)

         这种读写 是规定的格式吗。

          是的,这是规定的格式,上面的例子就是从参数地址65即(0101参数,将其转换为十进制的结果)连续读3个寄存器,即:0101、0102、0103

 

gsja

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 175回
  • 年度积分:0
  • 历史总积分:730
  • 注册:2008年8月22日
发表于:2012-12-13 12:35:56
9楼

不知这样回答楼主清楚了没,

感觉楼主对plc最基础的东西还不是很清楚呀(一个字有多大都模糊),abb acs510采用的是标准modbus,可采用库文件,详细可参考库帮助。

gsja

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 175回
  • 年度积分:0
  • 历史总积分:730
  • 注册:2008年8月22日
发表于:2012-12-13 12:38:13
10楼

还有crc是算出来的,可以在网上找一下相关信息

 

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-16 23:16:56
11楼
回复内容:
对:gsja关于不知这样回答楼主清楚了没,感觉楼主对plc最基础的东西还不是很清楚呀(一个字有多大都模糊),abb acs510采用的是标准modbus,可采用库文件,详细可参考库帮助。内容的回复:


这几天没在线,很抱歉,首先很感谢你的评论。基本上我已经清楚了,现在面临做一个重大的问题,在自动模式下:我通过模拟输入模块,得到过程变量(实际压力),然后在和设定压力,做比较。当实际压力小于设定压力时候,在一定时间内。怎么通过PID,来调节。提高频率。小弟声明一下,刚接触PLC真的不久,很想越级考验一下自己。感谢大家的支持。。。

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-16 23:24:16
12楼
回复内容:
对:gsja关于还有crc是算出来的,可以在网上找一下相关信息 内容的回复:


在库文件里,没有crc这个。呵呵

st008

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 21回
  • 年度积分:0
  • 历史总积分:95
  • 注册:2012年11月03日
发表于:2012-12-16 23:27:33
13楼
回复内容:
对:gsja关于还有crc是算出来的,可以在网上找一下相关信息 内容的回复:


谢谢,这一周我好好研究一下。呵呵

gsja

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 175回
  • 年度积分:0
  • 历史总积分:730
  • 注册:2008年8月22日
发表于:2012-12-17 11:23:40
14楼
modbus库文件自动生成crc,不需要你计算,由于加密,你也看不到crc子程序。

980568120

  • 精华:0帖
  • 求助:6帖
  • 帖子:12帖 | 711回
  • 年度积分:0
  • 历史总积分:2147
  • 注册:2013年5月14日
发表于:2013-11-22 21:01:12
15楼

看看,留下记号        

祁盛电气

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 35回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2015年11月19日
发表于:2016-03-23 09:41:06
16楼

望楼主更新解答,感谢分享

laughing110

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 43回
  • 年度积分:131
  • 历史总积分:7740
  • 注册:2015年3月29日
发表于:2016-03-29 20:16:23
17楼

这个才是真正的技术交流  希望工控网上都是这样的人才在交流 顺便 楼上的谢谢了

苏子航

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 33回
  • 年度积分:0
  • 历史总积分:229
  • 注册:2015年4月08日
发表于:2016-08-04 09:31:18
18楼

很基础的东西 不过现在看来已经四年多了  

诚就理想

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 70回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-08-24 23:36:38
19楼

学习一下ABB变频器资料,很好,不错哈

诚就理想

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 70回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2016-09-06 21:13:18
20楼
感觉还行 。很不错。。。。。。



热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页