邯郸西门子一级代理商
远程站(ET200SP)的组态
为了换的更快,每套模具都安装了对应的ET200SP作为远程站。由于模具点数不用,所以远程站IO组态也不相同,主要还是穷,能省一点是一点,全都配成大量也就没这些事了。在软件中组态上所有的不同的IO站。

软件中有四种组态,但是实际中只有两个模具能放到设备上,如何确定哪个站存在,就用到了DeviceStates指令。
DeviceStates: 读取 IO 系统的模块状态信息


DeviceStates指令的参数说明如下图,我们使用的是DP通讯,所以截图里也都是DP通讯的。

我的DeviceStates指令使用过程中,比较需要注意的是MODE参数。由于我是结合D_ACT_DP(启用禁用IO)使用的,开始我用模式2(诊断远程站是否故障来判断是否存在)。但是D_ACT_DP指令禁用掉某个站之后,会自动认为这个站不存在故障,所以诊断是否存在就不起作用了。后来改成了模式4(从站是否存在),就适合我的情况了。也是在调试过程中发现的。
对于DP通讯来说,远程站的DP地址是多少,那么这个STATE数组参数就选择多少

确定好是哪个模块在线之后,就可以根据需要各种赋值了。(这块是不是有更好的办法我还不太懂,我觉得软件里组态的远程IO通道都是的,还是得赋值给变量去做运算)。

确定好哪个远程站在线以后,程序已经可以用了,但是不在线的远程站会使CPU报故障,红灯闪烁,这时用D_ACT_DP指令解决这个问题。

MODE是1,代表启用,是2,代表禁用。使用IO诊断DeviceStates指令判断是给1还是2
Modbus通讯标准协议可以通过各种传输方式传播,如RS-232C、RS-485、光纤、无线电等。Modbus具有两种串行传输模式,ASC2和RTU模式。支持Modbus协议的一般都支持RTU模式,通信双方(主站和从站)必须同时支持上述模式中的一种。一般都使用RTU模式。
Modbus是一种单主站的主/从通信模式,Modbus网络上只能有一个主站存在(注意和PPI协议的区别),主站在Modbus网络上没有地址,从站的地址范围为0-247,其中0为广播地址,从站的实际地址范围为1-247。
主站
初始化
使用MODBUS通讯协议,必须首先初始化程序,使用MBUS_CTRL可初始化、监视或禁用Modbus通讯,在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定'完成'位,才能继续执行下一条指令。在每次扫描且 EN输入打开时执行该指令。
MBUS_CTRL指令必须在每次扫描时(包括扫描)被调用,
Mode('模式')输入数值选择通讯协议。输入值1(可用SM0.0替代或者直接用数值1)将CPU端口分配给Modbus协议并启用该协议。输入值0将CPU端口分配给PPI系统协议并禁用Modbus协议。
Baud (波特率)一般选择9600。
Parity (奇偶校验) 参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。一般选择偶校验2.
Timeout('超时')参数设为等待来自从站应答的毫秒时间数。'超时'数值可以设置的范围为1毫秒到32767毫秒。典型值是1000毫秒(1秒)(一般都设定为1000)
。'超时'参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。
'超时'参数用于确定Modbus从站是否对请求做出应答。'超时'值确定Modbus主设备在发送了请求的后一个字符后,将要等待多长时间才会有应答的个字符。如果在'超时'规定的时间内至少收到应答的一个字符,Modbus主设备将从Modbus从站接收到整个应答。
Done(完成) MBUS_CTRL指令完成时,'完成'输出打开。
Error(错误) 输出包含执行该指令的结果。下表定义了在执行MBUS_CTRL指令时会产生的错误条件。指定一个字节来存放错误代码。
错误代码 说明
0 无错误
1 奇偶校验选择无效
2 波特率选择无效
3 超时选择无效
4 模式选择无效
初始化完成!
西门子代理商,西门子PLC代理商,西门子中国代理商。西门子授权代理商,西门子一级代理商