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

相关推荐

  • 触摸屏字体可以导入吗 求资料

    触摸屏字体可以导入吗 包括博途烦人新屏幕和以及原来的winccflexible老屏幕 怎么导入呢 方法呢 最佳答案 WinCC flexib…

    自动化系统综合 2017年6月27日
  • TD200上加控制

    我有一200plc连接4台TD200,现要在每台TD200上加速度给定控制我要如何在数据块中改,或者从新生成向导且有不影响原程序的各块赋值,谢谢!! 最佳答案 TD文本只能在原20…

    自动化系统综合 2017年10月31日
  • 菲尼克斯的交换机组态

    菲尼克斯的交换机能在西门子的博途软件中组态吗 问题补充:拓扑视图里可以用西门子的交换机代替 最佳答案 1:你要看你这个是一般的交换机,还是支持profinet 的交换机2…

    自动化系统综合 2017年7月30日
  • 炼钢转炉变频器

    各位前辈请问大家个问题 在转炉运行调试过程中炉子在从10°转到0°是变频器报接地故障 各位前辈能不能给小弟解释一下 问题补充:炉子在从10°转到0°时如果不减速…

    自动化系统综合 2020年11月1日
  • 再问触摸屏与S7PLC连接线

    前天我刚问了关于西门子MP277触摸屏与S7 PLC连接线制作问题,既然大家认为用9针接口  3-3 、8-8  接上能…

    自动化系统综合 2017年11月20日
  • IM 153-4如何组态?

    在项目中用IM 153-4做从站,通过以太网链接153-4和主站的CPU,通过以太网通信,153-4是用网线和CP 343链接起来就可以了吗,硬件当中怎么组态?…

    自动化系统综合 2017年11月6日
  • step7定货号

    大家好,西门子step7 v5.5中文版定货号是多少?v5.5中文版带离线仿真软件PLCSIM吗?如果不带,v5.5中支持离线仿真软件定货号是多少?还有Rs485中继器定…

    自动化系统综合 2017年11月12日
  • pc怎样和6SE70变频器通讯,怎么连接485和232

    我想把PC和变频器连接,我现在有485的接口和232的借口,怎么接线,我想用网线自己做,这样可以不可以,具体应该怎样接线,谢谢了 最佳答案 既然都有的话……嗯,就用PC上的…

    自动化系统综合 2020年11月1日
  • hsp文件和GSD文件的区别

    HSP文件是硬件支持软件包用来更新 STEP 7 硬件目录,GSD文件是设备描述文件,难道GSD文件只使用在PROFIBUS的硬件组态上吗?它们的最大…

    自动化系统综合 2020年11月1日
  • CP342-5DP通讯时调用FC1 FC2

    在做S7200与S7300通讯时,用EM277挂在CP342-5下作从站,共有7个EM277从站,4Word/4Word。要调用FC1 、FC2做接受发送数据,资料上说:…

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