CP341 422/485 做MODBUS SALVE 首先软件、驱动、硬件到位!组态从站时功能区有:
FC01 05 15 : 读取、强制输出位状态M/Q/T/C 可读可写
FC02读取输入数据位状态 M/ I 只读
FC03 06 16组态输出寄存器数据区 对应DB块 可读可写
FC04组态输入寄存器数据区 对应DB块 只读
设定写参数的限制值
问题1.:如果我想只用功能区FC03 06 16 来发送和接收数据时, 其他功能区地址就全默认0就可以了? 看到论坛上有哥们儿说 (在plc中实现modbus协议还是比较复杂的,尤其是要实现这么多的功能码(要知道不同的功能码有不同的格式),我的建议是只实现03和16,其他的在plc程序中做一小点儿处理就ok了)其他的功能区不用还的处理?
问题2: 功能区如果我想只用FC03 06 16对应的MODBUS地址是不是40001开始的?另外功能区FC03 06 16只需要设定相应DB块,读取长度是不是由主站决定的,格式为Word?
问题3:设定写参数的限制值 与哪些功能区有关? 作用是不是限制数据长度?看了资料现在连似懂非懂都谈不上,可悲啊!!!
问题4 : 资料上说CP341做MOUDBUS从站时,将FB7,FB8添加到程序Blocks中,方法为双击OB1,打开OB1编程画面,从库Libraries->CP PtP->CP341中调用发送程序块FB8和接收程序块FB7,然后再从OB1中删除。因为MODBUS从站通讯要用到这两个功能块。 如果我程序事先就占用了功能块FB8/FB7这两个块, 那么在Libraries->CP PtP->调用时,就得重命名为其他FB号 ,这样再调用FB80时对通讯有不有影响啊?
问题5 :CP341做MOUDBUS从站时,调用FB80后,FB80接口参数那些需要开机初始化,如下图,在OB100中需要置位的是不是CP_START?谢谢!!!
LADDR 硬件组态中的起始逻辑地址,本例中为256
START_TIME 超时初始化定时器,本例中为T1
START_TIME 超时初始化时间值,本例中为1s
OB_MASK 外设访问错误屏蔽位,本例中为M100.0
CP_START FB初始化始能位,本例中为M100.1
CP_START_FM CP_START初始化的上升沿位,本例中为M100.2
CP_START_NDR 从CP写操作位,本例中为M100.3
CP_START_OK 初始化成功标志,本例中为M100.4
CP_START_ERROR 初始化失败标志,本例中为M100.5
ERROR_NR 错误号,本例中为MW102
ERROR_INFO 错误信息,本例中为MW104,可以查看Modbus Slave 手册第10章