1.S7-1200 PLC是否支持Modbus ASCII通信模式?
答:西门子公司不提供支持ModbusASCII通信模式的指令,需要用户按照协议格式自行编程。
2.在“指令>通信处理器”下有两类指令可用于串口通信,应该使用哪个?
答:在选项卡“通信>通信处理器”选项下的S7-1200PLC的串口通信指令分为两类,参考图9-9。
“PtP Communication”,“USS通信”,“Modbus(RTU)”可用于S7-1200PLC中央机架和分布式I/OPROFINET或PROFIBUSET200SP/ET200MP串口模块的通信,但要求CM1241V2.1以上且S7-1200 CPUV4.1以上。而“点到点”,“USS”,“Modbus”只能用于S7-1200PLC中央机架串口模块的通信。
3.“Modbus_Comm_Load”指令能否在启动组织块OB100中调用?
答:“Modbus_Comm_Load”指令调用读取数据记录和写入数据记录等指令来实现与分布式I/O机架上串口通信模块的ModbusRTU通信。该指令为异步读写指令,指令的执行需要多个扫描周期。因此,“Modbus_Comm_Load”指令不建议在启动组织块OB100中调用。
4.使用Modbus_Comm_Load指令对CM1241 RS422/485初始化不成功,报错“16#81AA”,为什么?
答:报错“16#81AA”(无效的工作模式),可能原因为未修改“Modbus_Comm_Load”指令背景数据块中的静态变量MODE的数值。该MODE变量默认为0,代表“全双工(RS232)”工作模式,而实际使用的模块为CM1241RS422/485。串口通信模块和信号板有效的工作模式见表9-18。
解决方法:根据实际的工作模式,在“Modbus_Comm_Load”指令背景数据块中对MODE进行修改。例如,使用RS485工作模式,需要设置MODE=4,如图9-57所示。或通过编程的方式对MODE进行赋值,参考图9-48。
5.S7-1200 PLC CM1241或CB1241Modbus RTU通信是否支持两位停止位?
答:支持。当ModbusRTU通信需要两位停止位时,可在“Modbus_Commload”指令的背景数据块中,修改参数“Static>STOP_BITS”停止位数值为2(默认STOP_BITS=1),如图9-58所示。(www.xing528.com)
图9-57 设置工作模式
图9-58 修改Modbus停止位
6.“Modbus_Master”指令如何实现对310000~365536地址区的读取?
答:当访问的Modbus地址超过39999时,可采用模式104对从站进行读取。当使用模式104时,“Modbus_Master”指令的输入参数“DATA_ADDR”设置的是Modbus地址的偏移量,见表9-25。
表9-25 Modbus_Master输入参数MODE与Modbus地址及偏移量对应关系
7.为什么执行“Modbus_Master”指令,“BUSY”位总是输出为TRUE?
答:当“Modbus_Master”正忙于处理读写请求时,BUSY总是输出为TRUE。出现该现象时请检查“Modbus_Master”指令输入“REQ”是否在Modbus请求完成或报错前被多次触发,或是否有其他多个“Modbus_Master”指令在同时执行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。