找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
我用s7400的CP414-2-DP 的PLC 通过PROFIBUS与MM440系列变频器通讯。
第一步 我找到了相关的GSD文件,已经安装好。
硬件组态中我做了一个M440 地址为3. 选择的4PKW 2PZD(PPO1)
地址如下: I Q
4PKW 2PZD(PPO1) 512 519
->4PKW 2PZD(PPO1) 520 523
第二步 我建立了DB1
Array[0..28] word
在OB1中调用SFC14 和SFC15
网络1
CALL "DPRD_DAT"
LADDR :=W#16#200
RET_VAL:=MW4
RECORD :=P#DB1.DBX0.0 BYTE 8
NOP 0
网络2
CALL "DPWR_DAT"
LADDR :=W#16#200
RECORD :=P#DB1.DBX0.0 BYTE 8
RET_VAL:=MW6
NOP 0
地址为16进制的200 10进制的512
以上做好之后我要读取MM440的频率、电流等如何写程序?(问题1)
实际频率是 r0021
我要读取是不是可以这样写:
网络 3
L W#16#6015
T DB1.DBW 0
NOP 0
把r0021转换成16进制为15
网络4
L W#16#0
T DB1.DBW 2
NOP 0
网络5
L W#16#0
T DB1.DBW 4
NOP 0
网络6
L W#16#1000
T DB1.DBW 6
NOP 0
这里的L W#16#0 不知道写的对不对 应该写什么?(看手册这上面写着:参数页选择位)(问题2)
如果以上存在的话
是不是把r0021的值存储到DB1.DBW 2 和DB1.DBW 4里面了如果不是应该如何
(问题3)
如果以上写的正确 如何读取别的值 如 运行电流 如果按照以上方式存储DB1是不是需要建立的array 更大?(问题4)
我如何写入值
设定值的时候比如P1000
网络7
L W#16#6015
T DB1.DBW 28
NOP 0
把P1000转换成16进制为3E8
网络4
L W#16#3E8
T DB1.DBW 30
NOP 0
网络5
L W#16#0
T DB1.DBW 32
NOP 0
网络6
L W#16#1000
T DB1.DBW 34
NOP 0
我只要在DB1.DBW 32 DB1.DBW 32 写入相应的值就可以对不对(问题5)
如果我写入多个参数怎么办,DB1岂不是要建立很多参数(问题6)
最后一个问题如果读取多个变频器 是不是按照上面读取很多次或者写入很多次 只要修改变频器的地址就可以了?(或者建立个FB、FC块在外面调用)。
由于本人是女生刚刚接触这些所以很多都不会,又想学习,前几天问了问题,没有我满意的答案,可能是我表达不清楚吧,如果哪位好心人能够解答,我在此表示感谢。
另外那位大哥大姐有案例,或者给我写个类似的程序标上注释,本人感激不尽。
另外希望西门子的工程师们也能关注一下,我没有多少分直接都给上了,谢谢大家。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
这个是6SE7的控制方式 和你问的大致思路一样
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.
等等.
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!