技术论坛

 说说西门子200smart modbus自由口通讯的那些事12

返回主题列表
作者 主题
WWCWWC
至圣

经验值:79155
发帖数:9098
精华帖:157
楼主    2016-12-16 10:05:47
主题:说说西门子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次分别发送的字符数据,在第二次发送的第一个字符用了“*”加以区分。

附:当发送数据设置最大值时,最后一次发送结束符后面出现了一个“惊叹号”,而我在数据发送区内并不编辑这个符号,可能的原因是系统自动生成的一个提示符,需要引起注意。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。