全国服务热线 15821971992

西门子驱动器代理-2023

发布:2023-02-23 16:43,更新:2023-10-26 04:00

简介:客户要求对变频器的数据只监不控。客户所有的水泵变频器都是丹弗斯VLT HVAC暖通空调系列变频器,功率有大有小,共有29台,但由于modbus通信上还有4台冷水机组,1个冷冻水加药站,这样从站超过了32台,怕通信不会成功,及其它方面原因,所以在设计之初就采用2台224分开来进行通信,一台带23台变频器及加药站,一台带6台变频器及4台冷水机组,每台224再挂以太网模块与上位机WinCC通信。从200的Micro 'n Powerv1.3帮助上知道200的通信口通信距离为50米,所以设计之初就提料买了2台西门子485中继器,这样实际电气隔离。以前在网上看到过文章,多台200通过通信口通信,没使用电气隔离造成200全部损坏,具体原因就不得而知了

实施过程:

1、由于以前没有modbus通信经验,所以过程是非常的艰难。由于我一直用笔记本,没有串口,怕调试时出现麻烦事,所以买了摩莎的UPort-1250I    USB转双串口,次买回来新的啊,指示灯就不好用,又换了一次。在现场把两个串口连起来,使用Modscan32调试工具模拟modbus通信,通信成功,这样有了一个大致的概念。

2、与现场抄表人员沟通(他们公司规定变频器的运行数据进行抄录),确定读取变频器的6个数据,如下:

参数编号 名称 单位 转换指数 数据类型

1501 运转时间 0 h 74 Uint32

1502 千瓦时计数器 0 kWh 75 Uint32

1610 功率 [kW] 0.00 kW 1 int32

1613 频率 0.0 Hz -1 Uint16

1614 电动机电流 0.00 A -2 int32

读取变频器的运行状态

线圈 0 1

33 控制未就绪 控制就绪

34 变频器 未就绪 变频器 就绪

35 惯性停止 安全功能关闭

36 无报警 报警

37 未使用 未使用

38 未使用 未使用

39 未使用 未使用

40 无警告 警告

41 不在参考值下 在参考值下

42 手动模式 自动模式

43 超出频率范围 在频率范围内

44 已停止 运行

45 未使用 未使用

46 无电压警告 电压警告

47 不在电流极限内 电流极限

48 无热警告 热警告

高低字节互换后,由高到低对应线圈为48----33

17.jpg关于丹弗斯modbus通信时寄存器地址上的问题。

通过在网上搜索,丹弗斯变频在modbus通信时,寄存时的地址要功能号乘以10减1。如,变频器的频率地址为1613就是1613乘以10减1等16129  当然这也造成了我后面的麻烦。这里假设你还不知道西门子200读取时是只乘以10不用减1,这也坑了我一下。

想着先用Modscan32调试工具读取单台变频器试试吧,发现Modscan32不支持《1613乘以10减1》这么大的地址,这怎么办?在网上找啊找,找到一个《CRC16自动计算软件_MODBUS》软件,通过计算出要发送的数据包,通过串口调试软件发给变频器,经过几次调试,通过转换回传回来的数据,发现可以通过计算机串口与变频器通信了。这时用的速率是变频器高的115200。

下面就开始在单台PLC编程读取变频器频率。

modbus的MBUS_MSG指令的Addr填写16129,发现无法通信,仔细看那个网上的文档才发现200不需要减1,于是改成16130,发现还是无法读取,这是什么原因?又开始看各种资料。后在Micro 'n Powerv1.3里找到,《Modbus Master 协议库支持超过 9999 的保持寄存器地址。地址范围为 400001 - 465536》,这样16130肯定是超过9999了,改成416130后,可以通信了。

问题又来了。

这样变频器寄存器的地址就变成了运转时间415010  千瓦时计数器415020  功率 416100,本来寄存器地址就不连续,读起来不方便,这回更是拆成了6个。唉,先编程再说吧。先编的是23台变频器224,编着编着发现编译保存时,输出窗口出现一个警告,说程序太大14000多字节,不适合224,当时就哭了。想想也是23台变频器,每台6条指令,再加上数值的处理,程序量很可观啊,怎么办,首先想到的是换226,付款订226,226在快递中的时候。想到了西门子的指针,想着把变频器的从站地址放入V区,再用指针去读取V区里的变频器的从站地址,读到地址23就返回到1,这样就6条读取指令,可大大减小程序块。可是指针我从来没用过啊,于是看指令方面的知识,看看发现从站地址是字节型,心想能不能每读完一台变频器的数据后,从站地址加1,就是字节型加上,发现STEP-7-MicroWIN没有字节整数型运算指令,无意中发现字节递增指令INC_B,这样就可实现每次地址加1。程序修改后大小为9400左右。

下载后进行通信,使用的速率为115200,无法通信,又是什么原因?用计算机串口在RS485中继器网络2上检测不到数据,网络1连接的PLC,网络1上有数据。一共两个中继器,互换一下看看吧,还是不好用。说一个这两个中继器,一个是朋友的工程余货,一个是在淘宝上淘的二手(这里可以鄙视我一下)。两个中继器的接线,开关位置都没问题,就是通信不上,原因还是待查。大胆的将CPU通信直接连入网络2,发现PLC指令还是显示从站无响应,因为此时速率还是115200,全部改成9600试试吧,改成后全部都可以读取啦。非常高兴的说。现在速率运行在38400的速度上,轮询23台变频的总时间在8秒左右,只监不控可以了。

话说这样就结束了吗,还没有。可以看上面变频出来的数据不适合上位机监视,所以要经过数据转换。我程序的形式是每次读取一台变频器的数据传出,再进行整体的数据转换,发现每次从地址23再地址1时全部变频的数据会向后串一台变频器,就是地址1的数据是地址23的,只是一个周期。心里这应该是程序中有些指令是多周期的导致数据还没转换完就读取下一台的数据了。接着改程序,改成每次读取的数据传出,再用sm0.0启用数据转换。不再有上述现象。

还没结束,发现转换后变频器的频率不正确,而从转换前的数据是正确的。可以看变频器的频率数据是Uint16,要变成浮点数才可以。原程序是将Uint16格式的VW传出到VW,发现传出后的VW里的数值就和前面的不一样的,这个真的不知道为什么了,还请高手解答一下。如何解决的呢,我不再把数值传出,传送指令前要加根据从站地址接通的上升沿,我直接将Uint16格式转换成双整数DI,再转换成浮点数,再用浮点数乘以0.1,后成功得到频率。

后对整个程序进行整理,大功告成。

1:采样周期默认设置为1S,实际编程中这个应该怎么进行设置?
2:必须用SM0.0调用,可是我想在一段时间内才进行PID运算,怎么设置?
3:当偏差变大,则PID输出结果也变大;那么当设定值小于过程值,即偏差变成负值时候,PID输出结果怎么变化?
4:S7-200用向导编程PID之后,直接用SM0.0调用就可以了吗?我看有的资料说还要写入回路控制 0才能运行?。
5:向导生成PID输出的范围是多少?如果用这个输出值来控制一个+-10V的阀门,怎么把PID输出转化到+-10V上面?

6:程序中的PID子程序运行时,怎么能让它运行20MS,然后退出运行?

答:1:采样周期默认设置为1S,实际编程中这个应该怎么进行设置?
、编程时指定的PID控制器采样时间必须与实际的采样时间一致。S7-200中PID的采样时间精度用定时中断来保证。
、定时中断:
S7-200有四个定时中断定时器,两个特殊寄存器(SMB34/SMB35)和两个定时器( T32/T96)中断。中断定时计时**,可以用来执行模拟量定时采样等任务。
2:必须用SM0.0调用,可是我想在一段时间内才进行PID运算,怎么设置?
定时中断(SMB34/SMB35)长定时为255ms,如何实现更长时间的定时?
可以采用T32/T96中断,长时间可到32.767s。在定时中断服务程序中对进入中断的次数进行计数,也能实现更长时间的中断延时。
3:当偏差变大,则PID输出结果也变大;那么当设定值小于过程值,即偏差变成负值时候,PID输出结果怎么变化?
、过程变量超过设定值很多就会很大的超调。产生原因:积分时间(Integral time)可能太高
解决方法:降低积分时间 。
、得到一个非常不稳定的PID。产生原因:如果用了微分,可能是微分参数有问题。没有微分,可能是增益(Gain)值太高。
解决方法:
调整微分参数到0-1的范围内 ,根据回路调节特性将增益值降低,低可从0.x 开始逐渐增大往上调,直到获得稳定的PID。
4:S7-200用向导编程PID之后,直接用SM0.0调用就可以了吗?我看有的资料说还要写入回路控制 0才能运行?
详见上传的图片。
5:向导生成PID输出的范围是多少?如果用这个输出值来控制一个+-10V的阀门,怎么把PID输出转化到+-10V上面?
应用在指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7-200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出的转换。
6:程序中的PID子程序运行时,怎么能让它运行20MS,然后退出运行?
PID需要有一个调节过程,必须是根据反馈连续地调节才能趋于稳定。不知楼主的用意是什么?限时20MS,对于信号的反馈时间与硬件有关。

联系方式

  • 地址:上海杨浦 上海市松江区广富林路4855弄88号3楼
  • 邮编:200093
  • 电话:15821971992
  • 经理:聂聪
  • 手机:15821971992
  • 传真:021-33556143
  • QQ:2724917714
  • Email:2724917714@qq.com