各位高手,新手求教:
设备:PLC:S7-200smart ST60
触摸屏: Smart line 1000IE V3
智能电表 安科瑞 PZ80L-AI3/C(电流表) 7块 ; PZ80L-AV3/C(电流表) 3块
通讯:智能电表为RS485 modbus RTU
目的:将10块电表的数据读到PLC,然后在触摸屏上显示
由于刚开始学习,就照抄了网上的一个轮询程序,http://www.diangon.com/wenku/PLC/ximenzi/201312/00007264.html
但是在进行对DataPtr进行定义时,比如&VB1000,或者&VB120,总是显示:指定的地址符号无效。请检查支持的存储区和有效地址。之前在 文件—库—存储器—建议地址 中 库存储器分配为了VB0-VB285。&VB100能用,但是我有21个电流,9个电压数据要保存啊。
请教一下:DataPtr 这里应该怎么定义啊,试了好多次都不成功。大神救命啊!
或者哪位大神有现成的安科瑞的轮询程序,价格优惠一些转给小弟也行啊!谢谢
微信:wangpaopao1984
Network 1
// 程序段注释
LD SM0.1
R M2.0, 8
R M4.0, 8
R M0.0, 2
Network 2
LD M0.0
EU
S M0.1, 1
Network 3
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL SBR1, L63.7, 9600, 0, 1, 1000, M0.0, MB1
Network 4
LD M0.1
O M2.3
= L60.0
LD M0.1
EU
LD M2.3
EU
OLD
= L63.7
LD L60.0
CALL SBR2, L63.7, 2, 0, 40001, 3, &VB100, M2.1, MB3
Network 5
LD M2.1
R M2.3, 1
R M0.1, 1
Network 6
LD M2.1
= L60.0
LD M2.1
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 3, 0, 40001, 3, &VB100, M2.2, MB4
Network 7
LD M2.2
R M2.1, 1
Network 8
LD M2.2
= L60.0
LD M2.2
EU
= L63.7
LD L60.0
CALL SBR2, L63.7, 4, 0, 40001, 3, &VB100, M2.3, MB5
Network 9
LD M2.3
R M2.2, 1
图片说明:
最佳答案
这个问题显然是寄存器地址重置了,库存储区地址修改一下再重新重新用户程序。
调用mbus_msg指令读取2#、3#从站数据的数据存储区需要分开,如&VB100/&VB200
提问者对于答案的评价:
重新分配存储区,然后保存关闭软件,重启后恢复正常。非常感谢。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc133155.html