s7 200如何往一个字节中写入一个字符?

请教各位老师,我测试了一个自由口发送I/O状态的程序,但遇到个问题,我无法用MOVB   'F', VB60写一个字符到一个字节中,编译成功的,但下载到PLC中就跳ERROR了。请问各位老师该怎么处理?
PS:小程序在下面,主要想实现把I/O口用16进制字符串形式通过自由口发送到上位机,但基础较差,不会将一个字节内数据转成字符串,只好用笨办法读表,各位老师有什么好方法吗?还请不吝指导,分比较少,先谢谢了。
主程序:
LD     SM0.1
CALL   Initialize:SBR0

Initialize:SBR0程序:
LD     SM0.0
MOVB   16#09, SMB30
MOVB   100, SMB34
ATCH   INT_0:INT0, 10
ENI

IO_CONVERT:SBR1程序:
//I/O状态映射表
LD     SM0.0
LPS
AB=    VB50, 16#0F
MOVB   'F', VB60
LRD
AB=    VB50, 16#0E
MOVB   'E', VB60
LRD
AB=    VB50, 16#0D
MOVB   'D', VB60
LRD
AB=    VB50, 16#0C
MOVB   'C', VB60
LRD
AB=    VB50, 16#0B
MOVB   'B', VB60
LRD
AB=    VB50, 16#0A
MOVB   'A', VB60
LRD
AB=    VB50, 16#09
MOVB   '9', VB60
LRD
AB=    VB50, 16#08
MOVB   '8', VB60
LRD
AB=    VB50, 16#07
MOVB   '7', VB60
LRD
AB=    VB50, 16#06
MOVB   '6', VB60
LRD
AB=    VB50, 16#05
MOVB   '5', VB60
LRD
AB=    VB50, 16#04
MOVB   '4', VB60
LRD
AB=    VB50, 16#03
MOVB   '3', VB60
LRD
AB=    VB50, 16#02
MOVB   '2', VB60
LRD
AB=    VB50, 16#1
MOVB   '1', VB60
LPP
AB=    VB50, 16#0
MOVB   '0', VB60

//INT0中断程序
TITLE=INT0中断程序
Network 1 
// 将IB0低四位取反再取出,存于vb20按照格式0000XXXX
LD     SM0.0
MOVB   IB0, VB10
AENO
INVB   VB10
AENO
MOVB   VB10, VB20
ANDB   2#1111, VB20
Network 2 
// 将IB0高四位取反再取出,存于vb25按照格式0000XXXX
LD     SM0.0
MOVB   VB10, VB24
AENO
ANDB   2#11110000, VB24
AENO
MOVB   VB24, VB25
SRB    VB25, 4
Network 3 
// 将IB1低四位取反再取出,存于vb30按照格式0000XXXX
LD     SM0.0
MOVB   IB1, VB11
AENO
INVB   VB11
AENO
MOVB   VB11, VB30
ANDB   2#1111, VB30
Network 4 
// 将IB1高四位取反再取出,存于vb35按照格式0000XXXX
LD     SM0.0
MOVB   VB11, VB34
AENO
ANDB   2#11110000, VB34
AENO
MOVB   VB34, VB35
SRB    VB35, 4
Network 5 
// 将vb0低4位转化成字符串,VB50为参数入口,vb60为结果出口,下同
LD     SM0.0
LPS
MOVB   VB20, VB50
AENO
CALL   SBR1
LPP
MOVB   VB60, VB105
Network 6 
// 将vb0高4位转化成字符串
LD     SM0.0
LPS
MOVB   VB25, VB50
AENO
CALL   SBR1
LPP
MOVB   VB60, VB104
Network 7 
// 将vb1低4位转化成字符串
LD     SM0.0
LPS
MOVB   VB30, VB50
AENO
CALL   SBR1
LPP
MOVB   VB60, VB103
Network 8 
// 将vb1高4位转化成字符串
LD     SM0.0
LPS
MOVB   VB35, VB50
AENO
CALL   SBR1
LPP
MOVB   VB60, VB102
Network 9 
LD     SM0.0
MOVB   '>', VB101
MOVB   '@', VB106
Network 10 // 网络标题
// 将16通道I/O口接通情况发送至自由口,协议为:<+16位通道I/O状态+@
LD     SM0.0
MOVB   6, VB100
XMT    VB100, 0

问题补充:
WWCWWC:你好,感谢回答。我只用到自由口定时发送数据,上位机只接收。还需要通过SMB86/SMB88/SMB89设定协议的起始符和结束符吗?我在中断程序中设定的协议起始符和结束符是上位机做判断一串数据用的。
您能否留个邮箱或者发封邮件给我,我想关于这个问题详细问问,这里回复不了,交流不友好,我邮箱是:baobao13579190@sina.com
谢谢!

最佳答案

没有plc无法测试,只能凭自己以前做过的认识。
字符写入到VB区是没有问题的,只能总感觉你调用定时中断SMB34内容太多;你定义了起始、结束符标记,但没有定义标记值,即SMB86/SMB88/SMB89,这些定义在初始化子程序(SBR_0)中定义,而不是在中断程序的网络9定义的。
补充问题回复:
要的,这个是通讯的规约。用户只能选择起始、结束符;空闲线时间或者两者的结合。

提问者对于答案的评价:
老师,我单独试通讯是成功的(就是把I/O_CONVERT程序屏蔽)PLC也亮绿灯,单独新建一个程序就测试这个语句不涉及通讯就不行,PLC亮红灯,请问是语句格式错了还是什么问题?
LD     SM0.0
MOVB   ''F'', VB60
您能给我发个邮件吗?我想向您详细问下感谢!我邮箱是:baobao13579190@sina.com

最佳答案作者回复:
写入字符是用单引号,如‘F’,这个你应该注意。另外你采用16#制数传送试试。
LD             SM0.0
MOVB       16#0F,VB60

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc180430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月24日 下午6:58
下一篇 2017年6月24日 下午6:59

相关推荐

  • DB块里的变量 注释怎么复制到另一个项目

    DB块里的变量注释可以保存到一个文件,然后复制到另一个项目吗?就像符号表那样方便。因为新项目跟原项目的DB不完全一样。不会要打开两个项目,一个DB一个DB复制吧 最佳答案 可以打开…

    自动化系统综合 2017年11月25日
  • 程序执行流程

    如附图程序,当红笔圈出的程序执行后,是否接着执行绿笔圈出的程序,一直执行到程序块结束。程序标号只有在执行跳转指令时才有用,否则就作为一般的程序逐条执行。 图片说明:  &…

    2020年10月31日
  • s7-300中的PID调节问题

    我在用FB41做水位调节时出现如下图出现的情况,我应该如何调节P  I值?我想把水位控制在50,但在70左右稳定下来了 图片说明:    最…

    2020年10月31日
  • 300系列

    CPU315-2DP 6ES7315-2AH14-0AB0CP343-1CX10可以连接几台电脑?为什么我怎么设置PG、OP、S7连接数量都只能连接5台电脑WINC 最佳…

    自动化系统综合 2017年6月4日
  • 软PLC VS 工控机

    一直以为软PLC与工控机不是一个东西,但在某处看到说二者是一个东西。究竟二者是否是同一个东西呢?在Siemens的分类里,又是否一样呢? 最佳答案 二者不是一个东西,工控机就是台电…

    自动化系统综合 2017年5月31日
  • 哪里可以下载PCS7软件呢

    哪里可以下载PCS7软件呢,提供也可以。 问题补充:电子邮箱可以传吗,或者用QQ可以传吗 最佳答案 PCS7 V7.0下载地址:http://plc.net.ru/vie…

    自动化系统综合 2021年7月5日
  • PLC300更改程序下载时报错

    从PLC上载程序,更改FB块程序段中的一个时间值,并下载保存,此时无报警。退出S7并用之前保存的程序再更改下载时却报错。改动的程序段调用了另外的FB块。新人求解答 问题补充:就是上…

    2017年6月12日
  • 博图怎样上传和下载程序,

    现场都用300PLC,原来是用STEP7软件下载,现在现场有一台1200PLC,只能用博图软件,但没用过,不知道怎样上传下载程序,有用过的给指点指点,谢谢! 最佳答案 用STEP7…

    2017年7月25日
  • 西门子软件与visual studio

    现在用visual studio 2008做上位机开发,西门子系列产品做控制,请问西门子系列软件跟visualstudio开发平台的通讯方式? 最佳答案 不论任…

    自动化系统综合 2020年10月31日
  • 中间继电器长时间通电

    请问高手中继继电器能不能长时间通电,因为最近有个工程需要继电器(MY2NJ)长时间通电,我打电话询问过OMRON客服,他们说不可以,可是网上的一些大侠说可以长时间通电,现在不知道怎…

    自动化系统综合 2020年10月31日