西门子plc200与modbus通信。plc做从站,寄存器里的数值上位机怎么读取,地址映射怎么做

如题所述

s7 200有modbus从站库,看看他的帮助文件就知道了
MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。指令完成后立即设定"完成"位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。应当在每次通讯状态改变时执行MBUS_INIT指令。因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。"模式"输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0则将端口0指定给PPI,并禁用Modbus协议。"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。"地址"参数将地址设为1和247之间(包括1和247)的数值。
"奇偶校验"参数被设为与Modbus主设备奇偶校验相匹配。可接受的数值为:

0-无奇偶校验
1-奇数校验
2-偶数校验

"延时"参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为0。如果您在使用带有纠错功能的调制解调器,将延时设为50至100毫秒的数值。如果您在使用扩展频谱无线电,将延时设为10至100毫秒的数值。"延时"数值可以是0至32767毫秒。
MaxIQ参数将供Modbus地址0xxxx和1xxxx使用的I和Q点数设为0至128之间的数值。数值0禁止所有向输入和输出的读取。建议使用的MaxIQ数值是128,该数值可在S7-200
中存取所有的I和Q点。

MaxAI参数将供Modbus地址3xxxx使用的字输入(AI)寄存器数目设为0至32之间的数值。数值0禁止模拟输入的读数。建议使用的MaxAI数值如下,这些数值可允许存取所有的
S7-200模拟输入:

0用于CPU 221
16用于CPU 222
32用于CPU 224、224XP、226和226XM

MaxHold参数设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。例如,为了允许主设备存取2000个字节的V存储器,将MaxHold设为1000个字的数值(保持寄存器)。
HoldStart参数是V存储器中保持寄存器的起始地址。该数值一般被设为VB0,因此HoldStart参数被设为&VB0 (VB0地址)。其它V存储器地址可指定为保持寄存器的起始地址,以便在项目的其它地方使用VB0。Modbus主设备可存取V内存MaxHold个字数,从HoldStart开始。

MBUS_INIT指令完成时,"完成"输出打开。"错误"输出字节包含执行指令的结果。请参阅Modbus从站协议执行错误代码中可能因执行指令而产生的错误条件。

程序举例
LAD
STL
NETWORK 1 // 首次扫描时初始化Modbus从站协议
// 将从站地址设为1,将端口0设为9600波特,将奇偶校验设为偶数,
// 允许存取所有的I、Q和AI数值,允许存取1000台保存寄存器(2000个字节)
// 从VB0开始。
LD SM0.1
CALL MBUS_INIT, 1, 1, 9600, 2, +0, +128, +32, +1000, &VB0, M0.1, MB1

NETWORK 2
// 每次扫描时执行Modbus从站协议

LD SM0.0
CALL MBUS_SLAVE, M0.2, MB2

Modbus 从站寻址
返回顶端
Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能。Modbus从站指令支持下列地址:
00001至00128是映射至Q0.0 - Q15.7的离散输出
10001至10128是映射至I0.0 - I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器

40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。

Modbus地址 S7-200地址
00001 Q0.0
00002 Q0.1
00003 Q0.2
... ...
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
... ...
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
... ...
30032 AIW62
40001 Hold Start
40002 HoldStart+2
40003 HoldStart+4
... ...
4xxxx HoldStart+2 x (xxxx-1)
Modbus从站协议允许您限制Modbus主设备可存取的输入、输出、模拟输入和保持寄存器(V存储器)数量。
MBUS_INIT指令的MaxIQ参数指定Modbus主设备允许存取的离散输入或输出(I或Q)的最大数目。
MBUS_INIT指令的MaxAI参数指定Modbus主设备允许存取的输入寄存器(AIW)的最大数目。
MBUS_INIT指令的MaxHold参数指定Modbus主设备允许存取的保持寄存器(V存储器字)的最大数目。

请参阅MBUS_INIT指令说明,了解有关为Modbus从站设定存储器限制的进一步详情。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-21
可以采用485,的,你可以看下廖常初书吧,上面有例子,上位机无所谓啦,VB,VC,DELPHI,随便挑,呵呵 直接用485的可以通讯的。用自由口。协议自己定,
第2个回答  2011-12-21
参照1楼的第一条,如果嫌麻烦,可以给个邮箱,我发份项目程序给你,里面有编辑说明,包括一份通信数据接口表EXCEL本回答被提问者采纳
相似回答