| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79155 发帖数:9098 精华帖:157 |
楼主
主题:说说西门子200smart modbus自由口通讯的那些事12
说说西门子200smart modbus自由口通讯的那些事12 上文说到利用起始符和结束符作为消息接收条件时,所需要注意的一些问题。这次来说说SMB94,前文一直沿用定义SMB94 = 255(一般按实际所需要的最大数值填写比较合适),含义是一次发送或者接收最大的数据量。如果在发送或者接收中用户不经意的将该字节数写了大于255或者通讯要求中发送、接收的数据需要要大于255怎么办?当发送指令、接收指令的TBL管脚值大于255时,系统会报错(因为是一个字节数最大可以设置的范围为0-255)。如果通讯要求发送、接收数据大于255时,可以分批进行发送、接收的操作来实现。 假设,200smart PLC需要发送一串大于255个的数据值给串口调试软件,采用分批发送的发送如何进行。 编程思路: 初始通讯参数及指针;主程序调用初始化;发送完成中断程序中连续交替发送数据。 1) 设置通讯口SMB30 = 16# 09 自由口;9600;8个数据位;1个停止位;无效验 2) 定义发送数据最大SMB94 = 255 3) 初始化指针地址,启用指针 4) 启用发送完成中断,中断事件号9 5) 开中断 6) 启用发送指令XMT 程序: 初始化子程序:用指针偏移发送地址区,VB0和VB256循环 主程序调用初始化子程序: 发送完成中断交替发送程序: 数据块编辑待发送的字符: 打开串口调试软件,设置通讯口与SMB30一致,并启动,启动PLC运行,图示: 串口调试软件接收200smart PLC数据发送区的字符已成功,见红色框内。为区分是2次分别发送的字符数据,在第二次发送的第一个字符用了“*”加以区分。 附:当发送数据设置最大值时,最后一次发送结束符后面出现了一个“惊叹号”,而我在数据发送区内并不编辑这个符号,可能的原因是系统自动生成的一个提示符,需要引起注意。 |