模拟量输出到仪表

小弟接触PLC不久,对模拟量模块的使用不是非常熟悉。
现有以下疑问,现碰到一很简单的课题,因为不熟悉所以无从下手。
其中有一条就是PLC与变频器进行PROFIBUS通讯,将采集到的变频器转速通过PLC的模拟量模块输出点显示在一个终端仪表上。
请问我该采用怎样的硬件搭配和软件手段呢?
或者各位专家给我点启发,自己研究可以,现在真的是概念不清啊,谢谢。

最佳答案

首先一条:你的变频器上必须有Profibus-DP通讯卡,通过S7-300(再次讨论的问题基本都是西门子的PLC)CPU上的DP接口,将变频器连接起来,终端电阻设置好(需要一对DP接头,一端连接CPU上的DP口,一段连接变频器上的DP接口)。然后设置变频器上的相关通讯参数(通讯格式、站点号等),在Step7的硬件组态中将该变频器的GSD安装好,拖到硬件组态的DP网上。硬件组态种对应设置好通讯方式(就是PPO类型)。
    其次就是利用类似PIW方式将变频器的速度信号读过来,然后利用FC106功能块,通过PQW相关通道送出来4-20mA标准信号,将该信号接到你的数显表中,在数显表中设置对应好速度量程即可。
    以下是个S7300与变频器通讯的例子说明:
1.通讯方式的设定:PPO 4,这种方式为0 PKW/6 PZD,输入输出都为6个PZD,(只需要在STEP7里设置,变频器不需要设置); 
PROFIBUS的通讯频率在变频器里也不需要设置,PLC方面默认为1.5MB. 
在P60=7设置下,设置P53=3,允许CBP(PROFIBUS)操作. 
P918.1设置变频器的PROFIBUS地址. 

2.设置第一与第二个输入的PZD为PLC给变频器的控制字,其余四个输入PZD这里没有用到. 
设置第一与第二个输出的PZD为变频器给PLC的状态字,设置第三个为变频器反馈给PLC的实际输出频率的百分比值, 
第四个为变频器反馈给PLC的实际输出电流的百分比值,其余两个输出PZD这里没有用到. 

3.PLC给变频器的第一个PZD存储在变频器里的K3001字里. 
K3001有16位,从高到底为3115到3100(不是3001.15到3001.00). 
变频器的参数P554为1时变频器启动为0时停止,P571控制正转,P572控制反转. 
如果把P554设置等于3100,那么K3001的位3100就控制变频器的启动与停止,P571设置等于3101则3101就控制正转, 
P572设置等于3102则3102就控制反转.(变频器默认P571与P572都为1时正转,都为0时为停止). 
经过这些设置后K3001就是PLC给变频器的第一个控制字. 
此时K3001的3100到3115共16位除了位3110控制用途都不是固定的,所以当设置P554设置等于3101时则3101可以控制启动与停止, 
P571等于3111时则3111控制正转,等等. 
K3001的位3110固定为“控制请求”,这位必须为1变频器才能接受PLC的控制讯号,所以变频器里没有用一个参数对应到这个位, 
必须保证PLC发过来第一个字的BIT 10为1. 
这里设置为:P554=3100,P571=3101,P572=3102,当PLC发送W#16#0403时(既0000,0100,0000,0011)变频器正转. 

4.PLC给变频器的第二个PZD存储在变频器里的K3002字里. 
变频器的参数P443存放给定值. 
如果把参数P443设置等于K3002,那么整个字K3002就是PLC给变频器的主给定控制字. 
PLC发送过来的第二个字的大小为0到16384(十进制),(对应变频器输出的0到100%),当为8192时,变频器输出频率为25Hz. 

5.变频器的输出给PLC的第一个PZD字是P734.1,第二个PZD字是P734.2,等等. 
要想把PLC接收的第一个PZD用作第一个状态字,需要在变频器里把P734.1=0032(既字K0032), 
要想把PLC接收的第二个PZD用作第二个状态字,需要在变频器里把P734.2=0033(既字K0032). 
(K0032的BIT 1为1时表示变频器准备好,BIT 2表示变频器运行中,等等.) 
(变频器里存贮状态的字为K0032,K0033等字,而变频器发送给PLC的PZD是P734.1,P734.2等) 
在变频器里把P734.3=0148,在变频器里把P734.4=0022,则第三个和第四个变频器PZD分别包含实际输出频率的百分比值 
和实际输出电流的百分比值 

6.程序:(建立DB100,调用SFC14,SFC15,6SE7的地址为512既W#16#200) 
A. 读出数据 
CALL "DPRD_DAT" 
LADDR :=W#16#200 
RET_VAL:=MW200 
RECORD :=P#DB100.DBX0.0 BYTE 12(读取12个BYTE) 
NOP 0 

B. 发送数据 
CALL "DPWR_DAT" 
LADDR :=W#16#200 
RECORD :=P#DB100.DBX12.0 BYTE 12(写入12个BYTE) 
RET_VAL:=MW210 
NOP 0 

C. L "DB100".DBW0 
T "MW20" 
NOP 0 

D. L "DB100".DBW2 
T "MW22" 
NOP 0 

则:DB100.DBX 13.0 控制启动与停止; 
DB100.DBX 13.1 控制正转; 
DB100.DBX 13.2 控制反转; 
M21.1 变频器READY; 
M21.3 变频器FAULT.
西门子控制字和状态字都是32位,实际上用的位数不多,控制字用到的有合闸、急停、运行允许、故障复位、点动、PLC控制等,状态字用到的有开机准备、运行准备、运行信号、故障、报警等。这是比较简单的控制,如果要在线参数变更就比较复杂了。
最简单的学习方法就是看看PLC和变频器的接口配置,运行中用那些位有用,停止时那些位有用,启动和停止过程中那些位在变化,相信这样去学会比看大全理解的要快PLC与变频用DP通讯

硬件组态
    1. 将MASTERDRIVES CBPCBP2 加入组态
    2. Profibus 地址


    1. 将MICROMASTER 4 加入组态
    2. Profibus 地址

Top 

选择数据格式
    1. MASTERDRIVE中可供选择的PP0类型
    2. IQ address


    1. MICROMASTER 4 中可供选择的数据格式
    2. IQ address

Top 

Step 7 中的编程

创建数据块DB1


    说明
    1.在Step7 中对PKW (参数区)读写参数时调用SFC14和 SFC15
    2. SFC14(“DPRD_DAT”)用于读Profibus 从站的数据
    3. SFC15(“DPWR_DAT”)用于将数据写入Profibus 从站
    4. W#16#100(即256)是硬件组态时PKW的起始地址 
Top 

程序举例1
    1. 读参数r015

    注PKW ,IND 的详细说明见附录


    1. W#16#100(即256)是硬件组态时PKW的起始地址
    2 .将从站数据读入DB1.DBX0.0 开始的8个字节(P#DB1.DBX0.0 BYTE 8)
                     PKE - DB1.DBW0
                     IND - DB1.DBW2
                    PWE1 - DB1.DBW4 参数值的高字位
                    PWE2 - DB1.DBW6 参数值的低字位
    3 .将DB1.DBX28.0 开始的8个字节写入从站(P#DB1.DBX28.0 BYTE 8)
                      DB1.DBW28 - PKE
                      DB1.DBW30 - IND
        参数值的高字位 DB1.DBW32 - PWE1
        参数值的低字位 DB1.DBW34 - PWE2

    注PKW ,IND 的详细说明见附录

更多内容下载请登陆:http://www.plc2008.com   电邮件:plc808@163.COM

程序举例2 (读参数数组的数值)
    2. 读参数P401.2

    注PKW ,IND 的详细说明见附录


    1. W#16#100(即256)是硬件组态时PKW的起始地址
    2 .将从站数据读入DB1.DBX0.0 开始的8个字节(P#DB1.DBX0.0 BYTE 8)
                    PKE - DB1.DBW0
                    IND - DB1.DBW2
                   PWE1 - DB1.DBW4 参数值的高字位
                   PWE2 - DB1.DBW6 参数值的低字位
    3 . 将DB1.DBX28.0 开始的8个字节写入从站(P#DB1.DBX28.0 BYTE 8)
                      DB1.DBW28 - PKE
                      DB1.DBW30 - IND
        参数值的高字位 DB1.DBW32 - PWE1
        参数值的低字位 DB1.DBW34 - PWE2

    注PKW ,IND 的详细说明见附录
Top 

程序举例3 (读须置位参数页的参数)
    3. 读参数U001.2

    注PKW ,IND 的详细说明见附录


    1. W#16#100(即256)是硬件组态时PKW的起始地址
    2 .将从站数据读入DB1.DBX0.0 开始的8个字节(P#DB1.DBX0.0 BYTE 8)
                     PKE - DB1.DBW0
                     IND - DB1.DBW2
                    PWE1 - DB1.DBW4 参数值的高字位
                    PWE2 - DB1.DBW6 参数值的低字位
    3 . 将DB1.DBX28.0 开始的8个字节写入从站(P#DB1.DBX28.0 BYTE 8)
                      DB1.DBW28 - PKE
                      DB1.DBW30 - IND
        参数值的高字位 DB1.DBW32 - PWE1
        参数值的低字位 DB1.DBW34 - PWE2

    注PKW ,IND 的详细说明见附录
Top 

程序举例4(写参数)
    4. 写参数P401.1 (将W#16#1000 写入P401.1中)

    1.将W#16# 8191 写入DB1.DBW28 (PWE)

    注PKW ,IND 的详细说明见附录


    1. W#16#100(即256)是硬件组态时PKW的起始地址
    2 .将从站数据读入DB1.DBX0.0 开始的8个字节(P#DB1.DBX0.0 BYTE 8)
                     PKE - DB1.DBW0
                     IND - DB1.DBW2
                    PWE1 - DB1.DBW4 参数值的高字位
                    PWE2 - DB1.DBW6 参数值的低字位
    3 . 将DB1.DBX28.0 开始的8个字节写入从站(P#DB1.DBX28.0 BYTE 8)
                      DB1.DBW28 - PKE
                      DB1.DBW30 - IND
        参数值的高字位 DB1.DBW32 - PWE1
        参数值的低字位 DB1.DBW34 - PWE2

    注PKW ,IND 的详细说明见附录
Top 
对PZD (过程数据)的读写
    说明
    1. 在Step7 中对PZD (过程数据)读写参数时调用SFC14和SFC15
    2. SFC14(“DPRD_DAT”)用于读Profibus 从站的数据
    3. SFC15(“DPWR_DAT”)用于将数据写入Profibus 从站
    4. W#16#108(即264)是硬件组态时PZD的起始地址
    5. 对特殊结构的PZD 可用PQW , PIW 进行读写
Top 

程序举例5 对PPO5 中10PZD的读写


    DB1中与PZD相对应的数据字

    1.在P918 中设置Profibus 地址,必须与Step 7 中设置相同.地址不能重复.
    2. 控制字第十位置“1”. PZD1 = W#16#X4XX 

提问者对于答案的评价:
谢谢,尝试一下。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc310584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午2:40
下一篇 2020年11月1日 下午2:40

相关推荐